ページの中央に配置され、アスペクト比(16:9)が維持されるようにビューポートで拡大縮小されるdivがあります。問題は、サイズ変更時にdiv内でフォントとコンテンツの内部を拡大することですVminはほとんどの場合、問題なく動作します。 vminがビューポートの高さと幅の間の小さな値を直接チェックし、カスタムアスペクト比を設定できないため、divのアスペクト比が1:1の場合は完全に機能します。Javascriptを使用してdivコンテンツをそのサイズでどのようにスケールするのですか?
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color:white;
}
.wrapper {
width: 95vw;
height: calc(95vw * 9/16);
max-height: 95vh;
max-width: calc(95vh * 16/9);
background: center;
background-color: blue;
background-size:contain;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
#lorem {
color: aqua;
font-size:10vmin;
text-align:center;
position:absolute;
transform: translate(-50%, -50%);
top: 50%;
left: 50%;
margin:auto;
}
</style>
</head>
<body>
<div class="wrapper">
<p id="lorem">
This text should scale with div only.
</p>
</div>
</body>
</html>
https://jsfiddle.net/Addictorator/70fq44sv/2/
私が話しているかを確認するために垂直方向にウィンドウのサイズを変更します。
私は純粋なCSSの方法があるとは思わない(しかし、それがあれば、それが最も望ましいだろう)が、私はそれがdivのイベントリスナーonresizeを使用してjavascriptで可能であると思うし、 divの高さ/幅を現在のdivの高さ/幅と比較する比で別々に計算されます。または、vminの動作を試して複製できますが、上記のCSSを使用してdivで行われたように、高さを比率に設定して16:9を1:1の代わりに使う方法が考えられます。私は純粋なjsとjqueryを好むでしょう。私は自分自身でこれをやってみましたが、javascriptに関しては私はむしろ素人です。
ありがとうございます!
これは[重複](http://stackoverflow.com/questions/16056591/font-scaling-based-on-width-of-container#19814948)です。ビューポートフォント、すべてのCSSソリューションを探しています。 fontsizeの '9vw'はあなたにとって良いかもしれません。 – kabanus
いいえ、そうではありません。私はすでにビューポートユニットを使用しています。もしあなたがそれを読めば、なぜ私の特定のケースでそれがうまくいかないのかを知ることができます。 – Terrornado
それは私のためにあなたのjsのバイブルで動作します。私は 'font-size:10vmin'を' font-size:9vw; 'に変更しました。これはフォントサイズであることに注意してください。 – kabanus