Для чего нужны таблицы стилей?
Вы создавали предыдущие страницы, так как их создавали раньше до появления каскадных таблиц стилей или CSS (Cascading Style Sheets).
Основные проблемы, с которыми сталкивались разработчики сайтов до появления CSS:
Проблема позиционирования (разметка страниц). Хотя для этого стали использовать таблицы (они небыли для этого предназначены изначально), они не решили всех проблем. Не возможно осуществить следующее:
- Нельзя задать фиксированные размеры какого-нибудь блока. Например, текстовый блок будет разъезжаться при переполнении (даже если он в таблице).
- Нельзя задать фиксированные координаты положения блока на странице.
- Нельзя наложить один блок на другой. Например, попробуйте надвинуть картинку поверх таблицы или другой картинки.
Вторая проблема заключалась в том, что приходилось каждый раз задавать на страницах размер и цвет шрифта, свойства ячеек таблицы и т.д. Это сильно увеличивало размеры страницы, а значит, она медленнее загружается. В случае если вам захотелось изменить цвет или размер шрифта, вам пришлось бы редактировать все страницы.
Третья проблема заключалась в том, что все браузеры имеют индивидуальные настройки. Например, в браузере можно увеличить шрифт, что приведет к искажению всей страницы.
С помощью CSS эти проблемы можно решить.
Способы применения CSS
Существует три способа применения таблиц стилей:
-
border - используются для определения рамки, расположенной слева, справа, сверху и снизу от элемента. Можно устанавливать ширину, цвет и стиль рамки.
-
margin - используются для определения полей, расположенных слева, справа, сверху и снизу от элемента. Можно также устанавливать ширину полей.
-
padding - применяются для того, чтобы указать свободное пространство между рамкой и содержимым элемента.
-
контейнера UL
.
Свойства дают вам полный контроль того, как программа просмотра выводит текст. С их помощью можно управлять цветом, размером, шрифтом, межстрочным интервалом и т, д. Ниже будут подробно описаны все свойства текста.
Многие из описанных выше свойств могут группироваться друг с другом. Так, вместо правила
H1 (font-weight: bold; font-style: normal; font-size: 12pt; font-family: serif)
можно записать более краткую формулировку:
H1 (font: bold normal 12pt serif}
Таблицы стилей HTML позволяют группировать свойства border, background, font, list, margin и padding. Рассмотрим каждую из групп в отдельности.
Группа свойств border
Группировать свойства border можно пятью различными способами. Можно определить свойства для отдельной стороны рамки, используя
border-top, border-right, border-bottom И border-left, либо определить всю рамку сразу при помощи border.С каждым из этих свойств можно указать ширину, стиль и цвет рамки, например:
b order-top: thin dotted black
Группа свойств background
В группе свойств background можно указать значения для color, image, repeat, attachment и position, например:
background: white URL(http://www.myserver.com/image/bg.gif) repeat-x fixed top left
Группа свойств font
Группе font можно дать значения weight, style, size и family, например:
font: bold normal 12pt times, serif
Группа свойств list
Свойства группируются при помощи свойства list-style. Возможно указание изображения для маркера, типа и позиции маркера, например:
list-style: square URL(http://www.myserver.com/images/marker.gif) inside
Группа свойств margin
Группе margin можно определить ширину для каждого из полей top, right, bottom и left, например:
margin: .5in 1in .5in 1in
Если будет указано только одно значение, программа просмотра сделает ширину других полей такой же. Если не указать одно или два значения, поля с неуказанным значением будут такой же ширины, как противоположные поля. Например, если опустить последнее значение (left), ширина левых полей будет равна ширине правых полей, т. е. 1 дюйму.
Группа свойств padding
В Группе padding можно указать значения для top, right, bottom и left, например:
padding: .25in .25in .25in .25in
Если будет указано только одно значение, программа просмотра назначит отсутствующим значениям такую же величину. Если не указать одно или два значения, свободные пространства с неуказанными значениями будут такой же ширины, как и им противоположные. Например, если опустить последнее значение (left), свободное пространство между левой стороной рамки и содержимым элемента будет таким же, как и пространство с правой стороны.
В HTML подчиненные тэги наследуют некоторые свойства родительских тэгов. Например, все тэги контейнера
(< P > и-
) будут обладать некоторыми
свойствами тэга
. Точно так
же тэг
-
наследует свойства
тэга
-
. Рассмотрим следующий
код:
- : один для случая, когда он подчинен тэгу
-
только в том случае, если этот тэг является
подчиненным тэгу
-
:
-
можно определить другой стиль, действительный
только в случае подчиненности тэгу
-
:
UL LI {list-style-type: square}
Необходимо заметить, что список селекторов не разделен запятыми. В противном случае всем тэгам списка будет приписан один и тот же стиль.
В рекомендациях W3C таблицы стилей называются "каскадными таблицами стилей" потому, что для верстки Web - страницы можно применять не одну, а сразу несколько таблиц. При этом программа просмотра сама определяет последовательность использования таблиц и разрешает конфликты между ними по принципу каскадирования. Например, таблица стилей для страницы может быть определена не только ее автором, но и читателем, и тогда правила каскадирования решают, какая из таблиц стилей будет иметь силу.
Kак это работает? Каждому правилу браузер приписывает весовой коэффициент. При интерпретации каждого тэга программа просматривает все правила этого тэга и сортирует их по величине весового коэффициента. Выигрывает самое "весомое" правило.
Существуют следующие общие принципы разрешения конфликтов между таблицами стилей:
Старшинство типов таблиц стилей в документе (по убыванию): текущее задание стиля (inline), встраивание (embedding), связывание (linking).
Также можно изменить весовой коэффициент правила при помощи служебного слова important. В следующем примере значение red свойства
OL LI (list-style-type: decimal}
Для того же тэга
-
можно определить другой стиль, действительный
только в случае подчиненности тэгу
Hello. This is a paragraph of text. This is emphasized
Таблица стилей этого документа устанавливает цвет в тэге
< P > синим, однако, цвет для тэга явно не определен (по умолчанию - это черный цвет). Здесь не о чем беспокоиться, так как этот тэг находится в родительском контейнереИ наследует таким образом синий цвет.
Иногда возникает необходимость определения двух (и более) стилей для одного тэга. Например, может понадобиться указание двух стилей для тэга
-
, и второй, когда он подчинен тэгу
-
. Это возможно сделать с
помощью контекстных селекторов.
Контекстный селектор определяет точную последовательность тэгов, для которых будет применен тот или иной стиль. Другими словами, можно указать, что какой-то стиль должен применяться, например, в тэге
H1 (color: red ! important font-weight: bold font-family: sans-serif ! important}
Классом называется определение нескольких стилей одного элемента, каждый из которых может использоваться в нужном месте страницы. Например, можно определить три вариации стиля заголовка H1 . Определение вариаций похоже на указание стиля, только к названию тэга добавляется произвольное имя класса, отделенное точкой:
H1 blue (color: blue} H1 .red (color: red} H1 .black (color: black}
Теперь, включая в документ тэг
, можно указать в нем конкретный стиль при помощи атрибута CLASS :
Red Heading
-
наследует свойства
тэга
Внутренние таблицы стилей
(Inline Style Sheets) - при помощи специального атрибута помещаются прямо в HTML теги.
Пример HTML:
Пример CSS:
Как можно заметить, код Inline Style Sheet получился больше чем HTML. Поэтому ISS следует использовать, только если необходимо задать определенному элементу свой индивидуальный стиль.
При помощи дополнительного атрибута style мы можем определить нужные нам стилевые параметры в любом теге. Это самый легкий способ, и действует он в пределах лишь одного тега. Но представьте, насколько вырастет размер файла, и насколько неудобно будет его исправлять, если мы будем указывать стиль у каждого тега.
Глобальные таблицы стилей
(Global Style Sheets) - определяют стиль элементов во всем документе.
Для этого используется тег
Теперь эти стили можно применять в любом месте html-кода. Для этого используется следующая конструкция:
Этот текст написан стилем header
Этот текст написан красным цветом
Как видите, все не так уж сложно. Главное понять основные принципы. Кроме определения новых классов мы также имеем возможность переопределять стандартные теги. Например, тег
Теперь весь текст, заключенный в теги, будет выглядеть так, как определено данным стилем. Это очень удобно и позволяет легко адаптировать уже существующие странички к использованию стилей. Кроме того, это несколько уменьшает объем файла за счет отсутствия лишних атрибутов class.
И наконец, третий способ - вынесение описания стилей во внешний файл. Диапазон его воздействия простирается на все файлы, в которые включено описание. Это способ наиболее соответствует концепции HTML 4.0. В случае, если нам потребуется изменить внешний вид сайта, то будет достаточно скорректировать лишь один этот файл. Сравните его с предыдущими способами. В одном из них придется менять описание на каждой страничке, а в другом даже более того - около каждого тега, что, разумеется, совершенно не вдохновляет.
Каким же образом производится внедрение внешнего файла? Для начала создается стилевой файл с описанием всех нужных нам классов (mystyle.css):
Header { text-align: center; font-size: 27pt;}
.red { color: red; }
p { text-align: center; font-size: 12pt;}
....
....
Это самый удобный способ, и для основной таблицы стилей рекомендуется пользоваться именно им.
Почему я сказал "основной"? Дело в том, что на практике приходится пользоваться всеми тремя способами, и здесь в игру вступает "каскадность" стилей. Но об этом мы поговорим уже в следующий раз.
Продолжаем разговор о применении таблиц стилей. Сначала разберемся с каскадностью стилей, а потом перейдем к рассмотрению синтаксиса и обзору наиболее часто встречающихся параметров, применяемых при создании стилей.
Каскадность стилей
Итак, для начала разберемся, почему стили называются каскадными. Позволь, дорогой
читатель, я еще раз приведу способы внедрения стилей на страничку:
использование отдельного стилевого файла и вставка его при помощи тега
описание стиля в заголовке документа
применения стиля как параметра в теге.
Каскадность заключается в том, что стили могут переопределяться. Приведенный выше список способов внедрения стилей соответствует порядку переопределения. Нижерасположенный способ может переопределять вышерасположенный.
Например, мы определили во внешнем стилевом файле, что текст в теге
должен быть написан при помощи шрифта высотой 10 пунктов. Но если в заголовке странички мы дополнительно укажем, что тот же текст в теге
должен быть написан шрифтом в 12 пунктов, то текст будет выведен именно таким кеглем - т.е. стиль в заголовке странички переопределил стиль во внешнем файле.
Для чего это нужно? О, это очень полезная вещь. И сейчас я покажу это на конкретном примере. Предположим, что для всех ссылок в заголовке на нашей страничке определен следующий стиль:
И, следовательно, любой текст, который является гиперссылкой, автоматически становится красным и перестает быть подчеркнутым. И вот мы решили в конце странички указать копирайт, но сделать это не сильно заметно, чтобы не акцентировать на этом внимание. Но, тем не менее, мы хотим, чтобы копирайт также был ссылкой. Сделать это нам нужно всего лишь в одном месте странички и определять для этого дополнительный класс нецелесообразно. В этом случае нам на помощь придет каскадность стилей. Достаточно локально переопределить цвет ссылки:
Copyright
(C)
1998-2001 Cherry-Design
Сделали мы это при помощи параметр style, а он, как Вы помните, действует лишь в пределах того тега, в котором был определен. Что нам и нужно.
Вы наверняка обратили внимание, что в вышеприведенном примере я ввел в обращение новый тег . Он предназначен специально для таких случаев. Все, что он делает - это определяет некую область, к которой мы можем применить стиль. Это очень удобный тег, т.к. не вставляет ни до, ни после себя ненужных отбивок (т.е. пустое вертикальное пространство), как это делает тег
В каких тегах лучше определять стили посредством класса? Чаще всего для этого используется одна из следующих конструкций:
Что-то
Что-то
Тег
). А вот стиль текста, которым набрано основное содержимое странички, лучше всего сделать переопределением тега
А не определением отдельного класса.
И небольшое дополнение, связанное с корректным показом в обоих броузерах - если Вы используете табличную верстку для дизайна сайта, то определять стиль основного текста нужно не только в теге
, т.к. Netscape категорически отказывается наследовать стили, присвоенные до таблицы.Разобравшись с каскадностью, давайте поговорим о синтаксисе.
Синтаксис CSS
Описание каждого класса делается при помощи конструкции, подобной этой:
Small { font-size: 9pt; }
Сначала указывается имя класса - оно может быть произвольным, но желательно все-таки давать осмысленное название. Далее, в фигурных скобках {} перечисляются все необходимые параметры для данного класса. Параметры отделяются друг от друга точкой с запятой. Вот еще один пример, в котором используется более длинное описание:
Small { font-size: 9pt; color: #eeeeee; text-align: center; }
Заметьте, что в обеих конструкциях я начал имя класса с точки и таким образом определил универсальный класс, т.е. такой, который может быть применен к любому тегу. И делается это при помощи следующей конструкции:
Раз есть универсальные классы, то, вероятно, существуют и какие-то другие? Все правильно, еще бывают так называемые теговые классы:
p.small { font-size: 9pt; }
Класс, определенный таким образом, сработает только в том теге, для которого он предназначен, а для всех остальных будет проигнорирован:
Этот текст будет выведен стилем small
Мы можем определять параметры не только для одного тега, но и сразу для нескольких. Для этого в определении стиля достаточно перечислить их через запятую:
p, td { font-size: 9pt; color:green;}
Такой прием называется группировкой, и в данном случае мы определили и для
одинаковый размер и цвет текста.В случае переопределения существующих тегов, в описании стиля можно указывать не все параметры, а лишь те из них, которые мы хотим изменить. Все остальные параметры примут значения по умолчанию, которые для разных тегов различны.
Псевдоклассы
В CSS есть такое понятие как псевдокласс. В отличие от обычного класса, действие
псевдокласса распространяется не на весь текст, к которому применен данный стиль,
а лишь на его часть и возможно лишь в определенном состоянии. Чтобы было понятнее,
давайте разберем эффект, при котором ссылки подчеркиваются лишь при наведении
на них курсора. Эффект достаточно распространенный, и его можно наблюдать в
том числе и на этом сайте. Вот фрагмент таблицы стилей, который позволяет достигать
вышеописанного эффекта:
a { text-decoration: none; }
a:hover { text-decoration: underline; }
Верхняя строчка - это переопределение стандартного тега , которое запрещает подчеркивать ссылки, а вот нижняя - это определение стиля для псевдокласса hover, который описывает стиль ссылки в момент, когда курсор находится над ней.
А вот и другой пример псевдокласса - определение буквицы вначале абзаца:
p:first-letter { font-size: 200%; font-weight: bold; }
Заметьте, что и в том, и в другом случае действие стиля распространяется либо на определенное состояние (пользователь собирается щелкнуть по ссылке), либо на фрагмент текста (изменяется только первая буква абзаца). В этом и заключается смысл псевдоклассов.
Наверное всем известно, что HTML
задает структуру документа, а CSS
(Cascading Style Sheets, каскадные таблицы стилей) отвечает за оформление веб-страницы, положение и вид элементов. Так сложилось, что HTML и CSS отдельно не используются. Любая веб-страница это, по сути, комбинация HTML-кода и CSS-кода. Без основных знаний этих
технологий не получится грамотно сверстать ни один документ. Многие из нас изучали эти технологии подробнее. Но лично мне до конца так и не удалось «постичь» все истины и возможности CSS. Далее я постараюсь выделить самые важные моменты, которые нужно знать о CSS.
Что такое каскадные таблицы стилей?
Стили представляют собой набор параметров, управляющих видом и положением элементов веб-страницы. Посмотрите на рисунки ниже, чтобы понять разницу:
Исходный код такого документа имеет вид:
1 |
|
Сам код HTML никаких изменений не претерпел и единственное добавление - это строка . Она ссылается на внешний файл с описанием стилей под именем style.css. Содержимое этого файла показано ниже:
1 | body {
|
В файле style.css
как раз и описаны все параметры оформления таких тегов как, <body
>
,
Заметьте, что сами теги в коде HTML пишутся как обычно. Поскольку на файл со стилем можно ссылаться из любого веб-документа, это приводит в итоге к сокращению объема повторяющихся данных. А благодаря разделению кода и оформления повышается гибкость управления видом документа и скорость работы над сайтом.
Типы стилей
Различают несколько типов стилей, которые могут совместно применяться к одному документу. Это стиль браузера, стиль автора и стиль пользователя.
Стиль браузера . Подобные стили применяются при использовании «чистого» HTML.
Стиль пользователя. Это стиль, который может включить пользователь сайта через настройки браузера. Такой стиль имеет более высокий приоритет и переопределяет исходное оформление документа.
Если возникает конфликт при изменении стиля одного и того элемента документа, то стиль пользователя имеет самый высокий приоритет, далее следует стиль автора и стиль браузера.
Как добавить стили на страницу?
Добавить CSS стили на страницу можно несколькими способами:
Связанные стили
При использовании связанных стилей описание селекторов и их значений располагается в отдельном файле, как правило, с расширением css, а для связывания документа с этим файлом применяется тег . Данный тег помещается в контейнер
.Подключить эти стили можно следующим образом:
1 | "-//W3C//DTD XHTML 1.0 Strict//EN"
href = "http://www.htmlbook.ru/main.ess" / > head > Заголовок
h1
> |
А файл стилей будет выглядеть вот так:
1 | H1 {
|
Как видно из кода выше, на html-страницу добавляется запись, сообщающая браузеру откуда нужно получать стили. Сам стилевой файл содержит только описание стилей. Такое разделение html и css кода облегчает разработку и сопровождение сайтов. Такому стилю верстки рекомендуется придерживаться.
Глобальные стили
При использовании глобальных стилей свойства CSS описываются в самом документе и располагаются в заголовке веб-страницы. По своей гибкости и возможностям этот способ добавления стиля уступает предыдущему, но также позволяет хранить стили в одном месте, в данном случае прямо на странице с помощью контейнера
Тэг
Как было указано ранее, таблицы стилей хранятся в текстовых файлах, удобных для редактирования. Их нетрудно создавать вручную, однако существуют специальные редакторы таблиц стилей, например, популярная программа Мicrosoft FrontPage.
Таблицы стилей позволяют определять стиль для одного или нескольких тэгов. Например, можно создать таблицу стилей, определяющую стили для тэгов
,
,
И
. Каждое
определение называется правилом
(rulе). Правило содержит селектор
(тэг HTML), за которым следует декларация
(определение стиля). Селектор является связующим
звеном между определением и тэгом. Ниже приведен
пример правила, указывающего стиль для каждого
из тэгов заголовка
:
H1 (color: blue}
Декларация заключается в фигурные скобки. Каждая декларация имеет две части: название свойства и присваиваемое ему значение, разделенные двоеточием. В HTML включены десятки свойств (font-size, font-style, color, margin-right и т. д.), о которых будет рассказано ниже. Каждое свойство может принимать несколько значений, одно из которых приписывается ему по умолчанию.
В предыдущем примере было указано лишь одно свойство color. Однако ничто не мешает определить целый ряд свойств в одном тэге, отделив их друг от друга точкой с запятой:
HI {color: blue; font-size: 12pt; text-line: center}
В этом примере программа просмотра выведет каждый заголовок первого уровня синим шрифтом размером 12 пунктов и выровняет их по центру окна. Для всех прочих свойств будут использоваться значения по умолчанию (например, свойству font-style будет присвоено значение normal).
Если необходимо определить один и тот же стиль для нескольких тэгов, можно перечислить их в отдельном списке:
Р (font-size: 12pt}
UL {font-size: 12pt}
LI {font-size: 12pt}
HTML позволяет сделать то же самое и в более компактном виде - в одной строке:
Р, UL, LI (font-size: 12pt}
Запятая здесь является обязательным элементом. Если она опущена, смысл правила изменится (см. раздел " " ниже в этой главе).
По мере усложнения таблицы стилей, скорее всего, понадобится включить в нее дополнительные сведения о назначении того или иного правила. Комментарии располагаются между символами /* и */ и игнорируются программами просмотра, например:
BODY {margin-left: lin} /* Отступ на 1
дюйм */
H1 {margin-left: -lin} /* Сдвиг влево на 1 дюйм */
Н2 (margin-left: -lin} /* Сдвиг влево на 1 дюйм */
HTML позволяет определить широкий спектр свойств таблиц стилей. Имена свойств состоят из одного, а чаще - из двух или трех слов, разделенных дефисом. В сложных названиях первое слово обычно представляет категорию и одновременно является сокращенным вариантом (shorthand) имени свойства (см. раздел " ").
В таблице приведен обзор свойств таблиц стилей HTML.. В колонке "Категория" показано, может ли то или иное свойство объединяться в группу с другими свойствами. В третьей колонке приведены сведения о том, наследуется или нет свойство подчиненными тэгами (о наследовании свойств см. раздел " ").
Наследование |
||||
Таблицы стилей HTML позволяют украшать фон элемента страницы цветом или изображением. Необходимо заметить, что здесь и далее речь пойдет об использовании свойств не для всей страницы, а для отдельного элемента. Например, если определяется фон для тэга
U L {background-image: URL(http://www.myserver.com/images/watermark.gif)} Рекомендации W3C дают возможность определять рамки, поля и свободное пространство для элементов страницы. Можно, например, заключить заголовок в рамку или изменить поля в тэге абзаца <Р> так, чтобы организовать отступ для всех абзацев текста. Для этих целей можно использовать следующие группы свойств: Эти свойства применяются для указания способов вывода списков. С их помощью можно изменить позицию маркера (свойство list-style-position), стиль или изображение маркера (свойства list-style-type и list-style-image). Свойства списков наследуются, т. е. если определено свойство в тэге
|