Чи є якась функціональна різниця між CSS 2.1 :after
та псевдоселекторами CSS 3 ::after
(крім того, що їх ::after
не підтримують у старих браузерах)? Чи є якісь практичні причини використовувати новішу специфікацію?
Чи є якась функціональна різниця між CSS 2.1 :after
та псевдоселекторами CSS 3 ::after
(крім того, що їх ::after
не підтримують у старих браузерах)? Чи є якісь практичні причини використовувати новішу специфікацію?
Відповіді:
Це псевдо- клас проти псевдо- елемента відмінності.
За винятком ::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-після-що-є-подвійне-двокрапка-нотація /
:after
та ::after
взаємозамінно використовувати однакову поведінку за винятком IE8, який, як зазначається в запитанні, вимагає єдиної двокрапки.
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).