国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
ステップ4
ユーザーがルートフォントサイズを変更した場合はどうなりますか?
極度の狀況を気にしない人のために
テキストの再調(diào)整を避ける方法
コンテナ內(nèi)の非実現(xiàn)テキスト
要約します
ホームページ ウェブフロントエンド CSSチュートリアル ビューポートに基づいて、css clamp()を使用してフォントサイズを線形にスケーリングする

ビューポートに基づいて、css clamp()を使用してフォントサイズを線形にスケーリングする

Apr 02, 2025 am 04:21 AM

ビューポートに基づいて、css clamp()を使用してフォントサイズを直線的にスケーリングする

レスポンシブタイポグラフィは、メディアクエリやCSS Calc()など、過去に多くの方法を試しました。

この記事では、さまざまな畫面サイズで動作をより予測可能にすることを目的として、ビューポートの幅が増加するにつれて、最小サイズと最大サイズの間で直線的にテキストをスケーリングするという別のアプローチclamp()

CSS関數(shù)clamp()は強力です。それはあらゆる目的で機能しますが、タイポグラフィに特に役立ちます。次のように機能します。3つの値を受け入れます。

 <code>clamp(minimum, preferred, maximum);</code>

返品値は、優(yōu)先値が最小値(最小値が返される)を下回るまで、最大値(最大値が返される)を下回るまで優(yōu)先値になります。

だから、あなたが奇妙な値を設定して最小値と最大値の間にそれを設定しないと仮定すると、それは常に優(yōu)先値ですか?さて、たとえば、優(yōu)先値の式を使用する必要があります。

 <code>.banner { width: clamp(200px, 50% 20px, 800px); /* 是的,您可以在clamp() 中進行數(shù)學運算!*/ }</code>

ビューポート幅が360px以下で、ビューポート幅が840px以下の場合、最大フォントサイズが3.5 REMの場合、要素の最小フォントサイズを1 REMに設定する必要があるとします。

言い換えると:

 <code>1rem  = 360px 及以下縮放= 361px - 839px 3.5rem = 840px 及以上</code>

361?839ピクセルのビューポート幅には、1レムと3.5レムの間で直線的にスケーリングされるフォントサイズが必要です。 clamp()を使用するのは実際には非常に簡単です!たとえば、600ピクセルのビューポート幅(360?840ピクセル)では、1REMと3.5REMの間の中間値、つまり2.25REMを取得します。

clamp()で達成しようとする目標は、線形補間と呼ばれます。2つのデータポイント間の中間情報を取得します。

これを行うための4つのステップは次のとおりです。

ステップ1

最小および最大フォントサイズ、および最小および最大ビューポート幅を選択します。この例では、フォントサイズは1REMと3.5REMで、幅は360pxと840pxです。

ステップ2

幅をREMに変換します。ほとんどのブラウザの1REMはデフォルトでは16pxであるため(後で詳細)、使用します。したがって、最小および最大ビューポート幅は、それぞれ22.5 REMと52.5 REMになります。

ステップ3

ここでは、數(shù)學の側(cè)面に少し偏っています。結(jié)合すると、ビューポート幅とフォントサイズはxおよびy座標系に2つのポイントを形成し、これらのポイントは線を形成します。

この線が必要です。具體的には、その勾配とY軸との交差が必要です。これが計算方法です:

 <code>slope = (maxFontSize - minFontSize) / (maxWidth - minWidth) yAxisIntersection = -minWidth * slope minFontSize</code>

これにより、0.0833の勾配値と-0.875のY軸交差値になります。

ステップ4

次に、 clamp()関數(shù)を構(gòu)築します。優(yōu)先値の式は次のとおりです。

 <code>preferredValue = yAxisIntersection[rem] (slope * 100)[vw]</code>

したがって、関數(shù)は次のようになります。

 <code>.header { font-size: clamp(1rem, -0.875rem 8.333vw, 3.5rem); }</code>

