Интернет магазин китайских планшетных компьютеров



Компьютеры - Каскадные таблицы стилей - Обзор

23 января 2011


Оглавление:
1. Каскадные таблицы стилей
2. Обзор
3. CSS-вёрстка
4. История создания и развития CSS
5. Поддержка CSS браузерами
6. CSS Framework



Цель создания CSS

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

Способы подключения CSS к документу

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

  • когда таблица стилей находится в отдельном файле, она может быть подключена к веб-документу посредством тега <link>, располагающегося в этом документе между тегами <head> и </head>.. Все правила этой таблицы действуют на протяжении всего документа;
<head>
.....
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
  • когда таблица стилей находится в отдельном файле, она может быть подключена к веб-документу посредством директивы @import, располагающейся в этом документе между тегами <style> и </style> сразу после тега <style>, которая также указывает на адрес этой таблицы стилей. Все правила этой таблицы действуют на протяжении всего документа;
<head>
.....
  <style type="text/css" media="all">
    @import url;
  </style>
</head>
  • когда таблица стилей находится, описана в самом документе, она может располагаться в нём между тегами <style> и </style>. Все правила этой таблицы действуют на протяжении всего документа;
<head>
.....
  <style type="text/css">
    body { 
      color: red;
    }
  </style>
</head>
  • когда таблица стилей находится, описана в самом документе, она может располагаться в нём в теле какого-то отдельного тега этого документа. Все правила этой таблицы действуют только на содержимое этого тега.
  <p style="font-size: 21px; color: green;">Рассказ о том, как вредно красить батареи</p>

В первых двух случаях говорят, что к документу применены внешние таблицы стилей, а во вторых двух случаях — внутренние таблицы стилей.

Для добавления CSS к XML-документу, последний должен содержать специальную ссылку на таблицу стилей. Например:

  <?xml-stylesheet type="text/css" href="style.css"?>

Иерархия элементов внутри документа

Как известно, HTML-документы строятся на основании иерархии элементов, которая может быть наглядно представлена в древовидной форме. Элементы HTML друг для друга могут быть родительскими, дочерними, элементами-предками, элементами-потомками, сестринскими.

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

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

Построение правила CSS

В первых трёх случаях подключения таблицы CSS к документу каждое правило CSS из таблицы стилей имеет две основные части — селектор и блок объявлений. Селектор, расположенный в левой части правила, определяет, на какие части документа распространяется правило. Блок объявлений располагается в правой части правила. Он помещается в фигурные скобки, и, в свою очередь, состоит из одного или более объявлений, разделённых знаком «;». Каждое объявление представляет собой сочетание свойства CSS и значения, разделённых знаком «:». Селекторы могут группироваться в одной строке через запятую. В таком случае свойство применяется к каждому из них.

селектор, селектор {
  свойство: значение;
  свойство: значение;
  свойство: значение;
}

В четвёртом случае подключения таблицы CSS к документу правило CSS представляет собой перечень объявлений, разделённых знаком «;».

Виды селекторов

Селекторы правила CSS могут быть

  • селекторами элементов;
p {font-family: Garamond, serif;}
  • селекторами классов;
.note {color: red; background: yellow; font-weight: bold;}
  • селекторами идентификаторов;
#paragraph1 {margin: 0;}
  • селекторами атрибутов;
 a{font-weight:bold;}
  • селекторами потомков;
div#paragraph1 p.note {color: red;}
  • селекторами дочерних элементов;
p.note > b {color: green;}
  • селекторами сестринских элементов;
h1 + p {font-size: 24pt;}
  • селекторами псевдоклассов;
a:active {color:yellow;}
  • селекторами псевдоэлементов.
p:first-letter {font-size: 32pc;}
  • Также в CSS существует так называемый универсальный селектор, обозначающий любой элемент, встречающийся в документе. Например, * {color:red;}. Перед любым селектором, задающим класс или идентификатор, можно поставить знак универсального селектора, в результате получится эквивалентное выражение, например, .first {...} и *.first {...} имеют один и тот же смысл.

Классы элементов. Идентификаторы элементов.

Класс или идентификатор может быть присвоен какому-нибудь элементу HTML посредством атрибутов class или id этого элемента:

<div id="first"> ... </div>
<p class="big"> ... </p>

