Почему CSS использует двоеточия ":" в правилах? - PullRequest
2 голосов
/ 03 марта 2011

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

Вот пример:

enter image description here

Ответы [ 7 ]

13 голосов
/ 03 марта 2011

Не уверен, что можно дать лучший ответ, чем "вероятно, чтобы избежать путаницы".

Многие элементы в языках программирования и разметки не на 100% эффективны в пользу улучшения читабельности. Я лично нахожу

background: red 1px url(images/test.jpg)

намного, намного яснее, чем

background red 1px url(images/test.jpg);
10 голосов
/ 03 марта 2011

Случайное пространство легче вставить и труднее обнаружить, чем пропущенное двоеточие.

5 голосов
/ 03 марта 2011

Почему бы не удалить также фигурные скобки и позволить отступам определять структуру?Это было бы даже чище.

Однако иногда лучший синтаксис не сводится к удалению всего, что вы можете себе представить, вам часто нужно что-то сохранять, чтобы синтаксис также очищался .Более понятный синтаксис выражает намерение лучше, чем более чистый и неявный синтаксис.Труднее делать ошибки с явным синтаксисом, и легче обнаружить эти ошибки.

В ваших двух примерах я нахожу, что первый намного легче понять, потому что ключ и значение четко и явно разделены.

5 голосов
/ 03 марта 2011

Просто проще в использовании, это более семантически и это будущее, если они изменят правила на более поздний срок. Это также облегчает отладку.

Это просто пример юзабилити, а не эффективности.

3 голосов
/ 03 марта 2011

Как уже говорили другие, необходимо дать четкий синтаксис, который достаточно гибок, чтобы выбрать ваш стиль (записать правила в одну строку, написать один ключ: значение на строку? И т. Д.).

Позвольте привести пример. Вы могли бы написать это:

a {
  border: 1px
  solid black;
}

Если вы пропустите все символы синтаксиса, это станет:

a {
  border 1px
  solid black
}

Это неоднозначно, или, с другой стороны, синтаксис слишком жесткий.

1 голос
/ 09 марта 2011

Многие языки используют нотацию variableName: type (объявления переменных, параметров и т. Д.). Я видел один, использующий variableName type (возможно, это был Go), и я был обеспокоен взглядом. Даже если оно однозначно, оно «не чувствует себя хорошо», возможно, из-за привычек, возможно, потому что ему не хватает «ритма». Пунктуация в предложении на английском языке не всегда необходима (иногда, чтобы избежать двусмысленности), но ее отсутствие делает читателей неудобными. Глаз должен найти отметки.
То же самое для F # (и его родительского языка), просто опуская скобки и запятые для параметров функции. Выглядит странно (но, возможно, можно привыкнуть к этой записи).

Как всегда, необходимо соблюдать баланс между слишком большим количеством аннотаций и слишком маленьким. И между инновациями и изменением привычек ... Инновации это хорошо, но должны иметь цель. Сохранение некоторых нажатий клавиш за счет читабельности редко является целью. : -)

1 голос
/ 03 марта 2011

Готов поспорить, что большинство синтаксических анализаторов CSS имеют некоторую историю написания на C или C ++ и функцию strtok, используемую для анализа файла, в соответствии с правилами, аналогичными правилам синтаксического анализа файла C / C ++.

Другие уже упоминали неоднозначность использования разделителя пробелов.

; еще одна важная часть синтаксиса в C и CSS

...