2016-09-28 10 views
0

私はVWユニットを使用してタイポグラフィのサイズを変更したいと考えていますが、そのときテキストは大きく、明らかにビューポートの幅よりも大きくなります。基本的に私のテキストは親の.containerの中で反応的なものにしたいので、pxやemのような静的なサイズのユニットを使うとテキストが決して切り取られたり、あふれたりすることはありませんか?あなたのフィドルが正しくレンダリングされVWユニットを使用しているテキストが機能しない

HTML

<div class="container"> 
    <h1>Responsive Typography!</h1> 
</div> 

CSS

.container { 
    width: 100%; 
    background: red; 
    height: 100%; 
} 

h1 { 
    font-size: 40vw; 
} 

FIDDLE

+0

達成しようとしている効果は何ですか?これは、私が期待するようにレンダリングされています。 'font-size:40vw'は"大文字Mのサイズがビューポート幅の40%になるようにこのフォントをレンダリングする "と解釈することができます。なぜ文字が本当に大きいのですか? –

答えて

1

  • font-sizeは、古典的に、M.は、今のところそれで行こう。*
  • 1vwは、ビューポートの幅の1%である大文字の幅に言及しました。

したがって、font-size: 40vwは「大文字のMの幅がビューポートの幅の40%になるようにこのテキストをレンダリングする」ことを意味します。言い換えれば、それぞれのキャラクターはかなり巨大になるでしょう。

これはすべて1つの単語であり、CSSはデフォルトで単語間を分割するだけなので、改行することはありません。 (単語内の文字を分割するには、要素上でword-break: break-allを使用します)。

コメントで、ヘッダーのフォントサイズを拡大してその中のフルテキストは、ビューポートの幅の何割かです。あなたの状況に応じて、あなたはどちらか

  1. vwではまだ、font-size小さく使用し、常に予測一定の幅ではありませんそのテキストを受け入れることができます。または
  2. FitTextのようなフォントを動的にサイズ変更してみてください。

これは残念ですが、あなたが純粋なCSSで必要としていることをかなり行う方法はありません。デザイン目標を妥協するか、巧妙なJS /ハックを使用して達成するという選択がしばしばあります。


* font-size上の注意:私は上記の言ったことは本当にfont-sizeが働いているかではありません。ほとんどのフォントでは十分に近いですが、私の答えは読みやすくなります。実際の状況はより複雑です。

さらに正確な経験則はボディーの高さです。アセンダディセンダ(グラムJPのような文字の下部の下に(BDHような文字の上部)の上部から垂直距離 )を同じ行に表示します。しかし、これは非常にコースであり、しばしば間違っています。最終的にはフォントメトリックになり、フォント間で大幅に変化します。

+1

また、vwの端数を使うこともできます。 'font-size:0.7vw'はまだ有効で、少なくとも大画面では読み込みが可能です。 –

+1

お返事ありがとうございました。私の間違いは、大文字Mではなく、単語の全幅を参照するフォントサイズが混乱しているようです。あなたの想定は、テキストが親divの100%に収まるようにしたいので、FitText最も信頼性の高いオプションになるでしょう。ありがとう。 –

+0

問題は@ dungey_140です!私は首都Mビットが単純化の何かであることを説明するために答えを少し更新した。実際には、font-sizeはそれほどカットアンドドライされていません。 FitTextで幸運を祈る! :) –

関連する問題