Основное отличие между классами элементов и идентификаторами элементов в том, что в документе какой-нибудь класс может быть присвоен сразу нескольким элементам, а идентификатор - только одному. Также отличие в том, что могут существовать множественные классы. Для идентификаторов такое невозможно.

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

Имена классов и идентификаторов, в отличие от названий тегов и их атрибутов, чувствительны к регистру ввода букв.

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

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

Наследование. Каскадирование. Приоритеты стилей CSS.

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

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

  • Наиболее низким приоритетом обладает стиль браузера;
  • Следующим по значимости является стиль, заданный пользователем браузера в его настройках;
  • И наиболее высоким приоритетом обладает стиль, заданный непосредственно автором страницы. И далее, уже в этом авторском стиле приоритеты расставляются следующим образом:
    • Самым низким приоритетом обладают стили, наследуемые в документе элементом от своих предков;
    • Более высоким приоритетом обладают стили, заданные во внешних таблицах стилей, подключённых к документу;
    • Ещё более высоким приоритетом обладают стили, заданные непосредственно селекторами всех десяти видов, содержащимися в контейнерах style данного документа. Нередки случаи, когда к какому-нибудь элементу имеют отношение, задают его вид, несколько таких селекторов. Такие конфликты между ними разрешаются с помощью расчёта специфичности каждого такого селектора и применения этих селекторов к данному элементу в порядке убывания их специфичностей. При расчёте специфичности селектора принимается во внимание:
      • количество идентификаторов в селекторе —- за каждый объявленный идентификатор в селекторе правила CSS);
      • количество классов и псевдоклассов в селекторе —- за каждый объявленный класс и псевдокласс в селекторе правила CSS );
      • количество тегов в селекторе —- за каждый объявленный тег в селекторе правила CSS). будет иметь большую специфичность, соответственно — больший приоритет, чем даже, а будет иметь большую специфичность, больший приоритет, чем. Если же рассчитанные таким образом специфичности окажутся одинаковыми, то к элементу будет применено правило, описанное селектором, расположенным в документе ниже других.)
    • Ещё более высоким приоритетом обладают стили, объявленные непосредственно в теге данного элемента посредством атрибута style этого тега;
    • И наконец самым высоким приоритетом обладают стили, объявленные автором страницы или пользователем, с помощью сопроводительного слова !important. Если таких свойств несколько, то предпочтение отдаётся в первую очередь стилям, заданным пользователем, а для остальных свойств потребуется определить их специфичности по принципам, описанным выше, и применять эти свойства в порядке убывания этих их специфичностей.

Пример таблицы стилей

Пример таблицы стилей:

p {
  font-family: "Garamond", serif;
}
h2 {
  font-size: 110 %;
  color: red;
  background: white;
}
.note {
  color: red;
  background: yellow;
  font-weight: bold;
}
p#paragraph1 {
  margin: 0;
}
a:hover {
  text-decoration: none;
}
#news p {
  color: blue;
}

Здесь приведено шесть правил CSS с селекторами p, h2, .note, p#paragraph1, a:hover и #news p.

  1. Первое правило присвоено HTML-элементу p — назначен стиль. Абзацы будут отображаться шрифтом Garamond, или, если такой шрифт недоступен, каким-либо другим шрифтом с засечками.
  2. Второе правило присвоено HTML-элементу h2. Заголовок второго уровня будет отображаться красным на белом фоне с увеличенным кеглем.
  3. Третье правило будет применено к ЛЮБОМУ элементу, атрибут class которого равен 'note'. Например, к параграфу: <p class="note">Этот абзац будет выведен полужирным шрифтом красного цвета на желтом фоне.</p>
  4. Четвёртое правило будет применяться только к элементам p, атрибут id которых равен paragraph1. Такие элементы не будут иметь внешних отступов.
  5. Пятое правило определяет стиль hover для элементов a — гиперссылок. По умолчанию, в большинстве браузеров текст элементов a подчеркивается. Это правило уберёт подчеркивание, когда указатель мыши находится над этими элементами.
  6. Последнее, шестое правило, применяется для элементов p, которые находятся внутри КАКОГО-ЛИБО элемента с атрибутом id, равным «news».


Просмотров: 3951


<<< Исполнимый модуль