次のデモで結(jié)果を視覚化できます。

続けて試してみてください。ご覧のとおり、ビューポート幅が840pxの場合、フォントサイズが拡大し、ビューポート幅が360pxの場合、フォントサイズが減少します。間のすべてが線形方法で変化します。

ユーザーがルートフォントサイズを変更した場合はどうなりますか?

このアプローチでは小さな欠陥に気づいたかもしれません。ルートフォントサイズがあなたの考え(前の例では16px)であり、決して変更されない場合にのみ機能します。

これがルートフォントサイズであると仮定するため、幅360pxと840pxをREMユニットに16で除算して変換します。ユーザーがデフォルトの16pxの代わりに18pxなどの別のルートフォントサイズを設定した場合、計算は間違っており、予想どおりにテキストがサイズを変更しません。

ここで使用する方法は1つしかありません。これは、(1)ページが読み込まれているときにコードに必要な計算を行う、(2)ルートフォントサイズの変更を聞き、(3)変更が発生した場合にすべてを再計算することです。

計算を?qū)g行するための便利なJavaScript関數(shù)は次のとおりです。

 //ピクセルでビューポート幅とREM関數(shù)ClampBuilderのフォントサイズを取得します(Minwidthpx、maxwidthpx、minfontsize、maxfontsize){
  const root = document.queryselector( "html");
  const pixelsperrem = number(getComputedStyle(root).fontsize.slice(0、-2));

  const minwidth = minwidthpx / pixelsperrem;
  const maxwidth = maxwidthpx / pixelsperrem;

  const slope =(maxfontsize -minfontsize) /(maxwidth -minwidth);
  const yaxisintersection = -minwidth * slope minfontsize;

  return `clamp($ {minfontsize} rem、$ {yaxisintersection} rem $ {slope * 100} vw、$ {maxfontsize} rem)`;
}

// clampbuilder(360、840、1、3.5) - > "Clamp(1Rem、-0.875Rem 8.333VW、3.5rem)"

返された文字列をCSSに挿入する方法を意図的に省略しました。これは、ニーズに応じてこれを行うには多くの方法があり、ネイティブCSS、CSS-in-JSライブラリなどを使用しているかどうかを省略しています。また、フォントサイズの変更に関するネイティブイベントはないため、手動で確認する必要があります。 setIntervalを使用して1秒に1回チェックできますが、これはパフォーマンスに影響を與える可能性があります。

これは極端な狀況のようなものです。ブラウザのフォントサイズを変更する人はほとんどなく、ウェブサイトにアクセスするときに変更する人はほとんどいません。しかし、あなたがあなたのウェブサイトを可能な限り敏感にしたいなら、これはそれを行うための最良の方法です。

極度の狀況を気にしない人のために

更新:ここで共有されているリソースは、この記事が最初に公開されてから動作を停止しました。さまざまなビューポートでフォントサイズを決定するのに役立つ計算機を探している場合は、最新の流體タイポグラフィを利用するFluid型ジェネレーターの使用を検討してください。

テキストの再調(diào)整を避ける方法

タイポグラフィのサイズに対するこのような細心の制御により、テキストが異なるビューポート幅で再調(diào)整するのを防ぐなど、他のクールなことを行うことができます。

これはテキストの通常の動作です。

しかし、今では、私たちのコントロールにより、テキストを同じ數(shù)の行に保持することができます。どのビューポート幅に関係なく、常に同じ単語にラインを包みます。

では、どうすればこれを行うことができますか?まず、フォントサイズとビューポート幅の比率は同じままでなければなりません。この例では、320pxの1REMから960pxの3REMに変更します。

 <code>320 / 1 = 320 960 / 3 = 320</code>

以前に書かれたclampBuilder()関數(shù)を使用すると、次のようになります。

 const text = document.queryselector( "p");
text.style.fontsize = clampBuilder(320、960、1、3);

