Сайт о телевидении

Сайт о телевидении

» » Типы селекторов в CSS

Типы селекторов в CSS

Селектор определяет, к какому элементу применять то или иное CSS-правило.

Базовые селекторы

Селекторы по элементу Этот базовый селектор выбирает элемент, к которому будем применятся правило.
Синтаксис: элемент
Пример: селектор input выберет все элементы используется для создания интерактивных элементов управления в веб-формах."> . Селекторы по классу Этот базовый селектор выбирает элементы, основываясь на значении их атрибута class .
Синтаксис: .имяКласса
Пример: селектор .index выберет все элементы с соответствующим классом (который был определен в атрибуте class="index" или похожем). Селекторы по идентификатору Этот базовый селектор выбирает элементы, основываясь на значении их id атрибута. Не забывайте, что идентификатор должен быть уникальным, т. е. использоваться только для одного элемента в HTML-документе.
Синтаксис: #имяИдентификатора
Пример: селектор #toc выберет элемент с идентификатором toc (который был определен в атрибуте id="toc" или похожем). Универсальный селектор Этот базовый селектор выбирает все элементы. Он также существует в варианте для локального и глобального пространств имен.
Syntax: * ns|* *|*
Example: селектор * выберет все эелементы. Селекторы по атрибуту Этот базовый селектор выбирает элементы, основываясь на одном из их атрибутов и/или его значении.
Синтаксис:
Пример: селектор выберет все элементы с атрибутом autoplay (независимо от его значения).

Комбинаторы

