ユーザーの画面解像度に対するフォントサイズは?


84

私は流動的なウェブサイトを持っていて、メニューはその幅の20%です。メニューのフォントサイズを適切に測定して、常にボックスの幅に合わせ、次の行に折り返さないようにします。「em」を単位として使用することを考えていましたが、これはブラウザのフォントサイズに関連しているため、解像度を変更してもフォントサイズは同じままです。

ptsとパーセンテージも試してみました。必要なものは何も機能しません...

進め方のヒントを教えてください。

回答:


51
@media screen and (max-width : 320px)
{
  body or yourdiv element
  {
    font:<size>px/em/rm;
  }
}
@media screen and (max-width : 1204px)
{
  body or yourdiv element
  {
    font:<size>px/em/rm;
  }
}

画面の画面サイズに応じて手動で指定できます。画面サイズを変えて、フォントサイズを手動で追加するだけです。


16
重要な注意:これをHTMLヘッドに追加する必要があります。<meta name="viewport" content="width=device-width" /> また、より「応答性の高い」感触のためにmax-width代わりに使用することもできますmax-device-width
Sheharyar 2013

@ user65165あなたが言おうとしていることがわかりませんでしたか?
Arpit Srivastava 2017年

max-device-width機能していません。ブラウザの画面を調整すると、max-widthのみが機能します。
ラミサアンジュムアディティ2018

54

あなたが使用することができem%px。ただし、メディアクエリについては、media-queries このリンク参照してください。また、CSS3は現在のビューポートのサイズに比べて物事をサイジングするためにいくつかの新しい値が設定されていますvwvhvmin。それについてのリンクを参照してください。


28
vwvhvminこの答えを揺すります。
フランク・ラマー2013年

1
ビューポートユニットがすべての*ブラウザでサポートされていることを考えると、これは現在の正解です:caniuse.com/#feat=viewport-units
cazzer 2016年

忘れてはいけないvmax
live2に格納

31

新しい方法

これを達成する方法はいくつかあります。

CSS3は、ビューポートに関連する新しいディメンションをサポートします。しかし、これはアンドロイドでは機能しません。

  1. 3.2vw =ビューポートの幅の3.2%
  2. 3.2vh =ビューポートの高さの3.2%
  3. 3.2vmin = 3.2vwまたは3.2vhの小さい方
  4. 3.2vmax = 3.2vwまたは3.2vhの大きい方

    body
    {
        font-size: 3.2vw;
    }
    

参照css-tricks.com /を....とも見て.... caniuse.com /

オールドウェイ

  1. メディアクエリを使用しますが、いくつかのブレークポイントにフォントサイズが必要です

    body
    {
        font-size: 22px; 
    }
    h1
    {
       font-size:44px;
    }
    
    @media (min-width: 768px) 
    {
       body
       {
           font-size: 17px; 
       }
       h1
       {
           font-size:24px;
       }
    }
    
  2. %またはremの寸法を使用します。基本フォントサイズを変更するだけで、すべてが変わります。以前のものとは異なり、毎回h1ではなく本文のフォントを変更するか、ベースのフォントサイズをデバイスのデフォルトに設定してすべてemに残すことができます。

    • 「rootems」(rem):「rem」はスケーラブルなユニットです。1remはbody / htmlのフォントサイズに等しくなります。たとえば、ドキュメントのフォントサイズが12ptの場合、1emは12ptに等しくなります。ルートEmは本質的にスケーラブルであるため、2emは24ptに等しく、.5emは6ptに等しいなどです。

    • パーセント(%):パーセントの単位は「em」の単位によく似ていますが、いくつかの基本的な違いがあります。何よりもまず、現在のフォントサイズは100%に等しい(つまり、12pt = 100%)。パーセント単位を使用している間、テキストはモバイルデバイスとアクセシビリティのために完全にスケーラブルなままです。

kyleschaeffer.com / ...を参照してください。


font-size:私の場合は3.2vwで動作しました。ブラウザのサポートについてはよくわかりませんが。
manpikin

「emは現在のフォントサイズに等しい。たとえば、ドキュメントのフォントサイズが12ptの場合、1emは12ptに等しい。」実際にemは、コンテナのフォントサイズを基準にしています。これにより、コンテナのフォントサイズも設定されている場合に予期しない動作が発生する可能性がありemます...ドキュメントフォントに対する相対的なサイズを取得するには、を使用しますrem
Stijn de Witt

