しかし、コンテナがビューポート(ボディ)でない場合はどうなりますか?
この質問は、受け入れられた回答の下でアレックスによってコメントで尋ねられます。
その事実はvw
、そのコンテナのサイズにある程度使用できないことを意味しません。ここで、バリエーションを確認するには、コンテナのサイズがある程度柔軟であると想定する必要があります。直接的なパーセンテージを通じて、width
または100%からマージンを差し引いて。コンテナーが常に、たとえば200px
ワイドに設定されている場合、ポイントは「スムーズ」になりfont-size
ます。次に、その幅で機能するを設定するだけです。
例1
ただし、幅がフレキシブルなコンテナでは、何らかの方法でコンテナがまだビューポートからサイズ変更されていることを認識しておく必要があります。そのvw
ため、ビューポートに対するそのパーセンテージサイズの違いに基づいて設定を調整することです。つまり、親ラッパーのサイズを考慮する必要があります。この例を見てみましょう:
div {
width: 50%;
border: 1px solid black;
margin: 20px;
font-size: 16px;
/* 100 = viewport width, as 1vw = 1/100th of that
So if the container is 50% of viewport (as here)
then factor that into how you want it to size.
Let's say you like 5vw if it were the whole width,
then for this container, size it at 2.5vw (5 * .5 [i.e. 50%])
*/
font-size: 2.5vw;
}
ここで想定するとdiv
の子であるbody
、それは50%
それで100%
、この基本的なケースでは、ビューポートのサイズである幅、。基本的には、vw
見栄えのするを設定します。上記のCSSコンテンツの私のコメントでわかるように、フルビューポートサイズに関して数学的にそれを「考える」ことができますが、そうする必要はありません。コンテナはビューポートのサイズ変更に伴って変化するため、テキストはコンテナとともに「変化」します。更新:2つの異なるサイズのコンテナーの例を次に示します。
例2
これに基づいて計算を強制することにより、ビューポートのサイズ変更を確実にすることができます。この例を考えてみましょう:
html {width: 100%;} /* Force 'html' to be viewport width */
body {width: 150%; } /* Overflow the body */
div {
width: 50%;
border: 1px solid black;
margin: 20px;
font-size: 16px;
/* 100 = viewport width, as 1vw = 1/100th of that
Here, the body is 150% of viewport, but the container is 50%
of viewport, so both parents factor into how you want it to size.
Let's say you like 5vw if it were the whole width,
then for this container, size it at 3.75vw
(5 * 1.5 [i.e. 150%]) * .5 [i.e. 50%]
*/
font-size: 3.75vw;
}
サイズ設定は依然としてビューポートに基づいていますが、本質的にはコンテナーサイズ自体に基づいて設定されます。
コンテナのサイズは動的に変化する必要があります...
コンテナ要素のサイズ設定が、@media
ブレークポイントまたはJavaScript を介してパーセンテージ関係を動的に変更することになった場合、ベース「ターゲット」がテキストのサイズ設定と同じ「関係」を維持するために再計算する必要がありました。
上記の例1を見てください。div
がJavaScriptまたはJavaScript 25%
によって幅に切り替えられた場合、@media
同時に、font-size
はメディアクエリまたはJavaScriptのいずれかでの新しい計算に調整する必要があります5vw * .25 = 1.25
。これにより、元の50%
コンテナの「幅」がビューポートのサイズ変更から半分に減らされた場合と同じサイズにテキストサイズが設定されますが、独自のパーセンテージ計算の変更により縮小されました。
挑戦
CSS3のcalc()
機能の使用中に、その機能が動作しないよう、動的に調整することが困難になるでしょうfont-size
。この時点で目的。したがって、幅が変化してcalc()
いる場合は、CSS 3だけで調整することはできません。もちろん、マージンの幅を少し調整しても、の変更を保証するには不十分なfont-size
場合があるため、問題にならない場合があります。
font-size: 100%;
テキストのサイズ(つまり、親から継承したサイズ)の100%を意味します。デフォルトは16pxです。したがって、50%を使用した場合、それはfont-size:8px