Уроки по веб дизайну
Уроки веб дизайна!

События (селекторы, поведения) CSS

Не все, но более, чем достаточно

Люди, изучающие XHTML, а также CSS по книгам, нередко сталкиваются с тем, что события CSS описаны не полностью. В частности, описываются только такие события, как hover, active, visited. Событий CSS гораздо больше и возможности, которые они дают, очень большие.

Здесь не приводится полный список событий, а только те, которые реально понадобятся современному веб-дизайнеру.

:active
Задает цвет активной ссылки
:after
Определяет сгенерированный код, который будет выведен после элемента.

Если Вы назначаете блоку событие after, то после блока будет выведен сгенерированный код, определенный в таблице стилей. Для определения кода используется команда CSS - content, синтаксис которой - content:" XHTML код ".

Т.е. вся команда может выгладеть так:
#someId:after
{content:"XHTML код"}
:before
Работает также, как и after, но выводит код до элемента
:first-child
Задает стиль для первого дочернего элемента какого-либо другого элемента.

Допустим, применяя это событие к тегу h1, первый и только первый заголовок первого уровня будет отображен с соответствующим стилем. Особенно эффективно использовать это событие для стилей вложенных тегов(многоуровневых), например, вот так:

body ol li:first-child{...}(т.е. Во всех списках ol первый элемент li, но не ul, будет отображен с заданными настройками стилей)

:last-child
Задает стиль для последнего дочернего элемента какого-либо другого элемента.
:focus
Задает смтиль для элементов форм, которые получают фокус, т.е. те, по которым вы щелкаете. Например, можно сделать активное поле для ввода текста отличным от неактивного поля.
:hover
Стиль для элемента, на который наведен курсор. Может использоваться со всеми блоками и текстом (раньше мы рассматривали только ссылки).
:lang(x)
Ставит элементу в соответствие определенный язык, никак не изменяя содержимое элемента. Такой тег можно использовать, например, для выделения ссылок на различные источники. Вместо x ставится двузначное интернациональное обозначение языка, или иначе, название доменной зоны. Например, для России это ru, для Америки us, и так далее. Если элементу нужно поставить в определение несколько языков сразу, они должны разделяться дефисом без пробелов (в порядке понижения важностей стилей, которые определяет каждый язык).
:visited
Задает стиль посещенной ссылки
:nth-child(x)
Задает стиль для определенных элементов или одного определенного элемента. x может быть выражен:
  • числом. В этом случае выделен будет только 1 элемент
  • выражениями odd(все нечетные элементы) или even(все четные элементы).
  • выражением an+b, где n не изменяется, a и b - произвольные числа. Например, 7n+4. Будут выделены все элементы, дающие при делении на 7 остаток 4. (4, 11, 18 и т.д.) При этом, если a или b равны 0, то их можно не указывать. Отсчет n элементов ведется с 0 до n-1
Внимание! Это поведение(селектор) есть только в новом стандарте CSS 3 и поддерживается только современными браузерами.
:nth-last-child(х)
То же, что и nth-child(x), но отсчет ведется с последнего элемента n-1 до 0.
:emply
Добавляет стиль к элементу, у которого нет потомков, т.е. к пустому тегу.
:enabled
Стиль для выбранного, отмеченного элемента формы. Только для элементов button, input, optgroup, option, select, textarea. Это и два последующих селектора есть только в CSS 3
:disabled
То же, что и enabled, но для неактивированных элементов форм
:checked
Только для radio и checkbox. Задает стиль для выбранных элементов.
:first-letter
Задает стиль для первой буквы в тексте(т.н. буквицы). Поддерживаются только команды CSS оформления, но не разметки.
:first-line
То же, но для первой строки текста.

Углубленное изучение селекторов CSS

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

Мы упоминали наследственность элементов. Теперь мы разберем ее более глубоко.

Наследственный элемент(тег) - такой элемент(тег), который находится внутри другого элемента(тега)-родителя и наследующий все его свойства, если только у него нет собственных определенных свойств, отличных от тегов родителя.
Родительский элемент(тег) - такой элемент(тег), в котором находятся другие элементы(теги)-наследники, наследующие все его свойства, если только у них нет собственных определенных свойств, отличных от тегов родителя. Тег body является только родителем для других элементов, у него самого нет родительских элементов.

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

