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

:first-child и:last-child

По названию вы могли догадаться, что псевдоклассы:first-child и:last-child выбирают первый и последний дочерний элемент в узле (элементе). Как и с другими псевдоклассами, :first-child и:last-child оказывают минимальное стороннее воздействие при использовании простых селекторов.

Рассмотрим HTML и CSS ниже:

:first-child and:last-child

List of fruits

  • Apples
  • Bananas
  • Blueberries
  • Oranges
  • Strawberries

< ! DOCTYPE html >

< html lang = "en-US" >

< head >

< meta charset = "utf-8" >

< title > : first - child and : last - child < / title >

< / head >

< body >

< h2 > List of fruits < / h2 >

< ul >

< li > Apples < / li >

< li > Bananas < / li >

< li > Blueberries < / li >

< li > Oranges < / li >

< li > Strawberries < / li >

< / ul >

< / body >

< / html >

На скриншоте ниже показан результат.

Заголовок h2 и первый li окрасились в розовый, так как:first-child не привязан к конкретным элементам. Тег h2 – первый ребенок тега body, а li – первый дочерний элемент ul. Но почему оставшиеся элементы li зеленые? Потому что:last-child тоже не привязан к конкретному элементу, а ul является последним дочерним элементом в теге body. По сути, в стилях выше мы прописали *:first-child и *:last-child.

Если добавить к:first-child и:last-child простой селектор, они станут конкретнее. Давайте ограничим нашу выборку только элементами списка. Замените:first-child на li:first-child и:last-child на li:last-child. На скриншоте ниже показан результат.

:nth-child() и:nth-last-child()

Уметь выбирать первый и последний дочерние элементы в документе неплохо. А что если нужно выбрать четные или нечетные элементы? Может, нам нужно выбрать шестой элемент в дереве или применить стили к каждому третьему дочернему элементу. Здесь нам помогут псевдоклассы:nth-child() и:nth-last-child().

Как и:not, :nth-child() и:nth-last-child() также являются функциональными псевдоклассами. Они принимают один аргумент, который должен быть:

ключевым словом odd;

ключевым словом even;

целочисленным значением типа 2 или 8;

аргументом в форме Аn+B , где А – шаг, B – смещение, а n – переменная с положительным целочисленным числом.

Последний аргумент немного сложнее остальных. Разберем его чуть позже.

Чем отличаются:nth-child() и:nth-last-child()? Они отличаются точкой отсчета: :nth-child() считает вперед, а:nth-last-child() – назад. CSS индексы используют натуральные числа и начинаются с 1, а не с 0.

С помощью псевдоклассов:nth-child() и:nth-last-child() удобно создавать чередующиеся узоры. Полосатая таблица – идеальный пример использования. CSS ниже присваивает четным строкам в таблице светлый синевато-серый фон, результат можно посмотреть на скриншоте ниже:

tr:nth-child(even) { background: rgba(96, 125, 139, 0.1); }

