Число запросов является наиболее узким местом при загрузке страницы. По последним исследованиям порядка 40% времени загрузки уходит только на установление новых соединений с сервером. В этом свете любые методы, позволяющие уменьшить число запросов, выглядят весьма перспективно. Однако каждый такой метод, начиная с простого объединения стилей или скриптов и заканчивая data:URI, достаточно сложен в технологическом плане, поэтому в ряде случаев может просто не окупать затраченного времени.

Зачастую cookie выставляются на весь домен или даже на все поддомены, что означает их отправку браузером даже при запросе каждой картинки с вашего домена. В результате 400-байтный ответ с картинкой превратится в 1000 байтов или даже больше, в зависимости от добавленных заголовков cookie. Если на странице у вас много некэшируемых объектов и большие cookie на домен, то стоит рассмотреть возможность вынесения статичных ресурсов на другой домен (например, так поступил Яндекс, расположив статические файлы на домене yandex.net) и убедиться, что cookie там никогда не появятся.

В силу накладных расходов на передачу каждого объекта, один большой файл загрузится быстрее, чем два более мелких, каждый в два раза меньше первого. Стоит потратить время на то, чтобы привести все вызываемые JavaScript-файлы к одному или двум, равно как и CSS-файлы. Если на вашем сайте их используется больше, попробуйте сделать специальные скрипты для публикации файлов на «боевом» сервере или уменьшите их количество. Если на странице в большом объеме располагаются десятки небольших GIF- файлов (для оформления границ или фона элементов), стоит рассмотреть ее преобразование в более простой CSS-дизайн (который не потребует такого большого числа картинок) и(ли) объединение в несколько больших ресурсных файлов.

Для объединения HTML-файлов существует достаточно простое правило по сведению числа фреймов на странице к минимуму (в идеале, их вообще не должно быть, ибо каждый фрейм влечет создание нового документа в дереве страницы, что достаточно ресурсоемко). Поэтому давайте рассмотрим, что можно сделать с файлами стилей.

CSS-файлы в начале страницы

При заботе о производительности веб-страниц мы всегда хотим, чтобы страницы могли быть отрисованы постепенно, чтобы браузер мог отобразить любой контент сразу же, как он у него появится. Это особенно важно для страниц, на которых много текстового содержания, и для пользователей с медленным подключением. Важность визуального оповещения пользователя о текущем состоянии загрузки страницы каким-нибудь индикатором прогресса детально изучена и задокументирована. Однако в любом случае, всегда лучше, если в роли индикатора прогресса выступает сама страница. Когда браузер загружает HTML-файл постепенно — сначала заголовок, потом навигацию, логотип наверху и т.д. — все это служит отличным индикатором загрузки для пользователя. Также это улучшает общее впечатление от сайта.

Размещение CSS в конце страницы не позволяет начать постепенное отображение многим браузерам, в числе которых находится и Internet Explorer. Браузер не начинает визуализировать страницу, чтобы не пришлось перерисовывать элементы, у которых во время загрузки изменится стиль. Firefox начинает сразу отрисовывать страницу, в процессе загрузки, возможно, перерисовывая некоторые элементы по мере изменения их свойств, но это является причиной появления нестилизованного контента и рекурсивного его обновления.

Спецификация HTML 4 устанавливает, что таблицы стилей должны быть включены в head документа: «В отличие от <a>, <link> может появляться только в секции <head>, зато там он может встречаться сколько угодно раз». Ни одна из альтернатив — белый экран или показ нестилизованного контента — не стоит этого риска (хотя разработчики Firefox и Opera думают несколько иначе). Оптимальным решением является следование спецификации и включение CSS в head-секцию документа.

При проектировании небольших сайтов либо несложных дизайнов это правило является основным для максимизации производительности. Однако далее в этой главе мы рассмотрим и альтернативную его трактовку.

Объединение CSS-файлов