Комбинатор "+" выбирает элемент, который находится непосредственно после указанного элемента, если у них общий родитель.
Синтаксис: A + B
Пример: селектор ul + li выберет любой элемент, который находится непосредственно после элемента
    . Родственные селекторы Комбинатор"~" выбирает элементы, которые находятся после указанного элемента, если у них общий родитель.
    Синтаксис: A ~ B
    Пример: p ~ span выберет все элементы , которые находятся после элемента определяет собой абзац текста.">

    внутри одного родителя. Дочерние селекторы Комбинатор ">" выбирает элементы, которые являются дочерними непосредственно по отношению к указанному элементу.
    Синтаксис: A > B
    Пример: селектор ul > li выберет все элементы , которые находятся внутри элемента

      element. Вложенные селекторы Комбинатор " " выбирает элементы, которые находятся внутри указанного элемента (вне зависимости от уровня вложенности).
      Синтаксис: A B
      Пример: селектор div span выберет все элементы , которые находятся внутри элемента ) является базовым контейнером для элементов основного потока (flow content). Он не влияет на контент или формат пока не стилизован, используя CSS. Являясь "> по своему существу не представляет ничего. Между тем, он используется для группировки контента, что позволяет легко его стилизовать, используя ">
      .

      Псевдоэлементы

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

      Псевдоклассы

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

      Спецификации

      Спецификация Статус

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

      Селекторы в CSS

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

      P{ Стили… }

      В данном случае селектором выступает p – тег абзацев. Такое правило добавит стили для всех абзацев на веб-странице.

      Какими бывают css селекторы?

      Селектор тега – самый простой . Он был продемонстрирован в примере. Чтобы записать его в css, нужно написать имя тега без угловых скобок. Стили будут применены ко всем элементам с таким тегом.
      Table{} – стили для всех таблиц
      Li{} – стили для всех пунктов списка
      A{} – стили для всех ссылок

      Стилевой класс – к любому элементу на веб-странице можно привязать стилевой класс. Даже к одной букве. Потом в css-файле можно обратиться к этому элементу, прописав для него собственные стили. Для этого нужно поставить точку и написать имя стилевого класса после нее. Примеры:
      .about{} – правила применятся ко всем элементам, которые имеют атрибут class = "about"
      .down{} – правила применятся ко всем элементам, которые имеют атрибут class = "down"
      .float{} – правила применятся ко всем элементам, которые имеют атрибут class = "float"

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

      Идентификатор – еще один вид селекторов. Один идентификатор можно задать только одному элементу. Он не может иметь двух идентификаторов, а также id привязанный к этому элементу, не может быть прописан нигде более.

      Задается он так:

      Абзац

      То есть также, как и класс, только используется атрибут id в качестве значения которого используется любое слово.

      Чтобы обратиться к элементу с идентификатором через css нужно написать значение id и перед ним поставить решетку.

      #first{ Font-size: 22px }

      Мы обратились к абзацу с id = first . Стиль применится только к нему. У остальных абзацев размер шрифта не изменится.

      Псевдоклассы

      В CSS есть один интересный вид селекторов – псевдоклассы. То есть классы, которые по умолчанию есть у элементов и их не нужно дополнительно задавать. Некоторые из них работают только для ссылок, а некоторые можно применить ко всем элементам. В любом случае css псевдоклассы сильно облегчают работу веб-разработчику.

      Псвевдокласс – это стилевой класс элемента, который мы на самом деле не задавали сами, просто он есть сам по себе. Например, увидев в html такой код:

      Абзац

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

      Для ссылок

      Для полей ввода и ссылок

      :focus – стиль применяется к элементу, который получает фокус ввода.
      На самом деле для полей ввода появилось очень много новых классных псевдоклассов, но все они впервые введены в CSS3 , а в этой статье я хотел бы обсудить только самые простые. О CSS3 селекторах обязательно будет статья в дальнейшем.

      Для всех элементов

      1. :hover – стиль применяется при наведении на элемент
      2. :first-child – выбрать первый дочерний элемент
      3. :last-child – последний дочерний элемент
      4. :nth-child() – в скобках записывается число или формула, которая определяет, какие элементы будут выбраны.
      5. :first-of-type, :last-of-type, :nth-of-type() – работают практически аналогично предыдущим псевдоклассам. Разница только в том, что здесь учитывается тип элемента. Разницу можно почувствовать на примере:
        li:first-child – будет выбран первый пункт списка, но только в том случае, если в родительском блоке элемент li идет первым. Если до него стоит другой тег, не выберется ничего.
      6. li:first-of-type – будет выбран первый пункт списка из всех, что есть в родителе. При этом не важно, где они располагаются в коде. Надеюсь, разница понятна.
      7. :nth-last-child – работает аналогично:nth-child, но отсчет ведется от последнего элемента, а не от первого.
      8. :nth-last-of-type – аналогично:nth-last-child, но с учетом типа элемента.

      Это не все псевдоклассы, но самые популярные и необходимые. Собственно, все псевдоклассы помечаются в css одинаково, через двоеточие. К тому же можно комбинировать селекторы и получать интересные возможности:
      a:visited:active – стили для уже посещенной ссылки, на которую кликают.
      div:first-child:hover – стили для всех первых блоков в их родителях, на которые наводят курсор.

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

      Объединение селекторов

      Еще одно важное правило, о котором нужно знать. Селекторы стилевых классов можно записать, не отделяя их друг от друга. Например:
      .class1.class2 – выберет те элементы, у которых есть оба этих класса.
      .class1.class3.class8 – выберет элементы, к которым привязаны все три стилевых класса.

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

      Если отделять селекторы друг от друга пробелами, то можно оттянутся до нужного нам элемента. Примеры:
      Table td – выберет все ячейки, лежащие в таблицах
      Ul li a – выберет все ссылки, лежащие в пунктах списков (а пункты списков в свою очередь лежат в самих списках)
      .class1 p – выберет все абзацы с атрибутом class = “class1”
      .class2 p span – выберет все содержимое тегов , лежащее в абзацах с классом class2.

      Вкладывать и комбинировать таким образом можно сколько угодно раз. Примеры:
      #header .logo span:first-letter{} – выберет первую букву в спане логотипа, который расположен в шапке
      .class1.class2:hover{} – определит стиль при наведении мышки для элементов, которые имеют оба стилевых класса.

      Дочерние селекторы

      Если вам нужно задать стили для элементов родителя, которые являются НАПРЯМУЮ дочерними , то нужно прописать это так:
      Ul > li{} – выберет пункты списка, которые вложены в него напрямую, а не лежат в других тегах
      P > a{} – выберет только те ссылки в абзацах, которые лежат непосредственно в них, а не вложены в другие теги (которые, в свою очередь, уже вложены в абзацы)
      Пример:

      Если прописать такой селектор P > a , то применятся ли стили к ссылке в вышеприведенном примере? Нет, потому что она еще вложена в другой тег, то есть не является напрямую дочерней.

      Соседние селекторы

      Последнее, что мы сегодня рассмотрим. Если прописать в css так:
      .class1 + .class4 {} , то этот селектор выберет элемент с атрибутом class = "class4" , и этот элемент должен стоять в HTML-коде сразу же за элементом с классом class1. Только в этом случае все будет работать. Опять же рассмотрим на примере:

      Сработает ли вышеуказанный селектор (.class1 + .class4 {})? Нет, потому что элементы не стоят рядом. Между ними находится тег img . Вот если его удалить, тогда все заработает.

      Итак, мы с вами рассмотрели самые основные и наиболее простые селекторы. Наверняка этих знаний вам хватит, чтобы решить 95% проблем. В следующей статье я опишу некоторые более специфические css селекторы.

      Селекторы атрибутов

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

      Селекторы атрибутов, это те селекторы, в которых в квадратных скобках записывается атрибут, либо атрибут со значением. Несколько примеров, чтобы было понятно:
      * – выбирает все элементы, которые имеют атрибут href с любым значением.
      input – выбирает все input-элементы, у которых есть атрибут disable (все отключенные поля).
      input – выбирает все поля, тип которых password , то есть поля для ввода пароля.
      img – выбирает картинку, у которой задан атрибут src = "/logo.png" .

      Как видите, прописывать css селекторы атрибутов не так уж и сложно. Их самое главное отличие – квадратные скобки, в которых записывается либо просто атрибут, либо атрибут с его точным значением. Но на этом функционал этих селекторов не заканчивается.

      Продвинутые css селекторы атрибутов

      Все нижеперечисленные селекторы чувствительны к регистру.
      Поиск в начале строки
      div – выбирает все div-ы, у которых есть стилевой класс, начинающийся на "block" . Таким образом, будут выбраны, например, такие блоки: "block-head", "block-3", "blocknote" . Главное, чтобы в начале значения было ключевое слово.

      Поиск в конце строки
      A – выбирает все ссылки, у которых адрес заканчивается на.rar . Таким образом, если у вас на сайте можно что-то скачать, то вы можете добавить иконку рядом со всеми ссылками на архивные файлы.

      Поиск подстроки везде в значении
      span – выберет все теги span, у которых в имени класса в любом месте этого имени содержится “art”. Таким образом, будут выбраны, например, спаны с такими классами: party, clart, art-1.

      Поиск префиксов
      p – выберет абзацы со стилевым классом, которые имеют имя, либо точно совпадающее с “first”, либо содержащие префикс first- , с которого начинается имя класса.

      Поиск слов внутри значения
      input – выберет все элементы input, в которых значение атрибута идентификатора содержит в себе слово text . Его отличие от поиска подстроки везде отличается тем, что входить должно именно слово, а не подстрока.

      Последние два варианта редко где применяются и едва ли вам часто пригодятся, но для общего развития все-таки можно о них знать.

      Для чего могут пригодиться селекторы атрибутов

      С помощью подобных селекторов можно выбирать многие html-элемента, не задавая им стилевых классов. В некоторых случаях благодаря такому способу можно сократить код и упростить себе работу. Например, выше я приводил пример с иконкой для архивов. Тут появилась еще одна идея. Например, на своем сайте вы часто ссылаетесь на один другой ресурс (википедию, скажем) и хотите рядом с ссылками на википедию отображать специальную иконку, которой у других ссылок быть не должно.

      Реализовать это можно так:

      A {css-правила}

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

      Css3 селекторы и псевдоклассы

      О новых css3 селекторах, о которых не писал в прошлых статьях.

      Улучшение работы с формами

      Это новые псевдоклассы. В основном все они касаются новых возможностей форм.
      :enabled – псевдокласс выберет все активные поля. То есть те, в которые можно что-то записать или они хотя бы доступны для чтения.
      :disabled – противоположный псевдокласс, выбирает все заблокированные поля. Соответственно, с его помощью вы можете добавить дополнительные стили таким полям.
      :read-only – выбор всех input , которые доступны только для чтения.
      :read-write – выбираются все поля, которые доступны для редактирования.

      Добавление стилей с учетом валидности

      Также появились очень интересные псевдоклассы, с помощью которых вы можете назначить стили в зависимости от валидности или невалидности введенного значения. Раньше это можно было сделать только с помощью JavaScript .
      :valid – выбирает все поля, введенное значение в которых удовлетворяет требованиям. Сами требования обычно задают с помощью атрибута pattern. Также может зависеть от типа поля. Например, поле, в котором пишется адрес электронной почты, будет считаться невалидным, если во введенном значении нет @ .
      :invalid – соответственно, выбирает все невалидные поля, в которых значение не соответствует тому, что ожидается. Например, вы можете сделать цвет текста в таких полях красным:

      Input:invalid{ Color: red; }

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

      Стили для обязательных полей

      Также хотел бы отметить, что соответствующий псевдокласс появился и для обязательных полей.
      :required – выберет элементы, у которых есть данный атрибут. То есть все поля, обязательные к заполнению.
      :optional – противоположный класс, выберет поля, которые являются необязательными.

      Псевдокласс:not

      :not является своего рода антиселектором, который позволяет определить, к каким элементам НЕ ПРИМЕНЯТЬ стили. Пару примеров.
      A:not(:last-child){} – выберет все ссылки на странице, кроме последней.
      .nav:not(li){} – выберет все элементы с классом nav , но это не должны быть пункты списка (li).
      #article p:not(.special:first-child) – выберет все абзацы в блоке article , кроме первого абзаца с классом special.

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

      Вот такой вот нужный иногда псевдокласс, он нужен не только в теории, но и на практике. Ах да, еще же вы можете продолжить составление селектора после:not (). Например:
      Div:not(#header) .wrap – выбирает все дивы c классом wrap , кроме дива с id = "header"

      Это были селекторы, которые появились в CSS3.

      Приоритет css селекторов

      Чтобы определить, какие стили являются более приоритетными, пользуйтесь простыми правилами:
      Идентификатор является самым приоритетным селектором. Если у элемента есть стилевой класс и id , и в обоих назначены одинаковые свойства с разными значениями, то будет выполнены те стили, которые записаны для идентификатор.

      Класс является более приоритетным селектором, чем селектор тега (p, table, ul). Псевдокласс имеет такой же вес, что и простой класс. p:first-line приоритетнее, чем.firstline , потому что во втором селекторе просто класс, а в первом — селектор тега + псевдокласс.

      Еще одно полезное правило — чем конкретнее селектор, тем более приоритетными являются стили для него. Например, между body и p битву выигрывает абзац, поскольку это более конкретный селектор, чем body (потому что это вся страница, то есть не очень конкретно). Table p , в свою очередь, конкретнее, чем просто p . В общем, просто знайте о таких правилах.

      Итог

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

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

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

      • Селектор - это HTML-тег, к которому будет применяться стиль. Это может быть любой тег, например,

        или и т.д.
      • Свойство - это тип атрибута HTML-тега. Проще говоря, все атрибуты в HTML преобразуются в свойства CSS. Ими могут быть цвета, границы, отступы и т.д.
      • Значение - задается свойству. Например, свойство цвета может иметь значение green, #008000 и т.д.
      • Синтаксис селекторов в CSS следующий:

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

        Пример. Вы можете задать границу таблицы следующим образом:

        Table { border: 2px solid #FF8C00; }

        Здесь синтаксис селектора такой: table - это селектор, а border - свойство, а 2px solid #FF8C00 - значение этого свойства.

        Вы можете задавать селекторы различными способами, как Вам будет удобно. Ниже представлены виды селекторов.>

        Стандартные селекторы

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

        H1 { color: #8B4513; }

        Универсальные селекторы

        Вместо того, чтобы выбирать элементы определенного типа, универсальный селектор вполне просто соответствует имени любого типа элемента:

        * { color: #808080; }

        Это правило отображает в нашем документе содержимое каждого элемента в сером цвете.

        Селекторы потомков или вложенные селекторы

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

          .

          Ul em { color: #CD5C5C; }

          Селекторы класса

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

          Blue { color: #0000FF; }

          class="blue" . Вы можете сделать селектор класса немного более конкретным. Например:

          H1.blue { color: #0000FF; }

          с атрибутом class="blue" .

          Вы можете применить к одному элементу несколько селекторов класса. Рассмотрим следующий пример:

          Этот абзац будет оформлен классами center и bold .

          ID селекторы

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

          #blue { color: #0000FF; }

          Это правило отображает в нашем документе содержимое в синем цвете для каждого элемента с атрибутом id="blue" . Вы можете сделать id селектор немного более конкретным. Например:

          H1#blue { color: #0000FF; }

          Это правило отображает содержимое в синем цвете только для элементов

          с атрибутом id="blue" .

          Истинная мощность id селекторов - это когда они используются в качестве основы для селекторов-потомков, например:

          #blue h2 { color: #0000FF; }

          В этом примере все заголовки второго уровня будут отображаться в синем цвете, когда они будут находиться в тегах с атрибутом id="blue" .

          Дочерние селекторы

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

          Body > p { color: #0000FF; }

          Это правило будет отображать все абзацы в синем цвете, если они являются прямым дочерним элементом . Другие абзацы, помещенные внутри других элементов типа

          или

        Соседние селекторы

        HTML-элементы, идущие друг за другом, называются соседними. Рассмотрим следующий пример:

        Strong + em { color: #0000FF; }

        Это правило будет отображать содержимое тега в синем цвете, если он идет после элемента . Другие теги , идущие не после тега , не будут иметь никакого эффекта этого правила.

        Селекторы атрибутов

        Вы также можете применять стили к HTML-элементам с определенными атрибутами. Ниже правило стиля будет соответствовать всем input элементам, имеющим атрибут type со значением text:

        Input { color: #0000FF; }

        Преимущество использования селекторов атрибутов заключается в том, что элемент не изменяется, а цвет применяется только к нужным текстовым полям.

        Для селектора атрибутов применяются следующие правила:

        • p - выбирает все элементы абзаца с атрибутом lang.
        • p - выбирает все элементы абзаца, где атрибут lang имеет точное значение «ru».
        • p - выбирает все элементы абзаца, где атрибут lang содержит слово «ru».
        • p - выбирает все элементы абзаца, где атрибут lang содержит значения, которые являются точными «ru» или начинаются с «ru».

        Несколько правил стиля

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

        H1 { color: #00CED1; letter-spacing: .2em; text-transform: lowercase; margin-bottom: 2em; font-weight: 700; }

        Все пары свойств и значений разделяются точкой с запятой (;). Вы можете сохранить их в одной строке или нескольких строках. Для лучшей читаемости сохраняйте их в отдельных строках.

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

        Группировка селекторов в CSS

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

        H1, h2, h3 { color: #00CED1; letter-spacing: .2em; text-transform: lowercase; margin-bottom: 2em; font-weight: 700; }

        Это правило стиля будет применено к элементам h1, h2 и h3. Порядок списка при группировки селекторов не имеет значения. Все элементы в селекторе будут иметь соответствующие объявления, применяемые к ним.

        Вы можете группировать различные id селектора вместе, как показано ниже:

        #header, #content, #footer { position: absolute; width: 300px; left: 250px; }

        Язык описания внешнего вида документа CSS постоянно развивается. Со временем растут не только его мощность и функциональность, повышаются также гибкость и удобство использования.

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

        • для тегов;
        • для классов;
        • для ID;
        • универсальные;
        • атрибутов;
        • для взаимодействия с псевдоклассами;
        • для управления псевдоэлементами.

        Синтаксис прост. Чтобы научиться использовать достаточно прочитать о них. Какой вариант лучше выбрать для контроля контента в вашем случае? Попробуем разобраться.

        Селекторы тэгов

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

        . Для управления ею в CSS нужно использовать селектор header {}.

        Достоинства - простота использования, универсальность.

        Недостатки - полное отсутствие гибкости. В вышеописанном примере будут выбраны сразу все теги header. А что если нужно управлять только одним?

        Селекторы класса

        Самый распространенный вариант. Предназначен для управления тегами с атрибутом class. Предположим, в вашем коде есть три блока

        , каждому из которых нужно задать определенный цвет. Как это сделать? Стандартные CSS selectors по тегам не подойдут, они указывают параметры для всех блоков сразу. Выход прост. Назначьте элементам класс. Например, первый div получил class=’red’, второй - class=’blue’, третий - class=’green’. Теперь их можно выбрать, используя таблицы CSS.

        Синтаксис таков: указываем точку («.»), после которой пишем название класса. Чтобы управлять первым блоком, используем конструкцию.red. Вторым - .blue и так далее.

        Важно! Рекомендуется использовать понятные значения атрибута class. Дурным тоном считается использование транслита (например, krasiviy-blok) или случайных комбинаций букв/цифр (ojfh834871). В таком коде вы обязательно запутаетесь, не говоря уже о том, с какими трудностями придется столкнуться тем, кто будет заниматься проектом после вас. Оптимальный вариант - использовать какую-нибудь методологию, вроде БЭМ.

        Достоинства - довольно высокая гибкость.

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

        Селектор по ID

        Насчет этого варианта мнения верстальщиков и программистов неоднозначны. Некоторые учебники CSS вообще не рекомендуют использовать ID, поскольку при неаккуратном применении они могут вызвать проблемы с наследованием. Однако многие специалисты активно расставляют их по всей разметке. Решать вам. Синтаксис таков: символ решетки (« # »), затем имя блока. Например, #red.

        ID отличается от класса по нескольким параметрам. Во-первых, на странице не может быть двух одинаковых ID. Им назначаются уникальные имена. Во-вторых, такой селектор обладает более высоким приоритетом. Это значит, что если вы зададите блоку класс red и укажете в таблицах CSS красный а затем назначите ему же id blue и укажете синий цвет, блок станет синим.

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

        Недостатки - легко запутаться в большом количестве ID и class.

        Важно! Если вы пользуетесь методологией БЭМ (или ее аналогами), ID вам, в общем-то, не нужны. Такая техника верстки подразумевает использование уникальных классов, что гораздо удобнее.

        Универсальный селектор

        Синтаксис: знак зведочки («*») и фигурные скобки, т. е. * {}.

        Используется для назначения определенных атрибутов сразу всем элементам страницы. Когда это может пригодиться? Например, если вы хотите задать странице свойство box-sizing: border-box. Может использоваться не только для управления всеми компонентами документа, но и для контроля всеми дочерними элементами определенного блока, например, div *{}.

        Достоинства - можно управлять большим количеством элементов одновременно.

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

        По атрибутам

        Дают возможность управлять элементом с конкретным атрибутом. Например, у вас есть несколько тегов input с разным атрибутом type. Один из них - text, второй - password, третий - number. Конечно, можно задать каждому классы или ID, но это не всегда удобно. CSS selectors по атрибутам дают возможность указать значения для определенных тегов с максимальной точностью. Например, вот так:

        input{}

        Этот селектор атрибутов выберет все input с типом text.

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

        Представим, что на вашей странице есть input с атрибутом placeholder=“Введите имя“ и input placeholder=“Введите пароль“. Их также можно выбрать с помощью селектора! Для этого используется следующая конструкция:

        input{} или input

        Возможна более гибкая работа с атрибутами. Допустим, у вас есть несколько тегов с похожими атрибутами title (скажем, «каспийский» и «каспийская»). Чтобы выбрать оба, используем следующие селекторы:

        CSS выберет все элементы, в тайтле которых имеются символы «каспийск», т. е. и «каспийский», и «каспийская».

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

        или заканчиваются ими:

        {}.

        Достоинства - максимальная гибкость. Можно выбирать любые существующие элементы страницы без возни с классами.

        Недостатки - используется относительно редко, только в специфических случаях. Многие верстальщики предпочитают методологии, поскольку указать класс бывает проще, чем расставлять многочисленные и знаки «равно». Вдобавок, эти селекторы не работают в Internet Explorer версии 7 и ниже. Впрочем, кому сейчас нужны старые Internet Explorer?

        Селекторы псевдоклассов

        Псевдокласс обозначает состояние элемента. Например, :hover - то, что происходит с частью страницы при наведении курсора, :visited - посещенная ссылка. Сюда же входят элементы вроде:first-child и:last-child.

        Этот тип селекторов активно применяется в современной верстке, поскольку благодаря ему можно сделать страницу «живой» без применения JavaScript. Например, вы хотите сделать так, чтобы при наведении на кнопку с классом btn ее цвет менялся. Для этого используем следующую конструкцию:

        Btn:hover {

        Background-color: red;

        Для красоты можно указать в основных свойствах этой кнопки свойство transition, например, в 0,5s - в таком случае кнопка будет краснеть не мгновенно, а в течение полусекунды.

        Достоинства - активно используются для «оживления» страниц. Просты в применении.

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

        Селекторы псевдоэлементов

        «Псевдоэлементы» - это те части страницы, которых нет в HTML, но ими все равно можно управлять. Ничего не поняли? Все проще, чем кажется. Например, вы хотите сделать первую букву в строке большой и красной, оставив прочий текст маленьким и черным. Конечно, можно заключить эту букву в span с определенным классом, но это долго и скучно. Гораздо проще выделить весь абзац и использовать псевдоэлемент::first-letter. Он дает возможность управлять внешним видом первой буквы.

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

        Достоинства - дают возможность гибко настраивать внешний вид страницы.

        Недостатки - новички в них часто путаются. Многие селекторы этого типа работают только в определенных браузерах.

        Подведем итог

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

        Последнее обновление: 21.04.2016

        Определение стиля начинается с селектора. Например:

        Div{ width:50px; /* ширина */ height:50px; /* высота */ background-color:red; /* цвет фона */ margin: 10px; /* отступ от других элементов */ }

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

        на веб-странице:

        Селекторы CSS

        Селекторы CSS

        Здесь на странице 3 элемента div, и все они будут стилизованы:

        Классы

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

        Для определения селектора класса в CSS перед названием класса ставится точка:

        RedBlock{ background-color:red; }

        Название класса может быть произвольным. Например, в данном случае название класса - "redBlock". Однако при этом в имени класса разрешается использовать буквы, числа, дефисы и знаки подчеркивания, причем начинать название класса должно обязательно с буквы.

        Также стоит учитывать регистр имен: названия "article" и "ARTICLE" будут представлять разные классы.

        После определения класса мы можем его применить к элементу с помощью атрибута class . Например:

        Определим и используем несколько классов:

        Классы CSS

        Классы CSS

        Идентификаторы

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

        Определение стилей для идентификаторов аналогично определению классов, только вместо точки ставится символ решетки #:

        Идентификаторы CSS

        Основное содержимое

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

        Универсальный селектор

        Кроме селекторов тегов, классов и идентификаторов в css также есть так называемый универсальный селектор , который представляет знак звездочки (*). Он применяет стили ко всем элементам на html-странице:

        *{ background-color: red; }

        Стилизация группы селекторов

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

        Селекторы CSS

        CSS3

        Селекторы

        Группа селекторов

        Некоторый текст...

        Группа селекторов может содержать как селекторы тегов, так и селекторы классов и идентификаторов, например:

        H1, #header, .redBlock{ color: red; }