45
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

すべてがWebKitになる

Last updated at Posted at 2017-01-19

Q. 以下のHTMLをFirefox 50で表示した場合、赤い図形はどのような形になるだろうか?

<style>
  #target {
    background-color: red;
    height: 200px;
    width: 200px;
    border-radius: 0; /* 正方形 */
    -webkit-border-radius: 100px; /* 円形 */
    -moz-border-radius: 20px; /* 角丸四角 */
  }
</style>
<div id="target"></div>

順当に考えれば「正方形」か「角丸四角」に絞り込まれるはずだ。
詳しい人であれば、ベンダープレフィックスの廃止を問う問題だと考えるかもしれない。

「border-radius」は主要なブラウザにおいてベンダープレフィックス無しで実装されており、
「-moz-border-radius」は2012年にリリースされたFirefox 13から廃止されている。
https://developer.mozilla.org/ja/docs/Web/CSS/border-radius#Gecko_notes
よって、解答は「正方形」になる……と思いたい。








さて、実際に表示した結果が、以下のスクリーンショットである。

firefox.png

「円形」だ。「円形」なのだ。

今となっては希少な、UserAgentにWebKitが含まれないブラウザであるFirefoxは、よりにもよって「-webkit-border-radius」を解釈するのである。

種を明かすと、about:configにて「layout.css.prefixes.webkit」がtrueだと、webkitプレフィックスの付いた一部のプロパティを解釈する。
これはFirefox49からデフォルト有効化された機能で、リリースノートにも「既存のコンテンツとの互換性を高めるため」として記載されている。
https://developer.mozilla.org/ja/Firefox/Releases/49#Compatibility




さて、これで終わりあればよかったのだが、本項のタイトルは「すべてがWebKitになる」である。

OperaがWebKitの軍門に下った今、WebKitに属さない勢力といえば、Firefox以外にMicrosoftが挙げられる。
では、Microsoft Edgeで同じHTMLを表示した場合、どうなるだろうか。




実際に表示した結果が、以下のスクリーンショットである。

edge.png

「円形」だ。「円形」なのだ。

UserAgentでMozillaを名乗り、WebKitを名乗り、Chromeを名乗り、Safariを名乗るブラウザMicrosoft Edgeは、当然のように「-webkit-border-radius」を解釈するのである。

WebKitを名乗ってはいるが、Edgeは独自のレンダリングエンジンを採用している。
webkitプレフィックスの解釈は「互換性を高めるために」意図的に実装されているのである。
https://msdn.microsoft.com/ja-jp/library/mt270097


Webの標準化は果たして何処へと向かっているのだろうか。

45
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?