Комбинаторы (создание связи между стилями на основе наследственности)
Adjacent Sibling (+) Этот комбинатор определяет 2 элемента, которые следуют сразу друг за другом (между ними нет других элементов с тем же родителем, что и те 2 элемента, но могут быть наследственные им элементы) и имеют одного родителя. Стиль применяется сразу к обоим элементам. Синтаксис записи(пробелы не учитываются)
E+F{...}
где E - первый элемент, F - второй элемент. Например,
h1+h2{font-family:serif}
Эта запись определит стиль только для последующих друг за другом элементов h1 и h2, которые имеют одного родителя. Если после h2 стоит другой тег h2, то к нему стиль не применяется.
Child (>) Combinator Комбинатор определяет все элементы, являющиеся прямыми потомками одного элемента. Поддерживает несколько уровней вложенности, например:
body > div > p{...}
То есть, стиль ,стиль будет применен только к параграфам, которые являются потомками всех блоков div, которые непосредственно принадлежат тегу body.
Descendant Определяет произвольную связь между элементами. То есть, элементы не должны быть прямыми наследниками, а просто наследниками одного элемента. Синтаксис(пробел обязателен):
E F{...}
Например:
table.table1 td{...}
То есть стиль будет определен во всех столбцах-потомках таблицы с классом table1, даже если внутри этой таблицы есть другие таблицы. К столбцам таблиц-наследников также будет применен стиль.
General Sibling (~) Синтаксис E~F. Комбинатор выполняет такую же функцию, как и Adjacent Sibling, за исключением того, что между E и F может быть любое количество элементов того же уровня вложенности и F может быть не один.
Атрибуты. Селекторы атрибутов. Создание собственных атрибутов
Equality [=] У каждого тега может быть атрибут (например, атрибут id, который может быть практически у любого тега, или атрибут width(только для блоков)). Вы можете создать свой атрибут, представляющий собой текстовую строку. Например, attr. Создание собственных атрибутов пригодится для селекторов атрибутов в CSS. Атрибуты могут использоваться вместе с комбинаторами.
Equality определяет стиль для всех элементов, определенный атрибут которых в точности равен указанному значению. Синтаксис:
[att="val"] {...}
Как видим, здесь не определены теги. Стили определяются для всех элементов, у которых атрибут att равен значению val. Att и val могут принимать значения идентификаторов (например, для att могут быть любые изученные атрибуты, для val - none, block и т.д.) и строковые значения, т.е. просто слово (например, [attr="test"] будет определять все элементы с записью <... attr="test" ...> ).
Existence [] Определяет все элементы, имеющие атрибут, независимо от его значения. Синтаксис:
[att]{...}
att - атрибут(или строковое значение, т.е. собственный атрибут)
Prefix [^=] Определяет элементы, у которых есть атрибут att, принимающий значение, начинающееся с val. Синтаксис:
[att^="val"]{...}
att - атрибут(или строковое значение, т.е. собственный атрибут), val - значение атрибута
Очень хороший пример: Википедия. На этом сайте все ссылки, ведущие на другие сайты, кроме Википедии, имеют позади значок (стрелку). Вот пример записи, позволяющий записать такой стиль:
[href^="http://"]:after {content"<img ... />"}
Suffix [$=] Определяет элементы, у которых есть атрибут att, принимающий значение, заканчивающееся на val. Синтаксис
[att$="val"]{...}
Такой атрибут недавно начали использовать, чтобы перед различными ссылками ставить картинки, которые визуально укажут пользователю, к какому файлу, странице его отошлет ссылка. Например, перед ссылками на PDF файлы можно поставить значок PDF.Пример:
[href$=".pdf"]:before {content:"<img src='pdf.jpg' />"}
Substring [*=] Синтаксис записи:
[att*="val"] {...}
Отбирает все элементы с атрибутом att, в значение которого входит подстрока val. Например, "54" - подстрока "132546", "val" - подстрока "value" и т.д.
Whitespace [~=] Whitespace - то же, что и Substring, однако подстрока должна быть словом, т.е. окружена в сстроке пробелами.
Hyphen [|=] То же, что и Substring, однако подстрока должна быть частью атрибута и разделяться с другой частью (частями) дефисом. Пример:
[lang|="en"] {...}
отберет все теги с атрибутом lang, в значении которого есть en, например en-ru, ru-de-en и т.д.

На этом заканчивается изучение XHTML+CSS. Далее уроки пойдут про JavaScript. Содержание.

uroki.webservis.ru        Рейтинг@Mail.ru