Почему таблицы стилей пользовательского агента браузеров используют свойства -prefixed CSS?

На днях я смотрел, как браузеры (я использовал хром, но я предполагаю, что это относится ко всем) форматирует HTML-элементы с помощью таблиц стилей пользователя.

При использовании blockquote я нашел это:

blockquote {
 -webkit-margin-before: 1em;
 -webkit-margin-after: 1em;
 -webkit-margin-start: 40px;
 -webkit-margin-end: 40px;
}

Посмотрите отлично. Но почему они не могли использовать нечто подобное?:

blockquote {
 margin-left:/*whatever*/;
 margin-top:/*whatever*/;
 margin-right:/*whatever*/;
 margin-bottom:/*whatever*/;
}

Это произошло на меня, и я подумал, что это довольно странно.

2 ответа

Некоторые браузеры используют такие правила CSS, как это, потому что их спецификация еще не была доработана W3C, и поэтому, если они должны были оставить префикс выключенным, они рискуют, что возможный стандартный формат W3C будет немного отличаться, и создание несовместимости между браузерами или между версиями одного и того же браузера, поскольку они меняют формат на стандартный способ делать вещи.

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

border-radius: 3px 3px 6px 6px;
box-shadow: 3px 3px 6px #fff;

... и т.д...

Добавление префикса - это их уверенность в том, что если конечный стандарт окажется отличным от его реализации, ничто не сломается.

Что касается части margin-before вместо margin-left, это связано с тем, что правило -webkit-margin-before не является эквивалентом margin-left, а margin:before, что является недавним предложением, направленным на что делает работу в режиме RTL и вертикальной записи. См. Эту страницу: http://lists.w3.org/Archives/Public/www-style/2010Sep/0625.html Это кажется довольно неясным, хотя.


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

licensed under cc by-sa 3.0 with attribution.