Зачастую на странице подключается несколько файлов стилей: это может быть связано как с модульной структурой построения CSS, так и с поддержкой различных устройств просмотра веб-страниц. Давайте рассмотрим последний случай: у нас есть два вызова CSS-файлов на странице, например:

где первый используется для отображения страницы на экране монитора, а второй — для предварительного просмотра и печати.

Проблема в том, что браузер не отображает любую часть страницы (это не касается Opera: у нее время отображения страницы без полной загрузке файлов стилей задано по умолчанию в настройках, посмотреть их можно следующим образом: ‘preferences’ (ctrl-f12) -> ‘advanced’ -> ‘browsing’ -> ‘loading’ или ‘инструменты’ -> ‘настройки’ -> ‘дополнительно’ -> ‘перемещение’ -> ‘загрузка’), пока не загрузит все файлы стилей — в том числе и те из них, которые не предназначены для устройства, с помощью которого производится отображение страницы. Другими словами, браузер не покажет страницу, пока не загрузит и файл стилей для принтера, хотя он совсем и не требуется для визуализации страницы. Это неправильно с точки зрения производительности, но это так (Safari, на самом деле, ведет себя как раз «правильно»: ненужные файлы не задерживают загрузку, но это связано с особенностью модели визуализации, о нем более подробно рассказывается ниже).

Практическое решение

Решение выглядит весьма тривиально: мы можем в общем CSS-файле объявить правила для любого устройства через @media. Например, все стили для принтера могут быть записаны в следующем виде

@media print {
стилевые правила для принтера
}

в конце основного файла стилей. Таким образом, будет загружаться всегда только один файл. Данное решение может быть легко автоматизировано, и некоторые CMS уже применяют этот подход (в частности, Drupal).

Если у нас CSS-файлы разбиты на модули, то нужно пересмотреть их структуру таким образом, чтобы на каждую страницу приходилось не более двух файлов (небольшие файлы — порядка 5 КБ — можно объединить в один для целого раздела). Для главной страницы я рекомендую всегда ограничиться только одним файлом либо вообще включать его в HTML-код (как сделано, например, для главной страницы Яндекса).

Два слова об условных комментариях

Очень часто верстка страниц производится таким образом, что у нас появляется основной файл стилей и несколько дополнительных, рассчитанных на конкретные браузеры (речь идет, в основном, о Internet Explorer, однако, иногда требуются какие-то специальные правила для Firefox, Opera или Safari). В этом случае файлы подключают через так называемые «условные комментарии», которые выглядят как обычные HTML- комментарии для всех браузеров, кроме Interner Explorer (у остальных браузеров есть свои способы загрузить какой-то файл стилей только для них).

Финальная конструкция выглядит примерно следующим образом:

Для всех браузеров используется main.css, а для IE6 и ниже — ie6.css. Однако Interner Explorer этих версий не запрашивает файлы стилей параллельно, поэтому при загрузке страницы произойдет ненужная задержка, связанная с доставкой еще одного файла.

Чтобы избежать ее (особенно в случае небольшого количества стилей конкретно для IE), можно использовать CSS-хаки уже в исходном CSS-файлы. Например, если нам нужно определить правило только для IE7, мы можем написать так:

*+html body {
margin: 0 auto;
}

для IE6:

* html body {
margin: 0 auto;
}

и для IE5.5- (эта группа браузеров не распознает экранирование символов, поэтому сможет применить только первое правило из двух, второе правило отработает для IE6, переопределив первое):

* html body {
margin: 0;
marg\in: 0 auto;
}

CSS-хаки позволяют совершенно свободно использовать всего один файл стилей для гарантии кроссбраузерности верстки. При этом производительность страницы будет максимальной (исключая, конечно, случай включения всех CSS-правил в исходный HTML-документ — это будет работать еще быстрее, однако, чревато некоторыми сложностями, подробнее о них в конце этой главы).

