div の幅が 300px だとすると、テキストのフォントサイズを設定して、テキストが同じ長さになることは決してないことを考慮して、常に幅の 100% になるようにするにはどうすればよいでしょうか (テキストは、php によって生成された動的なタイトルです) )。小さいテキストは、大きいテキストよりもはるかに小さいフォントを使用する必要があります。
6 に答える
@svassr によって提供されたソリューションを組み合わせることでfont-size: *vw
、望ましい結果が得られました。そう:
div {
text-align: justify;
font-size: 4.3vw;
}
div:after {
content: "";
display: inline-block;
width: 100%;
}
は のvw
略でviewport width
、この例ではビューポートの幅の 4.3% です。それをいじって、テキストが 1 行に収まるようにします。@svassrのソリューションと組み合わせると、これは私にとって魅力的でした!
あなたが求めていることは、おそらく実行できないでしょう。text-align:justify
段落テキストを右側に拡張しますが、ヘッダーのサイズを幅の 100% に調整することはできません。
編集:まあ、実際には、これを行うように見えるJSライブラリが存在します。http://fittextjs.com。それでも、純粋な CSS ソリューションは利用できません。
このための Web コンポーネントを作成しました:
https://github.com/pomber/full-width-text
ここでデモを確認してください:
https://pomber.github.io/full-width-text/
使い方はこんな感じです。
<full-width-text>Lorem Ipsum</full-width-text>
font-size の代わりに css transform を使った簡単なスケール関数を用意しました。
ブログ投稿: https://blog.polarbits.co/2017/03/07/full-width-css-js-scalable-header/
コード:
function scaleHeader() {
var scalable = document.querySelectorAll('.scale--js');
var margin = 10;
for (var i = 0; i < scalable.length; i++) {
var scalableContainer = scalable[i].parentNode;
scalable[i].style.transform = 'scale(1)';
var scalableContainerWidth = scalableContainer.offsetWidth - margin;
var scalableWidth = scalable[i].offsetWidth;
scalable[i].style.transform = 'scale(' + scalableContainerWidth / scalableWidth + ')';
scalableContainer.style.height = scalable[i].getBoundingClientRect().height + 'px';
}
}