ベンダープレフィックスって何? ハックとの違いは?
ブラウザが進化し、昔ほどベンダープレフィックスが必要ではなくなりつつあります。とはゆえ今でも必要なケースもあります。CSSの個々の設定に進む前に、ざっくりベンダープレフィックスについてみておきましょう。
ブラウザが進化し、昔ほどベンダープレフィックスが必要ではなくなりつつあります。とはゆえ今でも必要なケースもあります。CSSの個々の設定に進む前に、ざっくりベンダープレフィックスについてみておきましょう。
この記事は「2020年12月21日」に書かれた記事です
ブラウザのベンダーがCSS3の拡張機能を実装するのに使用する識別子のことです。ざっくり解説するとCSSの設定で
というときに下記の接頭語とつけて動くようにしようというもの。(ちょっと乱暴)
-webkit- | Google Chrome、Safari |
---|---|
-moz- | Mozilla Firefox |
-ms- | Microsoft Internet Explorer |
一昔前は「-o-」(Opera用)もありましたが、現在は-webkit-でOKです。
ベンダープレフィックスを記述する場合は、ベンダープレフィックスをつけていないプロパティを最後に書きます。
「-webkit-」「-moz-」「-ms-」の順番はどの順番でも構いませんが、毎回順番が異なるとわかりにくいので、同じ順番で書くようにしましょう。
例
-ms-border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; -o-border-radius: 6px; border-radius: 6px;
どのブラウザの、どのバージョンまでを閲覧対象とするかは、ホームページ制作会社や案件によって異なります。IE11はもう必要ない、という人もいれば、日本国内で(2020年10月現在)7%前後IE11のシェア率を考慮すると切り捨てることもできない、という人もいます。
ホームページ制作会社で働いている場合は、ホームページ制作会社が基準を設けているはずです。どのブラウザーの、どのバージョンまで閲覧を保証するかにより、使用できるCSSがかわってきますので必ず確認しておきましょう。
ベンダープレフィックスが必要な記述をすべて覚えておくのはなかなか大変です。
と思ったら、下記のサイトなどでチェックしましょう。
使い方についてはこの記事では割愛させてもらいます。説明をした際はgoogle先生に聞いてもらえればと思います。
「calc」
通常数値で設定する部分(width:200px;など)に計算式を利用できるCSSです。
IEでは部分的なサポートのため完全な状態では利用できません。IE10までは見切りをつけてしまうこともできますが、現状、IE11は切り捨てるわけにはいかないことも多い、そんなときに注意が必要です。
例)親要素に対して3つの要素を均等にしたい
width: calc(100% / 3);
上記の設定の場合、IE11の解釈により不具合が起こります。※Edgeは問題ありません。
「100% / 3」は、100÷3=33.333……なのですが、これどこまで行っても割り切ることができません。このときIE11では処理が「繰り上がり」となってしまいます。
つまり、width=34%として扱われてしまうのです。
カラム数は3つのため、34x3=102%となり、3つ目のカラムが横並びにならず、落ちてしまいます。解決方法はいろいろありますが代表的ところで2つ。
どちらの方法をとるかは、やりたいことがシンプルにできる方が良いでしょう。
※複雑になるとあとから改修するのが大変になります。
ハックの話が出たので、ハックについても触れておきたいと思います。
これまたざっくりですが、各ブラウザにのみ反映させたいときに使用するのがハックです。
という方はこれまた乱暴ですが
と覚えておけばよいかと思います。
またもIE11を例にしてみてみましょう。(IE11本当になくなってほしいと思っている制作会社のスタッフは大勢いるはず。)
本来であれば、ここでハックの説明を入れるべきところですが、IE8のことを考えなくてよくなってからハックを使うことがほぼなくなってしまい、知識があいまいなため掲載できず・・・です。ハックについて詳しく知りたい! という人はgoogle先生に聞いてみてください。
ちなみに、ちょっと調べたところでIE11に対するハック
例)IE11のみfont をメイリオにする場合
@media all and (-ms-high-contrast:none) { *::-ms-backdrop, font-family { "メイリオ", Meiryo ; } }
ハックは下記の部分です。
@media all and (-ms-high-contrast:none) { *::-ms-backdrop, }
この-ms-high-contrast:noneという記述が完全に効かないことがあるという記事ちらほらみました。検証していないですが使用するときは気を付けたほうがよさそうです。
HOME > ホームページ制作 > CSSでホームページを1UP > ベンダープレフィックスって何? ハックとの違いは?