Яндекс.Метрика

Дизайн-журнал №1. Актуальная информация для дизайнеров, веб дизайнеров, программистов и разработчиков сайтов.

Знакомство со структурным селектором CSS3 :first-of-type

12 августа 2014 | Опубликовано в css | 2 Комментариев »

Как хорошо что в CSS3 добавились новые селекторы, позволяющие обращаться к определенным элементам, не используя классы, идентификаторы или другие свойства элемента! В этом уроке мы расскажем о селекторе :first-of-type.

 

 


Cелектор :first-of-type обратится к первому элементу определенного типа, например, в отрывке кода ниже стиль задается для первого h2 на веб-странице.

h2:first-of-type {
    /* объявление стилей */
}

Cелектор :first-of-type также равен селектору :nth-of-type(1), так что мы можем обратиться не только к первому элементу определенного типа, но и ко второму, третьему и так далее. В следующем отрывке кода мы обратимся ко второму элементу h2 на веб-странице.

h2:nth-of-type(2) {
    /* объявление стилей */
} 

Сравнение селекторов :first-of-type и :first-child 

Может показаться, что эти селекторы делают одно и то же, но это не так. Давайте рассмотрим следующий пример.

К примеру, у нас есть пять элементов p в одном блоке, следующим образом:

<div>
    <p>Pragraph 1</p>
    <p>Pragraph 2</p>
    <p>Pragraph 3</p>
    <p>Pragraph 4</p>
    <p>Pragraph 5</p>
</div>

Теперь мы обратимся к первому элементу p, используя селектор :first-child.

p:first-child {
    padding: 5px 10px;
    border-radius: 2px;
    background: #8960a7;
    color: #fff;
    border: 1px solid #5b456a;
} 

И теперь, как мы и предполагали, мы успешно обратились к первому элементу p.

Демонстрация работы селектора :first-child

Однако, если мы добавим элемент другого типа до первого элемента p, например, элемент h1, как в отрывке кода ниже:

<div>
    <h1>Heading 1</h1>
    <p>Pragraph 1</p>
    <p>Pragraph 2</p>
    <p>Pragraph 3</p>
    <p>Pragraph 4</p>
    <p>Pragraph 5</p>
</div> 

То мы обратимся не к первому элементу p, так как первый вложенный элемент в блоке теперь не p, а h1.

Так что в этой ситуации селектор :first-of-type решит проблему.

p:first-of-type {
    padding: 5px 10px;
    border-radius: 2px;
    background: #a8b700;
    color: #fff;
    border: 1px solid #597500;
}

Демонстрация работы селектора :first-of-type

Селектор последнего элемента 

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

У двух селекторов, о которых мы рассказали выше, есть противоположные селекторы:  :last-child и :last-of-type. Работают они так же, как и два предыдущих, за исключением того, что они обращаются к последним элементам.

Например, в отрывке кода ниже мы обратимся к последнему элементу p в блоке.

p:last-child {
    padding: 5px 10px;
    border-radius: 2px;
    background: #8960a7;
    color: #fff;
    border: 1px solid #5b456a;
} 

Демонстрация работы селектора :last-child

А в этом отрывке кода мы обратимся к последнему элементу p в такой же ситуации, как мы описывали выше, на этот раз сразу за <p> расположен другой элемент.

p:last-of-type {
    padding: 5px 10px;
    border-radius: 2px;
    background: #a8b700;
    color: #fff;
    border: 1px solid #597500;
} 

Демонстрация работы селектора :last-of-type

Библиотека JavaScript Selectivizr 

Как и другие новые возможности в CSS3, эти селекторы не поддерживаются старыми версиями браузеров, в основном браузером Internet Explorer версий с 6 до 8, кроме селектора :first-child, так как он был добавлен, начиная с CSS версии 2.1. Близкий к нему селектор :last-child был добавлен только в CSS версии 3.

Так что, если упомянутые нами селекторы действительно нужны на Вашем сайте, Вы можете воспользоваться библиотекой JavaScript Selectivizr, чтобы воспроизвести функциональность селекторов CSS3.

Selectivizr для работы нужны другие библиотеки JavaScript, такие как jQuery, Dojo, Prototype и MooTools, и из таблицы сравнения на официальном сайте видно, что MooTools может работать со всеми селекторами.

Так что давайте включим эту библиотеку вместе с Selectivizr следующим образом:

<!--[если браузер IE 8]> 
<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript" src="selectivizr.js"></script>
<![конец условия]--> 

Комментарий с условием выше гарантирует, что эти библиотеки будут загружены только в браузере Internet Explorer версии 8 и ниже.

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

Демонстрация работыСкачать исходный код

Автор урока Thoriq Firdaus

Перевод — Дежурка

Смотрите также:




Комментарии

  1. SelenIT
    Thumb up Thumb down +2

    > В следующем отрывке кода мы обратимся ко второму элементу h2 на веб-странице.

    На самом деле — ко всем элементам h2, являющимся вторыми по счету h2 в своем родителе. Если на странице несколько секций с одним h2 в каждой, напрмер, h2:nth-of-type (2) ничего не выберет.