ブラウザーが接頭辞のないバージョンを使用するのではなく、ブラウザーに新しい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);
}
Webマスターに同じコードを4回コピーアンドペーストさせて同じ結果を得ることのポイントは何ですか?
注:よく引用される理由の1つは、ブラウザが仕様を正しく実装していないか、仕様が決定的でないかのいずれかである接頭辞付きのスタイルが一時的なものであることが意図されていることです。
IMO、この理由はナンセンスです:
- ブラウザーエンジンが仕様を正しく実装していない場合、ブラウザーがプレフィックスのない形式で実装していないか、プレフィックスの形式で実装していないかに関係なく、ブラウザーは準拠していません。
- 仕様が明確でない場合は、同じ名前の以前の実装がいつあったかが問題になることがあります。たとえば、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