em
ユニットをメディアクエリで使用しようとしたとき、ユニットがブラウザのデフォルトフォントサイズに基づいており、ルートはhtml
ではないことがわかりました。
ブレークポイントがmin-width: 20em
の場合、要素幅が20em
に設定されています。要素の20em
はhtml font-size
に基づいており、メディアクエリはデフォルトのブラウザのフォントサイズに基づいているため、この場合の両方のユニットは同じではありません。CSSブレークポイントとemユニット
em
単位を使用して同じサイズを実現する方法はありますか?別の変数をブレークポイント(@bp-size: 16.250em
)にのみ追加定義しないでください。
html {
font-size: 0.813em; // 13px (assume default browser font-size: 16px)
}
.box {
width: 1em; // 13px x 13px
height: 1em;
background-color: #000;
// Problem
@size: 20em;
@media screen and (min-width: @size) { // 320px (20 x 16px) why not 260px?
width: @size; // 260px (20 x 13px)
background-color: #f00;
}
}
<div class="box"></div>
私はちょうどチェックし、 'rem'はこの場合' em'と同じように動作します。 http://codepen.io/anon/pen/ygvGdK BTW私は 'rem'と' em'の違いを知っています。 – rafr3
ブレークポイントと要素を同時に定義するのに1つの変数を使用できない理由と、ブレークポイントの単位がブラウザの設定に基づいている理由を理解できません。 – rafr3
あなたの例では親が ''なので、直接親とルートの両方が同じ要素なので、emとremの両方が(13pxに基づいて)同じ方法で動作します:) –