Чи є поважна причина для браузерів префіксувати нові функції 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
- Ласкаво просимо до реального світу. ™