Заказ объявлений с конкретными поставщиками CSS

Я думаю, что уже несколько раз я написал что-то вроде следующего:

.foo {
    border-radius: 10px;         /* W3C */
    -moz-border-radius: 10px;    /* Mozilla */
    -webkit-border-radius: 10px; /* Webkit */
}

Но только теперь я подумал о том, важно ли их упорядочение? Я знаю, что между -moz-* и -webkit-* это не имеет значения, так как не более 1 из них будут прочитаны, но лучше ли (с точки зрения будущей проверки и т.д.) Выполнить стандарт W3C первый или последний?

Ответ 1

Лучшая практика неоспоримо иметь свойство без префикса последнего:

.foo {
    -moz-border-radius: 10px;    /* Mozilla */
    -webkit-border-radius: 10px; /* Webkit */
    border-radius: 10px;         /* W3C */
}

В зависимости от того, что последний из -webkit-border-radius и border-radius будет использоваться.

-webkit-border-radius является "экспериментальным" свойством - реализация может содержать отклонения от спецификации. Реализация для border-radius должна соответствовать тому, что указано в спецификации.

Предпочтительно использовать W3C-реализацию, когда она доступна, чтобы обеспечить согласованность между всеми браузерами, которые ее поддерживают.

Ответ 2

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

.foo {
    -moz-border-radius: 10px;    /* Mozilla */
    -webkit-border-radius: 10px; /* Webkit */
    border-radius: 10px;         /* W3C */
}

Например, можно сказать, что Google Chrome поддерживает border-radius, но также поддерживает -webkit-border-radius для обратной совместимости с предыдущими версиями. Когда Chrome встретит этот класс .foo, он сначала увидит -webkit, тогда он увидит стандарт, и по умолчанию будет стандартным (и игнорировать webkit).