Почему некоторые имена, такие как none против hidden и href vs. src, настолько несовместимы в CSS и HTML? - PullRequest
5 голосов
/ 09 сентября 2011

Привет, это скорее концептуальный вопрос. Как W3C решил использовать hidden против none? Я спрашиваю, потому что я человек ESL (английский как второй язык). Если я использую overflow: hidden, то с таким же успехом можно использовать overflow: none. То же самое касается display: none и visibility: hidden. Разве это не могло быть просто display: none и visibility: none, потому что на самом деле разница - это свойства display и visibility, а не их значение. Это скорее просьба об объяснении. Подобные "странные" вещи происходят, например:

<script src="file.js">

и

<link href="file.css">

Почему они разные? Я понимаю, как все это работает технически, мне просто интересно, как они определили имена атрибутов.

Спасибо.

1 Ответ

12 голосов
/ 09 сентября 2011

Причина, по которой эти объекты (элементы, свойства, атрибуты и т. Д.) Называются по-разному, заключается в том, что они служат разным целям. Давайте начнем с вершины и рассмотрим ваши примеры.

Дисплей против Visibiliy

display: none;
visibility: hidden;

Как видно из спецификации CSS 2.1 , значение none используется для многих различных свойств, чтобы указать, что визуальный аспект свойства не должен отображаться. Поэтому, если свойство равно float, none означает, что элемент не является плавающим. Для свойства display, none означает, что оно не отображается.

Для visibility, hidden отличается, поскольку в отличие от display, не влияет на поток элементов. Ящик элемента по-прежнему будет отображаться, но он будет невидимым. Если бы вы дали значение none visibility, это семантически означало бы то же самое, что и display: none, но это не так.

Перелив

overflow: hidden;
overflow: none;

Это означает разные вещи. hidden говорит, что содержимое, которое превышает размер элемента, будет обрезано, тогда как none говорит, что контроль переполнения отсутствует; фактически отключение переполнения. none не является допустимым значением для overflow, но в этом случае visible имеет тот же эффект.

Src vs. href

<script src="file.js">
<link href="file.css">

Разница между script и link заключается в том, что, хотя основная цель script состоит в том, чтобы встроить (либо встроенный, либо через ссылку через атрибут src) скрипт в документ HTML, цель из link означает ссылки на другие URI во всемирной паутине. Тот факт, что вы используете link для ссылки на таблицу стилей CSS, не очень интуитивен; более интуитивное решение может быть:

<style src="file.css" />

У меня нет сведений о том, почему рабочая группа HTML решила использовать link, а не style, но после небольшого копания кажется, что элемент link уже присутствовал в HTML 1.0 и HTML 2.0 , и что style не было представлено до HTML 3.0 .

Поскольку обсуждение языка таблиц стилей началось еще в в 1993 году (в том же году HTML 1.0 был завершен), а HTML 3.0 не было сделано до 1995 года, есть смысл, что они нашли способ вставлять таблицы стилей до изобретения элемента style.

...