Меню сайта |
|
 |
Реклама |
 |
 |
|
 | |  |
|
Параметры шрифта
|
Блочные контейнеры
Как ясно из названия, блочный контейнер может хранить только блочные элементы: абзацы, заголовки, большие цитаты, теги адреса, текст фиксированного форматирования, таблицы, аудио- и видеоролики. Блочный контейнер может содержать как один блочный элемент, так и несколько. Блочный контейнер формируется с помощью парного тега <div>, внутри которого помещают HTML-код, формирующий содержимое контейнера.В листинге 8.4 мы поместили в блочный контейнер заголовок и два абзаца.
Листинг 8.4
<div>
<h3>Это заголовок</h3>
<p>Это первый абзац.<p>
<p>Это второй абзац.<p>
</div>
Листинг 8.5 иллюстрирует блочный контейнер, содержащий таблицу.
Листинг 8.5
<div>
<table>
<caption>Это таблица</caption>
<tr>
<th>Это первый столбец</th>
<th>Это второй столбец</th>
</tr>
</table>
</div>
А блочный контейнер, приведенный в листинге 8.6, может похвастаться самым "богатым" содержимым.
Листинг 8.6
<div style ="text-align: center">
<video src ="film.ogg" controls>
</video>
<p>Щелкните кнопку воспроизведения, чтобы просмотреть фильм.</p>
</div>
Во-первых, мы поместили в него видеоролик и абзац с текстом, предлагающим начать просмотр этого видеоролика. Во-вторых, мы привязали к блочному контейнеру встроенный стиль, задающий выравнивание текста по центру. Отметим при этом, что по центру также будет выровнен и сам видеоролик.Блочные контейнеры применяют значительно чаще, чем встроенные. Именно на блочных контейнерах основан контейнерный Web-дизайн, о котором сейчас пойдет разговор.
Основы контейнерного Web-дизайна
Контейнерный Web-дизайн известен уже довольно давно. В настоящее время он постепенно вытесняет более старые разновидности Web-дизайна. И тому есть много причин. Раньше в Интернете господствовали три разновидности Web-дизайна: текстовый, фреймовый и табличный. Каждый способ имел свои достоинства и недостатки. Но все в той или иной мере проигрывают четвертой разновидности Web-дизайна — контейнерной.
Первым появился, пожалуй, текстовый Web-дизайн. Выполненные таким образом Web-страницы представляли собой обычные текстовые документы: набор абзацев, заголовков, больших цитат, текста фиксированного форматирования и таблиц, следующих друг за другом. Классический пример подобного Web-дизайна — созданные нами к данному моменту Web-страницы. Откройте в Web-обозревателе, скажем, Web-страницу index.htm — и вы увидите текстовый Web-дизайн во всей своей, скажем так, красе.
Достоинство текстового Web-дизайна всего одно — исключительная простота HTML-кода. В самом деле, код таких Web-страниц содержит один только текст и, возможно, изображения и таблицы. Никаких специфических элементов, формирующих Web-дизайн как таковой, там нет. Недостатков же у текстового Web-дизайна много. Во-первых, созданные на его основе Web-страницы выглядят слишком непритязательно. Во-вторых, практически отсутствуют средства произвольного размещения элементов на Web-странице — они могут только следовать друг за другом сверху вниз. В-третьих… а вот об этом следует поговорить подробнее.
Информацию, представленную на Web-странице, можно грубо разделить на четыре фрагмента: заголовок Web-сайта, полосу навигации, основное содержимое (информация, уникальная для конкретной Web-страницы, та, ради которой именно эта Web-страница и создавалась) и сведения об авторских правах. Как правило, эти фрагменты визуально отделены друг от друга, так что найти их не составляет труда. На всех Web-страницах, составляющих Web-сайт, заголовок Web-сайта, полоса навигации и сведения об авторских правах одинаковы. И только основное содержимое у каждой Web-страницы уникально (а оно и должно быть уникально по определению).
Но ведь и заголовок Web-сайта, и полоса навигации, и сведения об авторских правах определяются в HTML-коде каждой Web-страницы. И код этот может быть очень объемным. И что выходит? Значительная часть HTML-кода каждой Web- страницы определяет элементы, которые не меняются от одной Web-страницы к другой!
Чем объемнее HTML-код Web-страницы, тем больше файл, в котором она хранится. Чем значительнее размер файла, тем дольше он загружается. Чем дольше файл загружается, тем больше придется посетителю ждать, пока запрошенная Web- страница появится на экране. Нет ли способа загрузить не всю Web-страницу целиком, а только ее часть — собственно основное содержимое? К сожалению, текстовый Web-дизайн такого способа не предлагает…
Но выход, тем не менее, был найден в виде "нестандартного" расширения HTML — фреймов. Фрейм — это особый элемент Web-страницы, который выводит в указанном ее месте содержимое произвольной Web-страницы, интернет-адрес которой задается в его параметрах. Кроме того, были расширены возможности гиперссылок — теперь они могли выводить целевую Web-страницу в указанном фрейме.
Главная Web-страница Web-сайта в таком варианте представляла собой набор фреймов. Отдельные фрагменты ее содержимого выносились в отдельные Web- страницы, интернет-адреса которых указывались в параметрах соответствующих им фреймов. Остальные Web-страницы включали в себя только основное содержимое. А в параметрах гиперссылок полосы навигации указывалось, в каком фрейме должны загружаться целевые Web-страницы.
Подобный Web-дизайн получил название фреймового. Он имел неоспоримое достоинство — резкое увеличение скорости загрузки Web-страниц. И поэтому широко применялся много лет, а кое-где остался и до сих пор.
Однако у фреймов есть существенные недостатки. Во-первых, фреймы так и не были стандартизированы комитетом W3C, поэтому каждый Web-обозреватель обрабатывает их по-своему, не в целом, конечно, а в нюансах, которые, тем не менее, могут быть существенными. Во-вторых, фреймы — очень негибкий элемент Web- страницы; их структуру невозможно поменять. Конкурентом фреймового Web-дизайна стал появившийся несколько позже табличный. Для формирования Web-страницы использовалась большая таблица HTML, в разные ячейки которой помещали заголовок Web-сайта, полосу навигации, различные фрагменты основного содержимого и сведения об авторских правах. Постепенно табличный Web-дизайн вытеснил фреймовый; до сих пор это самый популярный способ создания Web-сайтов.
Достоинства табличного Web-дизайна
Таблицы — стандартная часть языка HTML, а значит, можно добиться того, чтобы основанные на них Web-страницы отображались одинаково во всех Web- обозревателях.
Таблицы HTML можно делать сколь угодно сложными, объединяя их ячейки и вкладывая одни таблицы в другие. Это позволяет делать очень сложные Web- страницы, вмещающие разнородные фрагменты содержимого, имеющие не- сколько колонок текста и больше похожие на газеты.
Таблицы и их отдельные ячейки можно легко форматировать с помощью стилей CSS, задавая для них рамки, отступы, фон, выравнивание и другие параметры. Однако табличный Web-дизайн обладает и множеством недостатков:
Все та же "монолитность" Web-страниц, что и в случае текстового Web-дизайна. Каждая Web-страница Web-сайта содержит и его заголовок, и полосу навигации, и основное содержимое, и сведения об авторских правах, что не лучшим образом сказывается на ее размерах и на скорости ее загрузки.
Для формирования сложных таблиц применяется чрезвычайно громоздкий и запутанный HTML-код.
Старые версии Web-обозревателей не очень удачно реализовывали обработку таблиц: они сначала загружали таблицу целиком, а уже потом выводили ее на экран. Учитывая, что таблицы, с помощью которых формировались Web-страницы, очень большие, загрузка таких Web-страниц отнимала много времени.
на заметку:
Современные Web-обозреватели могут выводить таблицу на экран в процессе ее загрузки. Это "умеет" даже Internet Explorer, славящийся своим, мягко говоря, консерватизмом. Так что последняя проблема отпала. Как видим, все три старых принципа Web-дизайна, наряду с достоинствами, имеют и серьезные недостатки. Поэтому в настоящее время они медленно, но верно отступают под натиском амбициозного новичка, имя которому…
Сущность контейнерного Web-дизайна
Контейнерный Web-дизайн для размещения отдельных фрагментов содержимого Web-страниц использует блочные контейнеры, с которыми мы познакомились в начале этой главы. Отдельные контейнеры создаются для заголовка Web-сайта, полосы навигации, основного содержимого и сведений об авторских правах. Если основное содержимое имеет сложную структуру и состоит из множества независимых частей, для каждой из них создают отдельный контейнер.
Для задания различных параметров блочных контейнеров предусмотрены специальные атрибуты стиля CSS. К таким параметрам относятся размеры (ширина и высота), местоположение контейнеров и их поведение при переполнении. Также мы можем задать для контейнеров цвет фона, создать отступы и рамки, чтобы их выделить (о параметрах отступов и рамок речь пойдет дальше). И что, контейнерный Web-дизайн так уж хорош? Давайте рассмотрим недостатки трех старых принципов Web-дизайна и выясним, сможет ли он их решить.
— Непритязательный вид и линейное представление Web-страниц — у текстового Web-дизайна. Мы можем расположить контейнеры на Web-странице практически как угодно и поместить в них произвольное содержимое: текст, таблицы, изображения, аудио- и видеоролики и даже другие контейнеры. А CSS позволит нам задать для них практически любое представление.
— "Монолитность" Web-страниц — у текстового и табличного Web-дизайна. Современные Web-обозреватели позволяют с помощью специально созданного поведения загрузить в контейнер Web-страницу, сохраненную в отдельном файле, т. е. организовать подгружаемое содержимое.
— "Нестандартность" фреймов — у фреймового Web-дизайна. Контейнеры и соответствующие теги официально стандартизированы комитетом W3C и обрабатываются всеми Web-обозревателями одинаково.
— Громоздкость HTML-кода — у табличного Web-дизайна. HTML-код, формирующий контейнеры, исключительно компактен. Как мы уже знаем, блочный контейнер формируется всего одним парным тегом <div>.
— Медленная загрузка Web-страниц — у табличного Web-дизайна. Все Web-обозреватели отображают содержимое контейнеров прямо в процессе загрузки, так что Web-страницы визуально загружаются очень быстро.
И что, контейнерный Web-дизайн так хорош? И он совсем не имеет недостатков? Увы, ничего совершенного в мире нет…
Контейнерный Web-дизайн проигрывает табличному в возможности реализации сложного дизайна Web-страниц. Таблица позволяет создать на Web-странице множество колонок разной ширины, содержащих разное содержимое. Чтобы сделать это с помощью контейнеров, скорее всего, придется применять вложенные друг в друга контейнеры, сложные стили и, возможно, поведение, которое уже после окончания загрузки Web-страницы располагает контейнеры в нужных местах. Это, пожалуй, единственный недостаток контейнерного Web-дизайна.
Что ж, с контейнерным Web-дизайном все в основном ясно. Давайте попрактикуемся. Переделаем наши Web-страницы с применением контейнерного Web-дизайна — "легкого", простого, современного.
Параметры размещения. Плавающие контейнеры
Местоположение блочных контейнеров (и любых других блочных элементов) на Web-странице определяют два весьма примечательных атрибута стиля. Изначально блочные элементы Web-страницы располагаются на ней по вертикали, строго друг за другом, в том порядке, в котором они определены в HTML-коде. Именно так располагаются блочные контейнеры, абзацы и заголовки на всех созданных нами Web-страницах.
Однако мы можем установить для блочного элемента выравнивание по левому или краю родительского элемента (блочного контейнера, в который она вложена, или самой Web-страницы). При этом блочный элемент будет прижиматься к соответствующему краю родителя, а остальное содержимое будет обтекать его с противоположной стороны.
Атрибут стиля float как раз и задает, по какому краю родительского элемента будет выравниваться данный элемент Web-страницы:
float: left|right|none|inherit
Возможны три значения:
left — элемент Web-страницы выравнивается по левому краю родительского элемента, а остальное содержимое обтекает его справа;
right — элемент Web-страницы выравнивается по правому краю родительского элемента, а остальное содержимое обтекает его слева;
none — обычное поведение элемента Web-страницы, когда он следует за своим предшественником и располагается ниже его.
Пример:
table.left-aligned { float: left }
После применения данного стиля к таблице она будет выровнена по левому краю родительского элемента, а остальное содержимое будет обтекать ее справа. А что если мы зададим одинаковое значение атрибута стиля float для нескольких следующих друг за другом блочных элементов? Они выстроятся по горизонтали друг за другом в том порядке, в котором они определены в HTML-коде, и будут выровнены по указанному краю родительского элемента. Настоящая находка!
Данный атрибут стиля обычно применяют для блочных контейнеров, формирующих дизайн Web-страниц. Такие контейнеры называют плавающими.
Возьмем атрибут стиля float на заметку. И пойдем дальше.
При создании контейнерного Web-дизайна, основанного на плавающих контейнерах, часто приходится помещать какие-либо контейнеры ниже тех, что были выровнены по левому или правому краю родительского элемента. Если просто убрать у них атрибут стиля float или задать для него значение none, результат будет непредсказуемым. Поэтому CSS предоставляет возможность однозначно указать, что данный блочный элемент в любом случае должен располагаться ниже плавающих контейнеров, предшествующих ему.
Для этого служит атрибут стиля clear:
clear: left|right|both|none|inherit
Как видим, доступных значений здесь четыре:
left — элемент Web-страницы должен располагаться ниже всех элементов, для которых у атрибута стиля float задано значение left;
right — элемент Web-страницы должен располагаться ниже всех элементов, для которых у атрибута стиля float задано значение right;
both — элемент Web-страницы должен располагаться ниже всех элементов, для которых у атрибута стиля float задано значение left или right;
none — обычное поведение. Если контейнеру, для которого указан данный атрибут стиля, предшествуют плавающие контейнеры, задавать это значение не рекомендуется.
Пример:
#ccopyright { clear: both }
Здесь мы задали для именованного стиля ccopyright (он применяется к контейнеру, содержащему сведения об авторских правах) расположение ниже всех контейнеров, выровненных по левому или правому краю родительского элемента.
Представление для нашего Web-сайта
Полученных нами знаний уже достаточно для того, чтобы создать контейнерный дизайн для нашего Web-сайта. Давайте займемся этим. Как обычно, выпишем список параметров для всех созданных ранее контейнеров. Для контейнера с заголовком Web-сайта (cheader):
ширина — 100 % (все окно Web-обозревателя).
Для контейнера с полосой навигации (cnavbar):
ширина — 30 % (примерно треть ширины окна Web-обозревателя);
минимальная ширина — 240 пикселов (это значение получено автором в результате экспериментов; оно примерно равно ширине полосы навигации);
выравнивание — по левому краю (т. е. это будет плавающий контейнер).
Для контейнера с основным содержимым (cmain):
ширина — 70 % (примерно две трети ширины окна Web-обозревателя);
выравнивание — по левому краю.
Для контейнера со сведениями об авторских правах (ccopyright):
ширина — 100 % (все окно Web-обозревателя);
расположение — ниже всех плавающих контейнеров, выровненных по левому и правому краям.
Как видим, ни у одного контейнера явно не задана высота. Web-обозреватель сам установит ее такой, чтобы контейнер при указанной ширине полностью вместил свое содержимое. На основе перечисленных требований напишем CSS-код, определяющий нужные стили (листинг 8.7).
Листинг 8.7
#cheader { width: 100 % }
#cnavbar { width: 30 %; min-width: 240px; float: left }
#cmain { width: 70 %; float: left }
#ccopyright { width: 100 %; clear: both }
Поместим этот код в самый конец таблицы стилей main.css, после чего сохраним ее. Откроем Web-страницу index.htm в Web-обозревателе и посмотрим, что получилось. Мы сделали это! Много времени ушло на изучение HTML и CSS, но результат того стоит. Вот она — наша первая Web-страница, выполненная по канонам современного Web-дизайна. Еще немного полюбуемся на преобразившуюся Web-страницу.

|
|
|
| |
 | |  |
|
Заработай сейчас! |
 |
 |
Навигация по сайту |
|
 |
Поиск по сайту |
|
 |
|