Есть ли конкретная причина для создания нового псевдо-класс для этого?
По этой же причине наряду с селекторами атрибутов в CSS2 была введена псевдокласс класса :lang()
. См What's the difference between html[lang="en"] and html:lang(en) in CSS?
ли эти селекторы идентичны или же они ведут себя по-разному?
См. Мой ответ на связанный вопрос. Вот соответствующая цитата из Selectors 4 для полноты картины:
Разницы между: Dir (С) и «» [Dir = С] «» является то, что «» [DIR = С] «» выполняет лишь сравнение с данным атрибутом для элемента, в то время как псевдокласс class: dir (C) использует знания UA для семантики документа для выполнения сравнения.Например, в HTML направленность элемента наследует так, что дочерний элемент без атрибута dir будет иметь ту же направленность, что и его ближайший предок с действительным атрибутом dir. В качестве другого примера, в HTML, элемент, который соответствует '' [dir = auto] '', будет соответствовать: dir (ltr) или: dir (rtl) в зависимости от разрешенной направленности элементов, определяемой его содержимым. [HTML5]
Чтобы управлять точки дома на сходстве :dir()
и :lang()
, если присмотреться, первое предложение является фактически слово за слово копию того же пункта в разделе, описывающем :lang()
,
Большая часть остальной части текста для :lang()
является новой, однако, поскольку наряду с :dir()
, селектор 4 также вводит расширенную функциональность для :lang()
.
Есть ли какие-либо результаты или конкретные последствия?
Поскольку ответ на ваш предыдущий вопрос заключается в том, что они ведут себя по-другому, производительность не имеет значения.
Специфические последствия, поскольку псевдоклассы и селектор атрибутов имеют одинаковую специфику.
Это мне не понятно, почему потребовалось почти 15 лет для :dir()
быть добавлены к селекторов, но там вы идете.
По той же причине, почему: lang() псевдо существует в отличие от селектора атрибутов [lang]: http://stackoverflow.com/questions/8916360/whats-the-difference-between-htmllang-en-and -htmllangen-в-CSS – BoltClock