Как читать синтаксис CSS на MDN - PullRequest
0 голосов
/ 21 марта 2020
selectors-list ::=
    selector[:pseudo-class] [::pseudo-element]
    [, selectors-list]

properties-list ::= 
    [property : value] [; properties-list]

Я пытаюсь ознакомиться с CSS, и я был бы рад понять правила их чтения (из https://developer.mozilla.org/en-US/docs/Web/CSS/Reference).

1 Ответ

1 голос
/ 24 марта 2020

Эта страница MDN, кажется, использует псевдо-BNF нотацию для описания синтаксиса CSS. Используемые обозначения очень запутанные, потому что [] :: : ; и , все означают что-то в CSS, но они используют [] для представления необязательных частей и ::= для определения правила грамматики.

Я могу дать вам грубый перевод на английский язык sh того, что они имели в виду:

style-rule ::=
    selectors-list {
      properties-list
    }

Правило стиля состоит из списка селекторов, за которым следует {, за которым следует список свойств, за которым следует }.

selectors-list ::=
    selector[:pseudo-class] [::pseudo-element]
    [, selectors-list]

Список селекторов состоит из селектора, за которым необязательно следует : и псевдокласс, за которым необязательно следует :: и псевдо- элемент, за которым может следовать , и другой список селекторов.

Это определение не только неверно (вы можете использовать несколько псевдоклассов в строке), но и имеет запутанное имя. Если псевдокласс и псевдоэлемент являются чем-то отдельным от селектора, почему вы бы назвали список всех трех списком селекторов?

Оставляя это в стороне ...

properties-list ::= 
    [property : value] [; properties-list]

Список свойств может быть полностью пустым или содержать свойство, за которым следует :, за которым следует значение, за которым необязательно следует ; и другой список свойств.

И затем они не t даже использовать их псевдо-BNF для определения того, что является селектором, псевдоклассом, псевдоэлементом, свойством или значением. Вся эта запись гораздо более запутанная, чем полезная. Эта страница MDN, вероятно, должна быть переписана.

...