同じ幅とフォント比を維持します。これを行う理由は、同じ數(shù)の行を維持できるように、テキストが各幅に正しいサイズを持っていることを確認する必要があるからです。それはまだ異なる幅で再調(diào)整されますが、これは私たちがしなければならない次の作業(yè)に必要です。

正しいフォントサイズを持つだけでは不十分であるため、CSS文字(CH)ユニットからヘルプを取得する必要があります。 CHユニットは、要素フォントのグリフ「0」の幅に相當します。 width: 100%を設定するのではなく、 width: Xchを使用することで、ビューポートと同じくらい広いテキスト本體をビューポートと同じ幅にしたいと考えています。

xを見つけるには、ビューポート幅が320pxの場合、最小ビューポート幅320pxをフォントサイズの要素のCHサイズで除算する必要があります。この場合、それは1 remです。

心配しないでください、ここに要素のCHサイズを計算するためのコードスニペットがあります:

 //目的のフォントサイズで要素の「0」グリフ(ピクセル?yún)g位)の幅を返します
関數(shù)calculatech(要素、fontsize){
  const zero = document.createelement( "span");
  zero.innertext = "0";
  zero.style.position = "absolute";
  zero.style.fontsize = fontsize;

  Element.AppendChild(Zero);
  const chpixels = zero.getBoundingClientRect()。width;
  Element.RemoveChild(Zero);

  chpixelsを返します。
}

これで、テキストの幅を設定し続けることができます。

関數(shù)calculatech(要素、fontsize){...}

const text = document.queryselector( "p");
text.style.fontsize = clampBuilder(320、960、1、3);
text.style.width = `$ {320 / calculatech(text、" 1rem ")} ch`;

うわー、待って。何か悪いことが起こりました。物事を臺無しにする水平スクロールバーがあります!

約320pxについて話すとき、垂直スクロールバーを含むビューポートの幅について話しています。したがって、テキストの幅は、可視領(lǐng)域の幅とスクロールバーの幅に設定されているため、水平にオーバーフローします。

では、垂直スクロールバーの幅を含まないメジャーを使用してみませんか? CSS VWユニットのおかげです。 clamp()でVWを使用してフォントサイズを制御していることを忘れないでください。 VWには、垂直スクロールバーの幅が含まれていることがわかります。これにより、Scrollbarを含むビューポート幅とともにフォントスケールが行われます。再調(diào)整を避けたい場合、幅は、スクロールバーを含むビューポート幅に比例する必要があります。

それで、私たちは何をすべきですか?私たちがするとき:

 text.style.width = `$ {320 / calculatech(text、" 1rem ")} ch`;

…結(jié)果を1未満に掛けることで結(jié)果を絞り込むことができます。0.9は問題を解決できます。これは、テキストの幅がビューポート幅の90%になることを意味します。これは、スクロールバーが取り上げる小さなスペースを補うのに十分です。少數(shù)の數(shù)値を使用して狹くすることができます(0.6など)。

関數(shù)calculatech(要素、fontsize){...}

const text = document.queryselector( "p");
text.style.fontsize = clampBuilder(20、960、1、3);
text.style.width = `$ {320 / calculatech(text、" 1rem ") * 0.9} ch`;

320から數(shù)ピクセルを減算する傾向があるかもしれません。

 text.style.width = `$ {(320-30) / calculatech(text、" 1rem ")} ch`;

これを行うことの問題は、それが復帰問題を回復することです!これは、320から差し引くとViewportとFont比を破壊するためです。

テキストの幅は、常にビューポート幅の割合でなければなりません。もう1つ注意すべきことは、サイトを使用するすべてのデバイスに同じフォントをロードすることを確認する必要があるということです。これは明らかですね。さて、ここにあなたのテキストを逸脫するかもしれない小さな詳細があります。 font-family: sans-serifすべてのブラウザで同じフォントが使用されることを保証しません。 sans-serif 、Windows用のChromeにArialを設定しますが、Android用のChromeにロボットを設定します。さらに、一部のフォントのジオメトリは、すべてを正しく行う場合でも、再調(diào)整を引き起こす可能性があります。 Monowidthフォントは、最良の結(jié)果を生み出す傾向があります。したがって、フォントが正確であることを確認してください。