Материалы близкой тематики:

  • CSS Sprites и data:URI
  • Безопасные элементы CSS
  • Основы CSS
  • Урок по разделению структуры и внешнего вида
  • Влияние семантики и DOM-дерева

Способ 1. Строгое структурирование

Первым я опишу внешние или, как их еще принято называть, связные стили. Этот способ используется разработчиками наиболее часто. Он предполагает под собой четкое разделение стилевых правил и кода на языке html.

Под словами «четкое разделение» я подразумеваю разделение названных частей на два отдельных файла. Вследствие такой реализации девелоперам легче отлавливать баги и комфортнее работать. К тому же отдельный документ с прописанными стилями можно подключать к разным веб-сервисам.

В этом варианте подключения css-правил происходит через специальный тег <link>. Этот элемент может быть объявлен только в контейнере <head>.

В нем нужно указать минимум 2 параметра: rel, который описывает связь между рабочим файлом и документом, путь к которому указан в href, и href – путь к документу.

Как правило, стилевые параметры сохраняют в документе с расширением .css.

Для наглядности я привел пример такого подключения стилей. Хочу отметить важный момент: для подключения css-файла в атрибуте rel всегда пишется «stylesheet».

Для начала создадим структуру веб-ресурса.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 <!DOCTYPE HTML> <html> <head> <meta charset=»utf-8″> <title>Внешний</title> <link rel=»stylesheet» href=»style.css»> </head> <body> <article> <h2>Яркий заголовок</h2> <p>Сенсационное содержание</p> </article> </body> </html>

Теперь оживим созданную страницу, подключив к ней документ со списком стилей. Вот строка, которая за это отвечает:

<link rel=»stylesheet» href=»style.css»>

Создаем в блокноте файл с нужным расширением и называем его style.css. Заметьте, что имя должно быть идентичным с наименованием, указанным в теге <link>.

Скопируйте в созданный документ ниже прикрепленный программный код и сохраните первый рядом с файлом веб-странички.

Способ 4. Еще один вариант подключения стилевого документа

В спецификации каскадных стилевых таблиц предусмотрен импорт файлов с css-свойствами. Это не популярный способ подключения правил оформления в силу своих недостатков:

  • Импортируемые документы не всегда загружаются в том порядке, в котором указал разработчик;
  • Нет параллельной загрузки файлов;
  • Иногда теряется быстродействие работы браузера.

За функционирование такого варианта подключения css отвечает команда @import. Для импорта используется синтаксис:

@import url («путь»); или @import «путь»;

В некоторых случаях после ссылки на документ указывается и вид носителей.

Перейдем к примеру.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 <!DOCTYPE HTML> <html> <head> <meta charset=»utf-8″> <title>Внешний</title> @import url(«style.css»); </head> <body> <article> <h2>Яркий заголовок</h2> <p>Сенсационное содержание</p> </article> </body> </html>

Набор стилевых характеристик я не прописываю повторно, так как использую уже готовый документ с выше презентованным кодом.

Таблицы связанных стилей

Самый мощный и удобный способ определения стилей и правил для сайта. Стили хранятся в отдельном файле, который может быть использован для любых веб-страниц. Для подключения таблицы связанных стилей используется тег <link> в заголовке страницы (пример 1).

Пример 1. Подключение таблицы связанных стилей

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01//EN» «http://www.w3.org/TR/html4/strict.dtd»> <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Стили</title> <link rel=»stylesheet» type=»text/css» href=»mysite.css»> <link rel=»stylesheet» type=»text/css» href=»http://www.mysite.ru/main.css»> </head> <body> <h1>Hello, world!</h1> </body> </html>

Путь к файлу со стилями может быть как относительным, так и абсолютным, как показано в данном примере.

