: після vs. :: після


134

Чи є якась функціональна різниця між CSS 2.1 :afterта псевдоселекторами CSS 3 ::after(крім того, що їх ::afterне підтримують у старих браузерах)? Чи є якісь практичні причини використовувати новішу специфікацію?

Відповіді:


133

Це псевдо- клас проти псевдо- елемента відмінності.

За винятком ::first-line, ::first-letter, ::beforeта ::after(що було навколо деякий час , і може бути використаний з поодинокими двокрапкою , якщо вам необхідна підтримка IE8), псевдоенергіямі елементи вимагають подвійного двокрапки.

Псевдокласи самі вибирають фактичні елементи, які ви можете використовувати, :first-childабо :nth-of-type(n)для вибору, наприклад, першого або конкретного слова <p>у діві.
(А також стану фактичних елементів, таких як :hoverі :focus.)

Псевдоелементи націлені на частину елемента, наприклад, ::first-lineабо ::first-letterречі, які самі по собі не є елементами.


Насправді, кращий опис тут: http://bricss.net/post/10768584657/know-your-lingo-pseudo-class-vs-pseudo-element
Також тут: http://www.evotech.net/blog/2007/ 05 / після-v-після-що-є-подвійне-двокрапка-нотація /


6
Саме через цю відмінність "псевдоселектор" (з питання) - це безглуздий термін. Не використовуйте його ніколи.
BoltClock

1
якщо ви не говорите про них обох. або в загальному плані.
Альберт

1
Це є чудовим поясненням теорії, але чи вона має відношення до практичного питання? Чи є насправді якась користь від використання специфікації css3 в тому, що css2 виконає таку ж роботу - у більшості браузерів?
DRosenfeld

1
@Dominic дякую - я вдячний за ваше звернення до мого коментаря. Немає сумнівів у тому, що питання підтримки (принаймні цього) тегу CSS3 наразі майже не є проблемою.
DRosenfeld

1
@ BorisD.Teoharov Зокрема, ви можете використовувати :afterта ::afterвзаємозамінно використовувати однакову поведінку за винятком IE8, який, як зазначається в запитанні, вимагає єдиної двокрапки.
Домінік

14

CSS Selectors - ::afterце деякі віртуальні елементи, недоступні як явний елемент у DOM-дереві. Їх називають « Псевдо-елементи » і використовуються для вставки деякого вмісту перед / після елемента (наприклад: ::before, ::after) або виберіть яку - то частина елемента (наприклад , ::first-letter). В даний час існує тільки 5 стандартних елементів псевдо: after, before, first-letter, first-line, selection.

З іншого боку, існують і інші типи селекторів званих « Псевдокласи » , які використовуються для визначення особливого стану елемента (наприклад , як :hover, :focus, :nth-child(n)). Вони виберуть цілий існуючий елемент у DOM. Псевдокласи - це довгий список з більш ніж 30 предметами.

Спочатку (у CSS2 та CSS1) синтаксис однокрапки використовувався як для псевдокласів, так і для псевдоелементів. Але в CSS3 ::синтаксис замінив :позначення псевдоелементів, щоб краще їх розрізнити.

Для зворотної сумісності старий синтаксис однокрапки є прийнятним для таких псевдоелементів, як :after(браузери все ще підтримують старий синтаксис одним крапкою з комою). Тільки IE-8 не підтримує новий синтаксис (використовуйте однократку, якщо ви хочете підтримувати IE8).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.