画面サイズに反比例してfont-sizeを達成するための@mediaクエリの代替手段はありますか? (例えば、小さな画面ではフォントが小さくなる2vw
の反対の効果)。@mediaクエリやjavascriptを使用しない、より小さい画面上の大きなフォント?
私の最初の試みは、ビューポートの幅の増分で値を分割していましたが、が動作し、残念なことに、font-size: calc(100/2vw);
は機能しません。定義により
画面サイズに反比例してfont-sizeを達成するための@mediaクエリの代替手段はありますか? (例えば、小さな画面ではフォントが小さくなる2vw
の反対の効果)。@mediaクエリやjavascriptを使用しない、より小さい画面上の大きなフォント?
私の最初の試みは、ビューポートの幅の増分で値を分割していましたが、が動作し、残念なことに、font-size: calc(100/2vw);
は機能しません。定義により
あなたは、ビューポート幅の増加によりpx
値を分割することはできませんが、ビューポート幅の増加によりpx
値を減らすこの逆のサイズの挙動を達成することができます。
例:vh
vmin
とvmax
:
font-size: calc(40px - 2vw);
代わりに、ビューポートのサイズに関連した他の3台を使用することができます。
例:
font-size: calc(40px - 2vh);
font-size: calc(200px - 20vmin);
font-size: calc(200px - 20vmax);
VW - ビューポートの幅の1%と比較*。
vh - ビューポートの高さの1%に相当*。
vmin - ビューポートの*小さい方の寸法の1%に相対します。
vmax - ビューポートの*より大きい次元の1%に相対します。*ビューポート =ブラウザのウィンドウサイズ。
出典:w3schools
私はこの解決策を今すぐ見つけました。とにかく、新しいアイデアや情報が歓迎されるように、質問にはまだオープンな賞金があります。 –
私の答えの利点は、最小/最大サイズを持つことができ、非常に小さなパフォーマンスヒットで、1つのアイテムのみを対象とするためです。 – LGSon
、VWは、ビューポートの幅の1/100です。それでおしまい。 2vw =画面の2/100です。数学はそのようには機能しないので、反比例するような方法はありません。私は思考実験としてこれをやっていると仮定しています。あなたのコードの問題を解決しようとするよりも、私はそれを残しておきます。
JavaScriptのサイズに反比例するフォントのサイズを計算することができます。 Here's a codepen
HTML:
<div >
This is text
</div>
JS:
$(window).resize(function() {
area = 50000;
width = $(window).width();
fontSize= (Math.ceil(area/width));
$('div').css('font-size', fontSize);
}).resize();
私はあなたが行うことができる最高のビューポートに相対ではないフォントサイズを使用することであると思います。たとえば、1em
はモバイルデバイスでは比較的大きく、デスクトップクライアントでは比較的小さくなります。流体レイアウトを使用する場合、em
は完璧です。静的レイアウトを使用する場合、最適なオプションはおそらくpx
になります。しかし、px
を使用するのは、モバイルデバイスが潜在的にデスクトップクライアントと同じくらい多くのピクセルを持つ可能性があるため、ちょっとしたことです。
5vw
前者評価さと距離の表現ではない50/vw
後者評価するからであるcalc(100/2vw)
ないcalc(10vw/2)
動作することが、理由。より正確には、エンジンはスカラーでしか分割できません
合計で、やりたいことをするには流体レイアウトがあり、フォントサイズの単位としてem
を使用する必要があります。しかし、JavaScriptなしでビューポートのサイズの直接の比率を得ることはできません。もちろん、レイアウトの目的には一般的に頼らないといけません。この1つはパフォーマンスは非常に少ないと一度だけリサイズあたり1つののみの要素、体のために実行する必要が影響を与えるのにここ
は、スクリプトソリューション(あなたが望んでいた場合でも、見つかった、唯一のCSS)です。
これはCSSに比べて1つの利点があります。最小/最大サイズを持つことができ、スクリプトを有効にしてリスクのない方法でプログレッシブエンハンスメントとして機能します。
var fontMax = 40, fontMin = 14;
function sizeBodyFont() {
var fontSize = ((screen.width/window.innerWidth) * 10);
document.body.style.fontSize = Math.min(Math.max(fontSize,fontMin),fontMax) + 'px';
}
sizeBodyFont();
(function(el) {
window.addEventListener('resize', sizeBodyFont);
}(document.querySelector('#test')))
body {
font-size: 20px;
}
span {
font-size: 100%;
}
div {
font-size: 150%;
}
<span>Hey there</span>
<div>Hey there</div>
の**賞金の理由**:** a **)のためのものです。プレーンなjavascriptは目標(css-only)以上ですが、jQueryよりも軽いです。 ** b **)間違った情報が取り除かれ、答えが更新されます** c **)スニペットの例は非常にうまく動作します。 –
あなたは相対的なフォントスタイルを使用することができます。 like -
html, body {
font-size: 16px;
}
h1 {
font-size: 2.5em;
}
p {
font-size: 1em;
}
"not a number"で分けることができないためです。ディメンション値を数値で割ることは、10vwを2で割った値が5vwであるために機能します。しかし、2vwで10を分けるとどうなるでしょうか?結果は5/vw、または「1/vwの5倍」となりますが、これは意味をなさないものです。コメントのために –
ありがとう、マイク;そのより明確な今。私の目的は、フォントサイズを画面サイズに反比例させるために 'calc()'メソッドを使用していましたが、この方法では不可能だと思われます。 –
最終的な価値は何になりますか... 50vw ??? – Aziz