Селекторы css. Комплексные селекторы. Инструкция пользования персональным компьютером

Совокупность правил оформления (которые в свою очередь состоят из селекторов с блоком объявлений) примененных к определенным html тегам, за счет чего и формируется внешний вид сайта.

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

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

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

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

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

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

Простые селекторы

  • Универсальный селектор – отвечает за выбор вообще всех элементов в документе. Задается звездочкой. Обычно применяется для обнуления стилей браузеров, установленных в них по умолчанию, чтобы у всех, кто будет заходить на сайт не уплыло оформление в случае использования каких-то собственных настроек браузера или же различных плагинов

    * { какой- то стиль; }

  • Селектор типа – выбирает все теги, соответствующие определенному типу. Задается названием тега. Используется для задания общих правил оформления документа, к примеру, задать разные шрифты заголовкам и простому тексту документа.

    h1 { какой- то стиль; }

  • – применит правило цсс ко всем тегам с конкретным названием класса. Задается точкой с написанным сразу после нее названием класса. Пожалуй самый часто встречающийся в верстке селектор. Обычно используется, чтобы задавать различные стили оформления тегам одинаковым по типу, но разным по функциональному назначению.

    LeftColumn { какой- то стиль; }

  • Селектор идентификатора – применяется для оформления уникальных элементов на странице. Задается решеткой после которой идет название id. Используется, если нужно оформить один конкретный элемент страницы.

    #alertButton { какой- то стиль; }

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

    [ type] { какой- то стиль; } [ type= "submit" ] { какой- то стиль; } input[ type= "submit" ] { какой- то стиль; }

Сложные селекторы

  • Селектор потомка – выбор потомков (тегов находящихся внутри другого тега) элементов. Задается через пробел (родитель – пробел – потомок).

    div p { какой- то стиль; }

  • Селектор дочернего элемента - выбор элемента непосредственно вложенного в другой элемент. Задается символом «>» (родитель-галочка-дочерний элемент). Дочерний элемент отличается от потомка тем, что следует непосредственно после родителя (первый уровень вложенности). В то время как потомком считается любой тег внутри другого не зависимо от уровня вложенности.

    Sidebar> ul { какой- то стиль; }

  • Селектор сестринского элемента – выбирает тег идущий сразу после другого тега (не заключенный внутрь, а идущий далее). Задается плюсом (первый элемент – плюс – сестринский элемент). На практике используется редко. Обязательным условием применение является наличие общего родителя для всех элементов объединенным знаком «+».

    h1+ p { какой- то стиль; }

Псевдоклассы и псевдоэлементы

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

  • Помните, что в отличие от html в CSS регистр букв имеет значение. Тоесть класс.active и.Active это не одно и то же! Они применятся к разным элементам, если таковые есть в документе.
  • Называйте селекторы для оформления так, чтобы потом в них не запутаться: .leftColumn – хорошее название, .left – зависит от ситуации, но уже неочень, .llll – фигня какаято, ты сам то скажешь не глядя на код откуда этот класс взялся?
  • Еще раз напоминаю – если элемент на странице один, такой весь уникальный, то для него используем id, если же есть вероятность, что появится еще один такой или же просто подобных элементов на странице несколько, то пользуйтесь для оформления классами.

Подводя итоги

Селекторы в CSS – это мощнейший инструмент идентификации определенных элементов страницы или же группы элементов объединенных конкретным признаком для дальнейшего применения к ним стилей оформления из блока объявлений относящегося к данному селектору.

После освоения общих принципов взаимодействия и создания селекторов вы забудете о проблемах с оформлением веб-документов. Хорошее знание селекторов позволяет значительно сократить время верстки html страниц.

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

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

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

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

Если Вы назначаете блоку событие 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 к определенным страницам создается автоматически. При этом он должен безошибочно и правильно функционировать.

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

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 - none, block и т.д.) и строковые значения, т.е. просто слово (например, будет определять все элементы с записью <... attr="test" ...="">).
Existence Определяет все элементы, имеющие атрибут, независимо от его значения. Синтаксис:
{...}
att - атрибут(или строковое значение, т.е. собственный атрибут)
Prefix [^=] Определяет элементы, у которых есть атрибут att, принимающий значение, начинающееся с val. Синтаксис:
{...}
att - атрибут(или строковое значение, т.е. собственный атрибут), val - значение атрибута
Очень хороший пример: Википедия. На этом сайте все ссылки, ведущие на другие сайты, кроме Википедии, имеют позади значок (стрелку). Вот пример записи, позволяющий записать такой стиль:
:after {content""}
Suffix [$=] Определяет элементы, у которых есть атрибут att, принимающий значение, заканчивающееся на val. Синтаксис
{...}
Такой атрибут недавно начали использовать, чтобы перед различными ссылками ставить картинки, которые визуально укажут пользователю, к какому файлу, странице его отошлет ссылка. Например, перед ссылками на PDF файлы можно поставить значок PDF.Пример:
:before {content:""}
Substring [*=] Синтаксис записи:
{...}
Отбирает все элементы с атрибутом att, в значение которого входит подстрока val. Например, "54" - подстрока "13254 6", "val" - подстрока "value" и т.д.
Whitespace [~=] Whitespace - то же, что и Substring, однако подстрока должна быть словом, т.е. окружена в сстроке пробелами.
Hyphen [|=] То же, что и Substring, однако подстрока должна быть частью атрибута и разделяться с другой частью (частями) дефисом. Пример:
{...}
отберет все теги с атрибутом lang, в значении которого есть en, например en-ru, ru-de-en и т.д.

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

CSS selectors define the elements to which a set of CSS rules apply.

Basic selectors

Universal selector Selects all elements. Optionally, it may be restricted to a specific namespace or to all namespaces.
Syntax: * ns |* *|*
Example: * will match all the elements of the document. Type selector Selects all elements that have the given node name.
Syntax: elementname
Example: input will match any element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent. "> element. Class selector Selects all elements that have the given class attribute.
Syntax: . classname
Example: .index will match any element that has a class of "index". ID selector Selects an element based on the value of its id attribute. There should be only one element with a given ID in a document.
Syntax: # idname
Example: #toc will match the element that has the ID "toc". Attribute selector Selects all elements that have the given attribute.
Syntax: [ attr ] [ attr = value ] [ attr ~= value ] [ attr |= value ] [ attr ^= value ] [ attr $= value ] [ attr *= value ]
Example: will match all elements that have the autoplay attribute set (to any value).

Grouping selectors

Selector list The , is a grouping method, it selects all the matching nodes.
Syntax: A , B
Example: div, span will match both and ) is the generic container for flow content. It has no effect on the content or layout until styled using CSS.">
elements.

Combinators

Descendant combinator The (space) combinator selects nodes that are descendants of the first element.
Syntax: A B
Example: div span will match all elements that are inside a ) is the generic container for flow content. It has no effect on the content or layout until styled using CSS.">
element. Child combinator The > combinator selects nodes that are direct children of the first element.
Syntax: A > B
Example: ul > li will match all element is used to represent an item in a list.">
  • elements that are nested directly inside a element represents an unordered list of items, typically rendered as a bulleted list.">