CSS селектори псевдоелементи

Днес ще говорим за следните псевдоелементи:

::before - вмъква генерираното съдържание преди съдържанието на елемента

::after - вмъква генерирано съдържание след съдържанието на елемента

::first-letter - избира първата буква на елемент

съдържание

Практически курс за оформление на адаптивен уебсайт от нулата!

Вземете курса и научете как да създавате модерни уебсайтове в HTML5 и CSS3

::first-line - избира първия ред на елемент

::selection - стилизира избрания от курсора текст

От тях елементите ::first-letter, ::first-line и ::selection засягат съдържанието, което е включено в източниците. Псевдоелементите ::before и ::after, от друга страна, вмъкват съдържание в документа, което не е в източника. Нека разгледаме по-отблизо всички псевдоелементи.

Забележка: синтаксис с едно двоеточие

Може да сте виждали версии на ::first-letter, ::first-line, ::before и ::after с едно двоеточие в стария CSS. В CSS2 тези псевдоелементи бяха посочени с еднократно двоеточие :. IE8 изисква синтаксис с едно двоеточие, въпреки че повечето други браузъри поддържат и двете. По-добре е да използвате синтаксиса с двойно двоеточие.

Псевдоелементи ::преди и ::след

Повечето псевдоелементи ви позволяват да изберете съдържание, което вече присъства в изходния документ, но не е дефинирано от езика (с други думи, вашия HTML). Обаче ::преди и ::след работа по различен начин. Тези псевдоелементи добавят генерирано съдържание към дървото на документа. Генерираното съдържание не съществува в HTML източника, но се изобразява.

Защо да използваме генерирано съдържание? Например, можете да маркирате задължителни полета на формуляра, като добавите съдържание след етикетите:

Задължителното поле на формуляра трябва да използва HTMLнеобходимо имущество. Тъй като тази информация вече е налична в DOM, ::before и ::after действат като помощници. Това не е критично съдържание, така че може да не бъде включено в изходния код.

Забележка: Генерирано съдържание и достъпност

Някои екранни четци и браузъри разпознават и четат генерирано съдържание, но повечето не. Не използвайте псевдоелементи ::before и ::after, за да предоставите генерирано съдържание за потребители с увреждания. Можете да прочетете повече за този проблем в статията на Леони Уотсън Поддръжка за достъпност за CSS генерирано съдържание.

Друг начин за използване на ::before и ::after е да добавите префикс или суфикс към съдържанието. Горният формуляр може да използва помощен текст като по-долу:

Нека оградим нашия спомагателен текст в двойки скоби с ::before и ::after.

съдържание

Може би най-полезната употреба на ::before и ::after е за почистване на плаващи елементи. Nicolas Gallagher представи тази техника (която се основава на работата на Thierry Koblentz) в публикацията си „new micro clearfix hack“:

В този случай стиловете за ::first-letter ще бъдат приложени както към началния цитат, така и към първата буква, както е показано по-долу. Стиловете се прилагат по един и същи начин във всички браузъри.

буква

Резултатът обаче ще бъде различен, когато препинателният знак се генерира от елемента. Помислете за следното маркиране:

Понастоящем браузърите изобразяват маркера q като специфични за езика кавички, които ще се отварят и затварят. Въпреки това, не всички браузъри разпознават подобни цитати по един и същи начин. Във Firefox 42 (вижте по-долу), Safari 8 и по-стари, ::first-letter променя само началния цитат.

буква

в хром,Opera и Yandex началният цитат на маркера q и първата буква на абзаца не са стилизирани. По-долу е екранна снимка в Chrome.

псевдоелементи

IE прилага стилове както към началния цитат, така и към първата буква на абзаца. Виж отдолу.

псевдоелементи

Спецификацията на CSS Pseudo-elements Module Level 4 гласи, че препинателният знак пред или непосредствено след първата буква или знак трябва да бъде стилизиран. Спецификацията обаче не обяснява ясно как да се прилагат стилове към генерираните препинателни знаци.

Грешки в браузъра при използване на ::първа буква

В по-голямата си част ::first-letter работи точно както се очаква във всички браузъри. Както при всички CSS свойства, този псевдоелемент има няколко грешки и злоупотреби, за които трябва да знаете.

Във Firefox 39 и по-стари някои знаци карат Firefox да игнорира правилото ::първа буква: -,$,^,_,+,`,