Skip to content

CSS selectors

garevna edited this page May 20, 2019 · 12 revisions

ico25 CSS

Каскадные таблицы стилей (CSS) используются для описания внешнего вида документа, написанного языком разметки

Объявление стиля состоит из двух частей:

  • селектора
  • блока объявления, заключенного в фигурные скобки
Селектор Блок объявления стиля
Атрибут : Значение ;
div {
color : green ;
font-size : 16px ;
}

В блоке объявления перечисляются пары: имя атрибута: значение атрибута:

color: blue;

здесь color - имя атрибута, blue - значение

warn-25 значение отделяется от имени двоеточием

warn-25 каждая пара атрибут: значение заканчивается точкой с запятой

В примере выше атрибут color определяет цвет текста элемента


cap-25

Определим стиль всех заголовков h2 на странице:

h2 {
    font-size: 28px;
    line-height: 32px;
}

Здесь установлен размер шрифта ( font-size ) и высота строки ( line-height ) для заголовков h2


ico25 Способы подключения стилей

ico20 внешняя таблица стилей

подлинковывается к странице тегом <link>

Атрибут rel="stylesheet" указывать обязательно

<link media="all" rel="stylesheet" href="css/main.css">

ico20 внутренние таблицы стилей

Вставляются на страницу тегом <style>

<style>
    h2 {
        font-size: 28px;
        line-height: 32px;
    }
</style>

ico20 встроенные (инлайновые) стили

Добавляются элементу с помощью атрибута style

<h2 style="font-size: 32px;">Heading 2</h2>

ico25 Селекторы

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

Селекторы могут быть:

cap-25 пример

<nav class="main-menu">
    <a href="#">About</a>
    <a href="#">Team</a>
    <a href="#">Contacts</a>
</nav>
.main-menu {
   background-color: black;
   font-family: Arial;
   font-size: 16px;
}
.main-menu a {
   text-decoration: none;
   color: white;
}

Здесь для элемента с классом main-menu установлен цвет фона ( background-color: black ), шрифт ( font-family: Arial ) и размер шрифта ( font-size: 16px )

Для дочерних элементов <a> элемента с классом main-menu отменяется подчеркивание текста ( text-decoration: none ) и устанавливается цвет текста ( color: white ) и размер шрифта ( font-size )


ico20 теговый селектор

указывает на все элементы с заданным именем тега

h1 {
    font-family: Arial;
    font-size: 18px;
    color: darkblue;
}

ico20 селектор класса

указывает на все элементы с заданным именем класса

.main-menu {
    display: inline-block;
    background-color: black;
    padding: 5px 10px;
    color: white;
}

ico20 идентификаторный селектор

позволяет задавать стили для элемента с уникальным id

#container {
    width: 100%;
    height: 300px;
    overflow: auto;
    box-sizing: border-box;
}

ico20 селектор потомка

указывает на элементы, расположенные внутри элемента-контейнера

.main-menu a {
    border: solid 1px gray;
}

здесь устанавливается сплошная серая рамка ( border ) толщиной 1px для всех элементов <a>, находящихся внутри элементов с классом main-menu на любом уровне вложенности


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

cap-25

.wrapper {
    background-color: black;
}
article > h3 { color: yellow; }
.wrapper p { color: gray; }
.wrapper > p { color: red; }
<section class="wrapper">
    <p>Hello!</p>
    <article>
       <h3>Grid Layout</h3>
       <p>The CSS Grid Layout Module offers a grid-based layout system, 
       with rows and columns, making it easier to design web pages 
       without having to use floats and positioning</p>
    </article>
    <p>Read more...</p>
</section>

Здесь текст Hello! и Read more... будет красным, а внутри элемента <article> текст будет серым, а заголовок - желтым


указывают на элементы, имеющие общего родителя

  • p + p - смежные
  • p ~ p - родственные

cap-25 Смежные ( + ) и родственные ( ~ ) селекторы

<section class="wrapper">
    <p>Hello!</p>
    <p>Welcome</p>
    <p>Where are you from ?</p>
    <article>
       <h3>Grid Layout</h3>
       <p>Flex</p>
    </article>
    <p>Read more...</p>
