Псевдоэлементы 1
:first-of-type
и 1
:last-child
1 | :first-of-type |
1 | :last-child |
Псевдоэлемент
служит для выборки дочернего элемента определенного типа.
1 :first-of-type
Можно сказать, что псевдоэлемент
является частным случаем псевдоэлемента 1
:first-of-type
. Если псевдоэлемент 1
:first-child
выполняет выборку первого дочернего элемента вне зависимости от его типа, то псевдоэлемент 1
:first-child
осуществляет выборку первого дочернего элемента только указанного типа (если этот элемент отвечает заданному условию - типу элемента).1
:first-of-type
Аналогично работает псевдоэлемент
, только применяется к последнему дочернему элементу определенного типа. Более общим случаем является псевдоэлемент 1
:last-of-type
.1
:last-child
Псевдоэлементы
, 1
:last-child
, 1
:nth-child()
НЕ ПОДДЕРЖИВАЮТСЯ IE8.1
:first-of-type
Пример:
.fofo p:first-of-type{}
… в примере тег
является указанием типа дочернего элемента. То есть, будет выбран первый дочерний элемент типа 1
p
, родителем которого является элемент с классом 1
p
.1
.fofo
.wowo p:last-of-child{}
Выбрать последний дочерний элемент типа
, родителем которого является элемент с классом 1
p
.1
.wowo
Рабочий пример приведен ниже. Два одинаковых списка. К первому применен псевдоэлемент
, ко второму - псевдоэлемент 1
:first-of-type
.1
:first-child
В первом случае выбран первый параграф списка, так как в выражении указано выбрать именно первый дочерний элемент списка, являющийся параграфом
:1
p
.fofo p:first-of-type{
font-weight: bold;
color: #222;
font-variant: small-caps;
text-shadow: 1px 1px 1px #999;
}
Во втором случае к списку применен псевдоэлемент
и в этом случае был отобран первый элемент указанного списка - ссылка 1
:first-child
! А то, что этот элемент является ссылкой, а не параграфом 1
a
, роли не играет - тип элемента не был указан:1
p
.wowo :first-child{
font-size: 14px;
font-style: italic;
color: green;
font-weight: bold;
}
Псевдоэлемент
и его общий случай 1
:last-of-child
разбирать смысла нет, так как выборка элемента из HTML-документа осуществляется аналогично с тем лишь различием, что применяется не к первому, а последнему дочернему элементу.1
:last-child
Псевдоэлемент 1
:nth-of-type
1 | :nth-of-type |
Псевдоэлемент
является частным случаем псевдоэлемента 1
:nth-of-type
. В случае с 1
:nth-child
выборка элементов производится не только по порядковому номеру, но и по типу элемента.1
:nth-of-type
Например,
и 1
p img:nth-of-type(odd){float: left}
делает выборку четных и нечетных порядковых номеров только элементов 1
p img:nth-of-type(even){float: right}
.1
img
Отбираются все дочерние по отношению к
элементы типа 1
.nthOfType
, нечетные по порядковому номеру. И применяются к нему правила - смещение влево, 1
img
и тень справа:1
margin-right
.nthOfType img:nth-of-type(odd){
float: left;
margin: 0 10px 0 0;
box-shadow: 3px 3px 3px rgba(0,0,0,.65);
}
Отбираются все дочерние по отношению к
элементы типа 1
.nthOfType
, четные по порядковому номеру. И применяются к нему правила - смещение право, 1
img
и тень слева:1
margin-left
.nthOfType img:nth-of-type(even){
float: right;
margin: 0 0 0 10px;
box-shadow: -3px 3px 3px rgba(0,0,0,.65);
}
Псевдокласс :not
Псевдокласс
(псевдокласс отрицания) - выбрать все элементы 1
:not
, у которых НЕТ класса 1
p
и применить к ним следующие свойства: цвет и тень. Другими словами, выборка элементов с помощью псевдокласса 1
.classy
производится от обратного - “выбрать все элементы, которые НЕ ОТВЕЧАЮТ следующему условию.”1
:not
Этот псевдокласс является антагонистом обычного условия - “если удовлетворяет условию, то примени такое-то свойство”:
<p class="classy">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</p>
.dodo p:not(.classy){
color: blue;
text-shadow: 1px 1px 1px rgba(0,0,255,.2);
}
На этом все.