tr : nth - child (even ) {

background : rgba (96 , 125 , 139 , 0.1 ) ;

Если переключиться с:nth-child на:nth-last-child, полосы инвертируются, так как отсчет начнется с низа. Смотрите скриншот ниже.

А хотите что-нибудь посложнее, с более сложными аргументами? Давайте создадим документ с 20 элементами, как показано ниже.

С помощью:nth-child() и:nth-last-child() можно выбрать один определенный элемент. Можно выбрать все дочерние элементы после заданной позиции, или можно выбрать элементы с кратностью со смещением. Давайте изменим фон шестого элемента:

Item:nth-child(6) { background: #e91e63; }

Еще раз, А – шаг. Это множитель для n, начинающийся с 1. То есть если А = 3, то 3n выберет третий, шестой и девятый элементы и т.д. Именно это можно наблюдать на скриншоте ниже.

Здесь уже все немного интереснее. С помощью:nth-child() и:nth-last-child() можно выбрать все элементы после заданной точки. Давайте выберем все элементы кроме первых семи:

Item:nth-child(n+8) { background: #e91e63; }

Item : nth - child (n + 8 ) {

background : #e91e63;

Здесь шаг не задан. Как результат, n+8 выбирает все элементы n, начиная с восьмого. Смотрите скриншот ниже.

Замечание: отрицательное смещение

Отрицательные значения и диапазоны также валидны. Запись типа:nth-child(-n+8) инвертирует выборку и выбирает первые восемь элементов.

С помощью смещения и шага можно выбрать каждый третий элемент, начиная с пятого:

Item:nth-child(3n+5) { background: #e91e63; }

Item : nth - child (3n + 5 ) {

background : #e91e63;

Результат.

only-child

Псевдокласс only-child выбирает элемент только в том случае, если он единственный дочерний элемент. Ниже представлено два маркированных списка. В первом один элемент, во втором три:

  • Apple
  • Orange
  • Banana
  • Raspberry

< ul >

< li > Apple < / li >

< / ul >

< ul >

< li > Orange < / li >

< li > Banana < / li >

< li > Raspberry < / li >

< / ul >

Селектор li:only-child{color: #9c27b0;} выберет

  • Apple
  • , так как это единственный дочерний элемент первого списка. Элементы второго списка в выборку не попадают, так как там три смежных элемента. Результат показан ниже.

    :empty

    С помощью псевдокласса:empty можно выбрать элементы, у которых нет дочерних элементов. Псевдокласс:empty говорит сам за себя (empty от англ. «пустой»). Чтобы попасть в выборку:empty, элемент должен быть абсолютно пустым, не должно быть даже пробелов. То есть попадает в выборку, а нет.

    Иногда WYSIWYG редакторы вставляют пустые теги p в ваш контент. С помощью:empty и:not можно делать так, чтобы к этим элементам не применялись стили. Например, p:not(:empty).

    Выбор элементов определенного типа по их индексу

    Описанные в предыдущем разделе псевдоклассы выбирают элементы, если те занимают определенную позицию в дереве документа. Например, p:nth-last-child(2) выберет все теги p перед последним внутри родительского блока.

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

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

    nth-last-of-type()

    Грань между ними и дочерними индексными псевдоклассами тонка. Запись p:nth-child(5) находит только пятый тег p, а запись p:nth-of-type(5) находит все теги p и вычленяет среди них пятый.

    Давайте создадим другой документ. В нем также 20 элементов, только некоторые — это теги p, а другие – div. Теги p со скругленными углами, смотрите скриншот ниже.

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

    Поддерживаемые форматы изображений:
    3FR, AAI, AI , ART, ARW, AVS, BGR, BGRA, BIE, BMP , CAL, CALS, CANVAS, CIN, CMYK, CMYKA, CR2 (Canon Digital Camera Raw Image Format), CRW , CUR, DCM, DCR , DCX, DDS, DIB, DJVU , DNG, DPX, EPDF, EPS , EPSF, EPSI, EPT, ERF, EXR, FAX, FITS, FRACTAL, FTS, G3, GIF , GIF87, GRAY, GROUP4, HDR , HRZ, ICB, ICO , ICON, IIQ, JBG, JBIG, JNG, JNX, JP2 , JPE, JPEG , JPG , JSON, K25 (Kodak Digital Camera Raw Image Format), KDC , MAC, MAT, MEF, MIFF, MNG, MONO, MPC, MRW, MTV, NEF (Nikon Digital SLR Camera Raw Image File), NRW, ORF (Olympus Digital Camera Raw Image File), OTB, OTF, PAL, PALM, PAM, PBM, PCD, PCDS, PCT, PCX, PDB, PDF , PDFA, PEF, PES, PFM, PGM, PICON, PICT, PIX, PJPEG, PLASMA, PNG , PNG00, PNG8, PNG24, PNG32, PNG48, PNG64, PNM, PS, PSB, PSD , PTIF, PWP, R, RAF, RAS, RAW , RGB, RGBA, RGBO, RGF, RLA, RLE, RMF (Raw Media Format), RW2 (Panasonic Lumix Raw Image), SFW, SGI, SIX, SIXEL, SR2 (Sony Raw Format 2), SRF , STEGANO, SUN, TGA , TIF , TIFF , TIFF64, TILE, UYVY, VDA, VICAR, VIFF, VIPS, VST, WBMP, WEBP , WPG, XBM, XCF (GIMP image), XWD, X3F (Sigma RAW Picture File)

    Исходное изображение никак не изменяется. Вам будет предоставлена другая обработанная картинка.

    1) Укажите изображение для конвертирования:

    2) Выбор формата изображения на выходе

    Конвертировать в: JPEG (по умолчанию) BMP GIF PNG-8 (256 цветов, поддержка прозрачности) PNG-24 (без сжатия, поддержка прозрачности) PSD (Photoshop) SVG (вектор) TIFF 8bit TIFF 16bit (для RAW) WebP (Google)

    3) Дополнительные настройки

    Мегапикселей на выходе: Не изменять 0,5 Мп 1 Мп 5 Мп 10 Мп 20 Мп

    Номер извлекаемой страницы/кадра/слоя: (для Djvu, GIF, PDF, PSD, XCF и может начинаться с 0)

    4) Параметры сжатия для JPEG и WebP (если выбрано)

    Стандартный JPEG Прогрессивный JPEG

    Копировать EXIF и метаданные? Да Нет

    Качество (от 1 до 100)


    Обработка обычно длится 5-60 секунд.

    Поддерживаемые форматы RAW (сырых) фотографий с автоматической коррекцией и учётом встроенных метаданных:
    .3FR, .FFF Hasselblad , Hasselblad RAW Image
    .ARW, .SR2, .SRF - RAW фото с цифровой камеры Sony , Sony Digital Camera RAW Image
    .BAY - RAW фото с цифровой камеры Casio , Casio RAW Image
    .CR2, .CRW - RAW фото с цифровой камеры Canon , Canon RAW Image
    .DC2, .DCR, .K25, .KC2, .KDC - RAW фото с цифровой камеры Kodak , Kodak RAW Image File
    .DNG - цифровой негатив, Digital Negative Image File
    .ERF - сырое изображение Epson , Epson RAW File
    .HDR - изображение High Dynamic Range
    .MDC, .MRW - Minolta Raw Image File
    .MEF, .MOS - Mamiya Digital Camera RAW Image Format
    .NEF, .NRW - RAW фото с цифровой зеркальной камеры Nikon , Nikon Raw Image File
    .ORF - RAW фото с цифрового фотоаппарата Olympus , Olympus RAW File
    .PEF - Pentax Electronic File
    .PXN - PictureWorks PhotoEnhancer Image
    .QTK - Apple QuickTake Picture Image
    .RAF - Fujifilm CCD-RAW Graphic File
    .RAW - Digital Camera Photo RAW Image Format
    .RW2 Panasonic , Panasonic RAW Image
    .SRW - RAW фото с фотоаппарата Samsung
    .X3F - RAW изображение с цифровой камеры Sigma , Sigma Camera RAW Picture File