Достоинства данного способа

  1. Используется один файл со стилем для любого количества веб-страниц, также возможно его применять на других сайтах.
  2. Можно изменять таблицу стилей без модификации веб-страниц.
  3. При изменении стиля в одном единственном файле, стиль автоматически применяется ко всем страницам, где есть на него ссылка. Несомненно, удобно. Указываем размер шрифта в одном только месте, и он изменяется на всех сто или больше веб-страницах нашего сайта.
  4. Файл со стилем при первой загрузке помещается в кэш на локальном компьютере, отдельно от веб-страниц, поэтому загрузка сайта происходит быстрее.

Внутренние стили

Внутренний стиль являются по существу расширением для одиночного тега используемого на веб-странице. Для определения стиля используется атрибут style, а его значения указываются с помощью языка таблицы стилей (пример 3)..

Пример 3. Использование внутренних стилей

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01//EN» «http://www.w3.org/TR/html4/strict.dtd»> <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Стили</title> </head> <body> <H1 style=»font-size: 120%; font-family: Verdana, Arial, Helvetica, sans-serif; color: #336″> Hello, world!</H1> </body> </html>

Рекомендуется использовать внутренний стиль для одиночных тегов или отказаться от его использования вообще, поскольку изменение ряда элементов становится проблематичным. Внутренние стили не соответствуют идеологии структурного документа, когда содержимое и его оформление разделены.

Все описанные методы использования CSS могут применяться как самостоятельно, так и в сочетании друг с другом. В этом случае необходимо помнить об их иерархии. Первым всегда применяется внутренний стиль, затем таблица глобальных стилей и в последнюю очередь таблица связанных стилей. В примере 4 используются сразу два метода добавления таблиц стилей в документ.

Пример 4. Сочетание разных методов подключения стилей

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01//EN» «http://www.w3.org/TR/html4/strict.dtd»> <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Стили</title> <style type=»text/css»> H1 { font-size: 120%; font-family: Arial, Helvetica, sans-serif; color: green; } </style> </head> <body> <H1 style=»font-size: 36px; font-family: Times, serif; color: red;»>Hello, world!</H1> <H1>Hello, world!</H1> </body> </html>

В приведенном примере первый заголовок задается красным цветом размером 36 пикселов, а следующий — зеленым цветом и другим шрифтом.

Метод связывания (linking) CSS

Чтобы каждый раз в документ не писать стилевое оформление (не загружать документ), надо в одном месте написать правила css и применять их к разным документам (к неограниченному из количеству).

Для этого все правила css выносим в отдельный текстовый файл. Обычно этому файлу дают расширение .css. И тогда сразу видно, что в нем прописаны стилевые правила. Ни с чем не перепутаешь.

Как же тогда связать этот отдельный css-файл с нашим html-документом? Для этого используем следующий код в разделе head:

<link rel=»stylesheet» type=»text/css» href=»style.css»>

Т.е. указываем файл со стилями через гиперссылку на него. Браузер подгружает стилевой файл и применяет правила из него ко всему документу. По сути это работает так же, как и элемент “style”, но только находится в отдельном файле. И мы можем в любом документе поставить ссылку на css-файл. Это очень удобно, т.к. я правлю стили в одном единственном файле; один раз загрузив таблицу стилей, при переходе на следующие страницы браузер больше за этим файлом css не полезет, он достанет его из кэша (типа временного хранилища загруженных файлов). Тем самым я экономлю трафик и ускоряю отображение страницы.

Внимание! Элемент “link” не сработает с одним атрибутом href. Т.к. эта гиперсылка используется для разных целей. Это служебная гиперссылка, которая может указывать на различные типы файлов, которые могут использоваться для разных целей для ваших страниц. Чтобы дать понять браузеру, что это таблица стилей, используется атрибут rel ( rel=”stylesheet”). В нем указывается тип отношения загружаемого документа и нашего основного документа. Теперь браузер понимает, что загружаемый документ — это таблица стилей.

CSS. Как создать стили для веб-страницы.

Сегодня хочу рассказать о том, что такое стили, как создать файл стилей и как его использовать.

