86

当たり前の答えかもしれませんが、

いったいなぜブラウザーは独自のベンダー プレフィックスborder-radiusなどを作成することを決定するのでしょうか?

つまり: なぜ入力しなければならないのですか:

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

各プラットフォームが「私たちはクールだ、角を丸くするためのより良い方法を考え出すだろう」と考えたからでしょうか? 1 行に対して 3 行を入力するのは、まったくもって不可解にも冗長に思えます。

4

2 に答える 2

75

これは、仕様が最終リリース段階に達する前に、機能がベンダーによって実装されたためです。

ベンダー プレフィックスは、機能の変更などによる衝突がないことを保証します。

元々、ベンダー プレフィックスの目的は、ブラウザー メーカーが実験的な CSS 宣言のサポートを開始できるようにすることでした。

W3C ワーキング グループがグリッド宣言について議論しているとしましょう (ちなみに、これはそれほど悪い考えではありません)。さらに、ドラフト仕様を作成する人もいれば、詳細の一部に同意しない人もいるとしましょう。ご存知のように、このプロセスには時間がかかる場合があります。

さらに、Microsoft が実験として、提案されたグリッドを実装することを決定したとしましょう。現時点では、Microsoft は仕様が変更されないことを確信できません。したがって、CSS にグリッドを追加する代わりに、-ms-grid を追加します。

ベンダー プレフィックスは、「これは進行中の提案に対する Microsoft の解釈です」と言っているようなものです。したがって、グリッドの最終的な定義が異なる場合、Microsoft は、-ms-grid に依存するページを壊すことなく、新しい CSS プロパティ グリッドを追加できます。

ソース

于 2011-11-15T05:23:37.843 に答える
21

この投稿は古いので、ほとんどのベンダーは、これらのプレフィックスが不要な重複コードを作成しているだけであり、すべてのブラウザーで 1 つの効果を機能させるために 3 つの異なる CSS ルールを指定する必要がある状況は望ましくないことを理解していることに言及することが重要です。

2016 年 5 月 3 日のベンダー プレフィックスに関する Mozilla の見解に関するこの用語集で述べたように、

ブラウザー ベンダーは現在、実験的な機能のベンダー プレフィックスを取り除こうとしています。彼らは、Web 開発者が実稼働 Web サイトでそれらを使用していて、グローバル スペースを汚染しており、弱者のパフォーマンスをより困難にしていることに気付きました。

たとえば、ほんの数年前、ボックスに丸みを帯びた角を設定するには、次のように記述する必要がありました。

-moz-border-radius: 10px 5px;
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 5px;
-webkit-border-bottom-right-radius: 10px;
-webkit-border-bottom-left-radius: 5px;
border-radius: 10px 5px;

しかし、ブラウザーがこの機能を完全にサポートするようになった今、本当に必要なのは標準化されたバージョンだけです。

border-radius: 10px 5px;
于 2016-07-29T05:42:07.443 に答える