Есть ли уважительная причина для браузеров префикс новых функций CSS вместо того, чтобы позволить веб-мастерам использовать версию без префикса?
Например, пример кода для градиента фона выглядит так:
#arbitrary-stops {
/* fallback DIY*/
/* Safari 4-5, Chrome 1-9 */
background: -webkit-gradient(linear, left top, right top, from(#2F2727), color-stop(0.05, #1a82f7), color-stop(0.5, #2F2727), color-stop(0.95, #1a82f7), to(#2F2727));
/* Safari 5.1+, Chrome 10+ */
background: -webkit-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* Firefox 3.6+ */
background: -moz-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* IE 10 */
background: -ms-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* Opera 11.10+ */
background: -o-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
}
Какой смысл заставлять веб-мастеров копировать-вставлять один и тот же код четыре раза, чтобы получить одинаковый результат?
Примечание. Одна из часто упоминаемых причин заключается в том, что префиксные стили должны быть временными, если либо браузер неправильно реализует спецификацию, либо спецификация не является окончательной .
ИМО, эта причина чепуха
- Если механизм браузера не реализует спецификацию правильно, браузер не будет совместим, независимо от того, реализует ли он его в форме без префикса или не реализует его в форме с префиксом.
- Если спецификация не является окончательной, это может иметь значение, когда были предыдущие реализации с тем же именем. Например, если бы CSS2 имел
linear-gradient
, но CSS3 предназначался для расширенияlinear-gradient
с дополнительными функциями, было бы разумно временно префикс новой, черновой реализации, префикс,-css3-<style>
дифференцируя рабочий CSS2 и экспериментальный CSS3. На практике CSS2 не имеетlinear-gradient
или других новинок CSS3.
Я бы также понял, если бы разные браузеры имели разные форматы реализации : например, скажем, требуется Firefox для тени текста <weight-of-shadow distance-x distance-y color>
, а Chrome требуется <distance-x distance-y weight-of-shadow color>
. Но на самом деле это не так; по крайней мере, все новые возможности CSS3, которые я использовал до сих пор, имели такой же формат.
If the browser engine does not implement the spec correctly, the browser will not be compliant
- Добро пожаловать в реальный мир. ™