CSS – каскадные таблицы стилей. Специальный файл (или несколько файлов), который отвечает за оформление страницы. Имеет расширение *.css . В этот файл заносятся параметры, которые будут применяться к тем или иным элементам на странице.

Давайте по шагам создадим файл стилей и добавим в него несколько параметров, для веб-страницы.

1. Создадим страницу HTML.

Я поместил в нее такой код:

Вот как выглядит страница:

2. Вторым шагом создадим файл style.css

(делается это через блокнот: создаете файл, жмете «сохранить как», в параметре тип файла ставите все файлы, в имени ставите style.css). Пока что ничего в файл писать не будем. Просто сохраним.
3. Теперь, чтобы файл стилей работал, нам нужно присоединить его к странице HTML.

Делается это так:

В теге HEAD нужно прописать одну строчку:

У меня файл стилей лежит в одной папке с файлом HTML страницы, поэтому я указываю только имя. Если у вас стили лежат, например, в папке css, то вам нужно было бы прописать href=”css/style.css” .

В нашей страничке пока еще ничего не изменилось:

4. Теперь можно начинать писать стили.

Откроем файл style.css с помощью блокнота и пропишем в нем правило для заголовка:

.h1 {font-size:18px; font-family:Arial;}

Обновляем страницу и видим, что ничего не изменилось.

Чтобы изменения вступили в силу, нужно в файле HTML придать нужному тегу атрибут class=”имя стиля”.

Пропишем тегу h1 атрибут class=”h1”. Теперь результат должен измениться:

На самом деле стиль, который мы задаем через точку, как .h1, является универсальным. Мы этот стиль можем применить не только к h1, но и к параграфу, и к списку, и к элементу списка и так далее. Можете попробовать.

5. Теперь назначим стиль для простого параграфа. Сделаем это другим способом.

Пропишем в таблицу стилей следующее:

