Почему mozilla и webkit добавляют -moz- и -webkit- к правилам CSS3? - PullRequest
6 голосов
/ 28 мая 2010

Правила CSS3 приносят много интересных функций.

Взять, например, border-radius . Стандарт гласит, что если вы напишите это правило:

div.rounded-corners {
  border-radius: 5px;
}

Я должен получить радиус границы 5 пикселей.

Но ни Mozilla, ни WebKit не реализуют это. Однако они реализуют одно и то же, с одинаковыми параметрами, с другим именем (-moz-border-radius и -webkit-border-radius соответственно).

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

div.rounded-corners {
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
}

Я вижу два очевидных недостатка:

  • Скопируйте и вставьте код. Это имеет очевидные риски, которые я не буду обсуждать здесь.
  • Валидатор W3C CSS не будет проверять эти правила.

В то же время я не вижу очевидных преимуществ.

Я считаю, что люди, стоящие за Mozilla и Webkit, умнее меня. Должны быть веские причины, чтобы все было структурировано таким образом. Просто я их не вижу.

Итак, я должен спросить вас, люди: почему это так?

Ответы [ 4 ]

6 голосов
/ 28 мая 2010

-moz-border-radius описывает семантику Mozilla. Если CSS3 публикуется с другой семантикой, Mozilla всегда может реализовать border-radius, используя эту семантику, и они не нарушат чей-либо сайт.

Между тем, если они просто использовали border-radius напрямую, то, если CSS3 публикуется с другой семантикой, Mozilla вынуждена выбирать между взломом сайтов людей или постоянной поддержкой нестандартного CSS.

3 голосов
/ 28 мая 2010

Они делают это, потому что он не полностью поддерживается. Это очень похоже на бета-версию этого кода. В конце концов они добавят поддержку border-radius.

Это более очевидно, когда вы смотрите на линейные градиенты.

background-image: -moz-linear-gradient(100% 100% 90deg, #2F2727, #1a82f7);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#1a82f7), to(#2F2727));

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

2 голосов
/ 16 сентября 2010

Обратите внимание, что по состоянию на 2010-09-14 , префикс -moz был удален из border-radius. Это означает, что Firefox 4 будет поддерживать border-radius без префикса.

2 голосов
/ 28 мая 2010

Simple. Запатентованные варианты -moz и -webkit были там до того, как border-radius было записано в рекомендации CSS3. У них были свои реализации, но они не знали, будут ли они соответствовать окончательной рекомендации W3C. Таким образом, в тот момент они также не использовали официальное имя, чтобы потом ничего не ломать.

...