次のデモンストレーションで、この非回復例を參照してください。

コンテナ內(nèi)の非実現(xiàn)テキスト

私たちが今しなければならないことは、テキスト要素に直接ではなく、コンテナにフォントのサイズと幅を適用することです。その中のテキストは、 width: 100%に設定する必要があります。段落とタイトルの場合、これはブロックレベルの要素自體であり、コンテナの幅を自動的に埋めるため、必要ありません。

この方法を親の容器に適用することの利點の1つは、フォントのサイズと幅を1つずつ設定することなく、子供が自動的に応答してサイズを変更することです。また、他の要素に影響を與えることなく単一の要素のフォントサイズを変更する必要がある場合、フォントサイズをEM値に変更するだけで、コンテナのフォントサイズに自然に関連します。

回復しないテキストはうるさいですが、それはデザインに良い結(jié)果をもたらす微妙な効果です!

要約します

要約すると、実際のシナリオでこれがどのように見えるかについての小さなデモをまとめました。

この最後の例では、ルートフォントサイズを変更することもでき、 clamp()関數(shù)は自動的に再計算され、テキストがいずれの場合でも正しいサイズになります。

この記事の目標は、フォントサイズでclamp()を使用することですが、この同じ手法を使用して、長さユニットのCSS屬性を受信できます。今、私はあなたがそれをどこでも使うべきだと言っているのではありません。多くの場合、良いfont-size: 1remで十分です。必要なときにどれだけコントロールできるかを見せたいだけです。

個人的には、 clamp()はCSSで最高のものの1つであると信じており、他の使用がますます広く使用されるにつれて人々が思いつくのを楽しみにしています!

以上がビューポートに基づいて、css clamp()を使用してフォントサイズを線形にスケーリングするの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお勧めします。

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

私のCSSは小文字でなければなりませんか? 私のCSSは小文字でなければなりませんか? Jun 19, 2025 am 12:29 AM

いいえ、CSSDOESNOTHAVETOBEINLOWERCASE。

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

Autoprefixerとは何ですか?それはどのように機能しますか? Autoprefixerとは何ですか?それはどのように機能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動的に追加するツールです。 1.エラーで接頭辭を手動で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構(gòu)成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動で追加しない、構(gòu)成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお勧めします。

CSSカウンターとは何ですか? CSSカウンターとは何ですか? Jun 19, 2025 am 12:34 AM

csScountersCantAnationally-bersectionSandLists.1)usecounter-resettoinitialize、counter-incrementtoincrease、andcounter()orcounters()todisplayvalues.2)を組み合わせたjavascriptfordynamiccontenttoensureaCurateupdatesと組み合わせます。

CSS:ケースはいつ重要ですか(いつそうではありませんか)? CSS:ケースはいつ重要ですか(いつそうではありませんか)? Jun 19, 2025 am 12:27 AM

CSSでは、セレクターと屬性名はケースに敏感ですが、値、名前の色、URL、およびカスタム屬性はケースに敏感です。 1.バックグラウンドカラーや背景色など、セレクターと屬性名はケース非感受性です。 2。値の16進數(shù)色は大文字と小文字を區(qū)別しますが、赤と赤などの名前の色は無効です。 3. URLは癥例に敏感であり、ファイルロードの問題を引き起こす可能性があります。 4.カスタムプロパティ(変數(shù))はケースに敏感であり、使用する場合はケースの一貫性に注意を払う必要があります。

conic-gradient()関數(shù)とは何ですか? conic-gradient()関數(shù)とは何ですか? Jul 01, 2025 am 01:16 AM

TheConic-Gradient()functionsscreateScular勾配の勾配は、測定されていることを確認してください

See all articles