</section>
.wrapper {
    background-color: black;
}
.wrapper p {
    color: gray;
}
.wrapper > p {
    color: blue;
}
.wrapper p + p {
    color: yellow;
}
.wrapper p + p + p {
    color: green;
}
p ~ p {
    font-style: italic;
}

Здесь текст "Hello!" и "Read more..." будет синим, "Welcome" - желтым, "Where are you from ?" - зеленым

Текст "Grid Layout" будет серым, а "Flex" - желтым

Стиль italic будет у текста "Welcome", "Where are you from ?", "Flex" и "Read more..."


ico20 селектор атрибута

позволяет задавать стили к элементам на основе имени атрибута или значения атрибута

input[type=”text”] {
    font-size: 28px;
}

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

Псевдоклассы — это классы, фактически не прикрепленные к HTML-тегам

Они позволяют применить CSS-правила к элементам при совершении события или подчиняющимся определенному правилу

Примеры псевдоклассов:

  • :link — не посещенная ссылка
  • :visited — посещенная ссылка
  • :hover — любой элемент, по которому проводят курсором мыши
  • :focus — интерактивный элемент, к которому перешли с помощью клавиатуры или активировали посредством мыши
  • :disabled — заблокированные поля форм, т.е., находящиеся в неактивном состоянии
  • :not(селектор) — элементы, которые не содержат указанный селектор — класс, идентификатор, название или тип поля формы — :not([type="submit"])
  • :checked — выделенные (выбранные пользователем) элементы формы

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

  Структурные псевдоклассы отбирают дочерние элементы в соответствии с параметром

  • :nth-child(odd) — нечётные дочерние элементы
  • :nth-child(even) — чётные дочерние элементы
  • :nth-child(3n) — каждый третий элемент среди дочерних
  • :nth-child(n+2) — выбирает все элементы, начиная со второго
  • :nth-child(3) — выбирает третий дочерний элемент
  • :first-child — позволяет оформить только самый первый дочерний элемент тега
  • :last-child — позволяет форматировать последний дочерний элемент тега
  • :only-child — выбирает элемент, являющийся единственным дочерним элементом
  • :empty — выбирает элементы, у которых нет дочерних элементов

cap-25

<html>
  <head>
    <style>
      div {
         width: 50px;
         height: 50px;
      }
      div:nth-child(odd) {
         background-color: #00999990;
      }
      div:nth-child(even) {
         background-color: #99990090;
      }
    </style>
  </head>
  <body>
    <figure>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </figure>
  </body>
</html>

____________________________________________________________________________________________________ 

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

 

  • ::first-letter — выбирает первую букву каждого абзаца;
  • ::first-line — выбирает первую строку текста элемента;
  • ::before — вставляет генерируемое содержимое перед элементом;
  • ::after — добавляет генерируемое содержимое после элемента.  
p::before {
    content: 'read-this';
    display: block;
} 

ico25 Комбинирование и группировка селекторов

Для более точного отбора элементов для форматирования можно использовать комбинации селекторов:

a[href][title] {
    color: red;
}

Один и тот же стиль можно одновременно применить к нескольким элементам

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

p,
span {
    color: black;
}

ico25 Наследование

Наследование - механизм, с помощью которого определенные свойства передаются от предка (родителя) к его потомкам

Наследуются свойства, относящихся к текстовому содержимому страницы, таких как color, font, letter-spacing, line-height, list-style, text-align, text-indent, text-transform...  

С помощью ключевого слова inherit можно принудить элемент наследовать любое значение свойства родительского элемента

Это работает даже для тех свойств, которые не наследуются по умолчанию


ico25 Каскад ( "вес" селекторов )

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

Существует три критерия, которые определяют порядок применения свойств:

  • правило !important ( самый сильный приоритет ):
h3 {
   font-size: 20px !important;
}
  • специфичность ( "вес" селектора):
/* tag name - 1 */
p {
   font-size: 20px;  
}

/* class - 10 */
.content {
   font-size: 22px;  
}

/* id - 100 */
#content {
   font-size: 24px;  
}
  • порядок:
p {
   font-size: 20px;  
}

p {
   font-size: 22px;  
}

© Irina H.Fylyppova 2019



Занятие 1


Занятие 2


Занятие 3


Занятие 4


Занятие 5


Занятие 6


Занятие 7


Занятие 8


Дополнительно

Clone this wiki locally