19

私は素晴らしいJSソリューションを開発しました-これは完全にレスポンシブなHTML(つまりパーセンテージで構築されたHTML)に適しています

  1. フォントサイズの定義には「em」のみを使用します。

  2. htmlフォントサイズは10ピクセルに設定されています。

    html {
      font-size: 100%;
      font-size: 62.5%;
    }
    
  3. ドキュメント対応でフォントサイズ変更関数を呼び出します。

//これにはJQueryが必要です

function doResize() {
    // FONT SIZE
    var ww = $('body').width();
    var maxW = [your design max-width here];
    ww = Math.min(ww, maxW);
    var fw = ww*(10/maxW);
    var fpc = fw*100/16;
    var fpc = Math.round(fpc*100)/100;
    $('html').css('font-size',fpc+'%');
}

興味深い解決策は、悪くはありません。使い方を使って学んだことをテストしましたが、これはmaxWサイズのウィンドウで10pxサイズのテキストに修正されましたが、大丈夫ですか?でもこれは?「16」とは何ですかこれは何ですか?var fpc = fw * 100/16;
ドメニコモナコ


5

なぜこれが複雑なのかわかりません。私はこの基本的なJavaScriptを実行します

<body onresize='document.getElementsByTagName("body")[0].style[ "font-size" ] = document.body.clientWidth*(12/1280) + "px";'>

ここで、12は1280の解像度で12pxを意味します。ここで必要な値を決定します



2

https://stackoverflow.com/a/17845473/189411のバリアントを作成しました

ここで、「チェック」サイズにするボックスの最小サイズと最大サイズに関連して、最小テキストサイズと最大テキストサイズを設定できます。さらに、テキストサイズを適用するボックスとは異なるdom要素のサイズを確認できます。

#size-2要素の幅500pxと960pxに基づいて、#size-2要素のテキストのサイズを19pxから25pxに変更します

resizeTextInRange(500,960,19,25,'#size-2');

ボディ要素の幅500pxと960pxに基づいて、#size-1要素のテキストのサイズを13pxから20pxに変更します

resizeTextInRange(500,960,13,20,'#size-1','body');

完全なコードはhttps://github.com/kiuz/sandbox-html-js-css/tree/gh-pages/text-resize-in-range-of-text-and-screen/srcにあります

function inRange (x,min,max) {
    return Math.min(Math.max(x, min), max);
}

function resizeTextInRange(minW,maxW,textMinS,textMaxS, elementApply, elementCheck=0) {

    if(elementCheck==0){elementCheck=elementApply;}

    var ww = $(elementCheck).width();
    var difW = maxW-minW;
    var difT = textMaxS- textMinS;
    var rapW = (ww-minW);
    var out=(difT/100)*(rapW/(difW/100))+textMinS;
    var normalizedOut = inRange(out, textMinS, textMaxS);
    $(elementApply).css('font-size',normalizedOut+'px');

    console.log(normalizedOut);

}

$(function () {
    resizeTextInRange(500,960,19,25,'#size-2');
    resizeTextInRange(500,960,13,20,'#size-1','body');
    $(window).resize(function () {
        resizeTextInRange(500,960,19,25,'#size-2');
        resizeTextInRange(500,960,13,20,'#size-1','body');
    });
});

1

メディアクエリを使用しないと、フォントサイズを徐々に拡大できるので便利です。

vw単位を使用すると、ビューポートサイズを基準にしてフォントサイズが調整されます。

vw単位をフォントサイズに直接変換すると、モバイル解像度とデスクトップの両方のスイートスポットに到達するのが難しくなります。

次のようなものを試すことをお勧めします。

body {
    font-size: calc(0.5em + 1vw);
}

クレジット:CSS In Depth


0
<script>
function getFontsByScreenWidth(actuallFontSize, maxScreenWidth){
     return (actualFontSize / maxScreenWidth) * window.innerWidth;
}

// Example:
fontSize = 18;
maxScreenWidth = 1080;
fontSize = getFontsByScreenWidth(fontSize, maxScreenWidth)

</script>

これがお役に立てば幸いです。私はフェーズゲームにこの式を使用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.