P {font-family:Verdana; color:#cc0000;}

Обновим страницу. Как вы заметили, мы здесь не добавляли атрибут class, а параграфы изменились, причем оба. Дело в том, что мы ввели в стили «p» без точки. Это значит, что для всей страницы, к которой привязана данная таблица стилей, мы переназначили параметры тега абзаца. Вне зависимости от того, есть у него дополнительные параметры или нет.

6. Сейчас рассмотрим еще один способ назначения стилей.

Давайте добавим в таблицу стилей следующую строку:

p#abc {font-family:Arial; font-size:14px; color:#c0c0c0;}

Как видите, второй параграф изменился. Если помните, мы назначили этому параграфу идентификатор id=”abc”. Наша строчка в таблице стилей как раз и означает, что данное правило будет действовать только для тех параграфов, которые имеют id=”abc”.

7. Давайте приступим к списку.

Пропишем в таблицу стилей такие правила:

ul {border:1px solid #000000; background-color:#CCCCCC;}

li {font-size:16px; color:#FF0000; text-decoration:underline;}

Как видите, вокруг нашего списка появилась рамка, фон стал серым, а пункты списка – красными и подчеркнутыми.

Вне зависимости от того, оформляете ли вы текст через CSS или форменные элементы, делается это одинаково. Главное – понять структуру правил CSS, а остальное – мелочи.

Вот и итоговый результат нашей работы.

Задачи сделать это шедевром не было, поэтому прошу не ругать. Главное, чтобы вы поняли, как работает CSS.
__
При поддержке everalp.ru — выполнение кровельных работ.

Создание CSS стилей.

Эта статья написана в ответ на многочисленные вопросы о создании CSS стилей для сайта.
Встроенный в программу KompoZer редактор каскадных таблиц стилей CSS предоставляет пользователю широкие возможности по созданию и редактированию таблицы CSS.
Программа позволяет создавать и редактировать как внутреннюю, так и внешнюю, расположенную в отдельном файле, таблицу стилей. Этот способ создания таблицы CSS мы рассматривали в главе «Создание таблицы стилей CSS программой KompoZer».

В этой главе мы, используя возможности редактора Композер, создадим новую таблицу стилей и на её основе шаблон трёх — колоночного сайта.
В любом графическом редакторе (я пользуюсь бесплатным графическим редактором GIMP) нарисуем макет будущего шаблона сайта. Это нам поможет в понимании и создании таблицы стилей CSS.

На макете нанесено название блоков. Эти — то названия и будут именами селекторов и правил в таблице стилей CSS.
Далее открываем редактор Композер. Создаём новый документ под именем «Макет на CSS».
Заходим в меню редактора «Код» и прописываем показанный на картинке код.

В окне редактора это будет выглядеть так:

Заходим в меню «Инструменты»/»Редактор CSS» и создаём новую таблицу стилей.

Задаём имя таблицы «maket».

Жмём «Экспортировать таблицу стилей и переключится на неё».
Теперь будем создавать правила стилей.
Заходим в «Редактор CSS». Выбираем «Создать новый» и в выпадающем списке выбираем первый селектор «body». Нажимаем «Создать правило стиля».
Выбираем вновь созданный селектор «#body» и с помощью выпадающих меню прописываем правила стиля для этого селектора. В моём случае это:
ширина блока 1000рх
рамка в 1рх вокруг блока
размер шрифта 14рх
Подобным образом составляем правила для всех селекторов.
В итоге мы получим файл таблицы CSS стилей:
/* Generated by KompoZer */
#body {
border-style: solid;
border-width: 1px;
margin: 0px auto;
font-size: 14px;
width: 1000px;
}
Создаём шапку сайта:
#head {
height: 100px;
background-image: url(qqq3.jpg);
background-repeat: no-repeat;
}
Вставляем логотип:
#logo {
background-image: url(qqq.gif);
background-repeat: no-repeat;
width: 468px;
height: 60px;
display: block;
float: none;
position: relative;
top: 40px;
left: 10px;
background-position: left bottom;
}
Для создания полноценного CSS шаблона сайта пропишем стили отображения меню:
#meny {
border-style: solid;
border-width: 1px;
text-decoration: none;
text-align: center;
height: 20px;
font-size: 18px;
background-color: #ffffcc;
width: 998px;
float: none;
display: block;
position: relative;
top: 0px;
}
#meny ul {
border-width: 1px;
font-size: 16px;
color: #003300;
height: 18px;
width: 998px;
text-align: center;
text-decoration: none;
font-style: normal;
display: inline;
font-weight: normal;
}
#meny li {
border-width: 1px 2px 1px 1px;
display: inline;
border-right-style: double;
}
#meny ul a {
margin: 0px 10px;
text-decoration: none;
color: black;
}
#meny ul a:hover {
text-decoration: underline;
color: #990000;
}
#meny ul a.current {
padding: 0 15px;
background: transparent url(images/menu_2_h.jpg) repeat-x scroll left center;
font-weight: bold;
float: none;
line-height: 15px;
color: #003300;
font-size: 16px;
}
Создаём левую колонку:
#left {
border-right: 2px solid white;
margin: 0px auto;
background-color: #ffcc66;
float: left;
position: relative;
padding-right: 10px;
width: 200px;
padding-left: 8px;
min-height: 400px;
}
Создаём правый блок:
#right {
float: right;
position: relative;
min-height: 400px;
width: 778px;
}
Средняя колонка:
#content {
min-height: 400px;
position: relative;
float: left;
width: 543px;
padding-right: 5px;
padding-left: 10px;
background-color: #f0f0f0;
}
Правая колонка:
#sidebar {
border-left: 2px solid white;
min-height: 400px;
position: relative;
float: right;
background-color: #ffcc66;
margin-right: 0px;
margin-left: 0px;
padding-right: 8px;
width: 200px;
padding-left: 10px;
}
Подвал сайта:
#footer {
border-style: solid;
border-width: 1px;
background-color: #999900;
float: none;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *