目次
CSSプリプロセッサとは何ですか?なぜSASSはそれを必要とするのですか?
SASSは、ドライの書き込み(自分自身を繰り返さないでください)コードをどのように役立ちますか?
SASSを使用する潜在的な落とし穴は何ですか?
学習とSASSの使用を開始する方法は?
既存のCSSコードをSASSに変換できますか?

CSSとSASS精度の物語

Feb 21, 2025 am 08:46 AM

レイアウトのパーセンテージの課題:ブラウザの違いと浮動点精度の問題

ブラウザの矛盾と浮動点精度の仕様の欠如により、レイアウトの割合は非常に困難です。

SASSの利点:精度とコードの読みやすさを向上させます

SASSは、複雑な計算を処理し、StyleSheetを読みやすくしやすくすることで精度を向上させる前処理器スクリプト言語です。ただし、SASSのデフォルト精度オプションは5ですが、場合によっては低すぎる場合があります。

関数:ブラウザの計算と丸め

calc()

CSS関数により、ブラウザは計算と丸めを処理でき、より良い結果が得られる可能性があります。この関数は、SASS操作と組み合わせて、CSS精度の両方の最高の世界を提供します。

calc(..)

初期設定

説明全体を開始する前に、私たちのケースに非常に関連する小さなコードに取り組みます。

問題は何ですか?

<code>.list-item {
  float: left;
  width: 33%;
}</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このコードの何が問題なのか疑問に思うかもしれません。外観から、大きな問題はありません。これは3列のグリッドレイアウトであり、非常に一般的です。

ただし、33%33%は99%に等しく、100%ではありません。ほとんどの場合、これは違いをもたらさないかもしれませんが、直線のアライメントを扱う場合、1%が大きな影響を与える可能性があります。幅14ピクセルの容器の1%は14ピクセルです。これはかなりの距離です。

小数点をより正確にするために小数点を移動する(または追加する)だけではないのですか?ギャップを1.4ピクセルまたは0.14ピクセルに減らすことができますが、これはもはやトラブルの価値がないと思います。次に、ここから始めます。

うまく機能しますが、それでも完璧ではありません。ジョン・アルビン・ウィルキンスは、この問題でこの問題を広範囲に議論しています。まだ読んでいない場合は、読んでください。

ブラウザはこれを処理できませんか?
<code>.list-item {
  float: left;
  width: 33.33%;
}</code>
ログイン後にコピー
ログイン後にコピー
この時点で、ブラウザがなぜそれを機能させることができないのか疑問に思うかもしれません。問題は、CSS仕様が(皮肉なことに)、パーセンテージ数のフローティングポイント精度をどうするかをブラウザベンダーに指定していないことです。 CSSの仕様で詳細が省略されると、各ブラウザが独自の方法でそれを処理することを確認できます。

上記の記事の次の例:

[…]列あたり100%の幅の6列グリッド÷6 = 16.666667%を使用します。幅1000ピクセルのビューポートで(数学を簡単にするために便利に選択しました)、各列は166.66667ピクセルに計算されます。仕様はガイドラインを提供していないため、ブラウザメーカーは独自のルールを自由に策定できます。ブラウザが最も近いピクセルに丸くなると、この例では167ピクセルが得られます。しかし、167 x 6 = 1002ピクセル以降、私たちのビューポートの6つの列すべてを収容する余地はもうありません。または、ブラウザが列あたり166ピクセルまで丸められた場合、すべての列をビューポートに完全に入れるよりも4ピクセルが少なくなります。 - ジョン・アルビン・ウィルキンス

これが起こったことです。インターネットエクスプローラーの古いバージョン(主に6および7)が最も近い整数に丸みを帯びており、レイアウトの中断を引き起こしました。 WebKitブラウザは締めくくります。これにより、壊滅的なレイアウトの結果が防止されますが、余分なスペースが残ります。 Opera(少なくとも古いレンダリングエンジンでは)は、私が説明するのが面倒だという奇妙なことをしています。しかし、仕様にはこの動作に関するルールはありませんので、誰を責める必要がありますか?もちろん、サブピクセルレンダリングを使用するブラウザではありません。最終的にこれが最良の結果を生み出す方法だからです。

とにかく、これは単に混乱であり、この記事の結論でこの問題について再び議論します。

sassはどうですか?

SASSは数学的操作をサポートしています。これは新しいものではありません。実際、SASSが最初に使用したいくつかのことの1つです(数学ベースのグリッドシステムの構築に)。容器の幅を3つの等しい部分に分割したいとSASSに伝えることができます。

<code>.list-item {
  float: left;
  width: 33%;
}</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

同じ結果を取得するためにパーセンテージ(..)関数を使用することもできます。

RubyとLibsassでは、SASSの精度オプションは5です。これは、非常に低いため、実際には問題です。
<code>.list-item {
  float: left;
  width: 33.33%;
}</code>
ログイン後にコピー
ログイン後にコピー

このコードは、次のCSSを生成します:

これはブラウザの問題を解決するものではありませんが、執筆スタイルシートを簡単にします。計算や精度に対処する必要がないだけでなく、計算を実際に表示することで、コードを読みやすく更新しやすくします。
<code>.list-item {
  float: left;
  width: (100% / 3);
}</code>
ログイン後にコピー

これは良いことだと思います。

両方の世界の最高の

これまでのところ、SASSが値をハードコードするのではなく、計算を処理させる方が良いことを学びました。さて、最良の方法は、ブラウザにこれをできる限り最良の方法で処理させることです。これを行うには、

css関数を使用できます。

calc(..)

このコードは何にもコンパイルされません。著者が書くように、ブラウザに表示されます。ブラウザは、それを最大限に活用する責任があります。ブラウザが通常の値と同じように
<code>.list-item {
  float: left;
  width: percentage(1 / 3);
}</code>
ログイン後にコピー
値を処理するかどうかは完全に正直に言っています。私は彼らが計算をしてからラウンドすると思います。一部のブラウザは、式にサブピクセルレンダリングを組み込んでいるようです。これに関する洞察がある場合は、コメントで共有してください。

calc(..)式(主にInternet Explorer 8およびOpera Mini)をサポートしていないブラウザの場合、SASS操作として表される静的値をその前に配置できます。このようにして、私たちは両方の世界で最高のものを持つことができます。

<code>.list-item {
  float: left;
  width: 33%;
}</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

結論

すぐにレビューしましょう。第一に、ブラウザの矛盾と浮動小数点精度の仕様の欠如により、レイアウトの割合を処理するのは困難です。

次に、複雑な計算によって生成されたハードコード値は通常、良い考えではありません。 SASSに近似値(5小数点)を計算できます。

さらに良いことに、ブラウザに近似値を計算できます。理想的な世界では、ブラウザが数学とレンダリングを担当するとき、それを最大限に活用できるはずです。この方向に移動するには、calc(..)関数に依存します。

これはほぼ現在の状況です。新しいものは何もありませんが、簡単なレビューが役立つと思います!

CSSおよびSASS精度(FAQ)

に関するFAQ

CSSとSASSの違いは何ですか?

CSS(Cascading Style Sheet)は、HTMLで書かれたドキュメントの外観とフォーマットを説明するために使用されるStyleSheet言語です。 SASS(SyntaxのSmart StyleSheets)は、CSSに解釈またはコンパイルされたプリプロセッサスクリプト言語です。 2つの主要な違いは、SASSには、変数、ネスト、ミックス、継承など、CSSには存在しない機能があることです。これらの機能により、SASSはCSSよりも強力で柔軟になります。

CSSとSASSでの精度はどのように機能しますか?

CSSおよびSASSの精度とは、スタイルレンダリングの詳細と精度を指します。 CSSでは、変数や関数が不足しているため、精度はしばしば制限されています。一方、SASSは、高度な機能のおかげでより高い精度を可能にします。たとえば、特定の色またはサイズの変数を定義し、スタイルシート全体で一貫して使用して、設計の正確性と一貫性を確保できます。

どんなWebプロジェクトでもSASSを使用できますか?

はい、あらゆるWebプロジェクトでSASSを使用できます。 SASSは、CSSのすべてのバージョンと互換性があります。したがって、CSSから始めて、必要に応じてSASS機能を追加できます。ただし、SASSにはプリプロセッサがブラウザが解釈できるCSSに変換する必要があることを忘れないでください。

CSSでSASSを使用することの利点は何ですか?

SASSは、CSSよりもいくつかの利点を提供します。これにより、変数、ネスト、ミックスイン、継承を使用することで、スタイルシートがより整理され、再利用可能で、メンテナンスが容易になります。 SASSは数学操作もサポートしており、スタイルシートで寸法と色を直接計算できるようにします。

CSSまたはSASSコードの精度を改善する方法は?

変数を使用して一貫した値を取得し、数学操作を使用して正確な計算を実行し、関数とミキシンを使用して再利用可能なスタイルを取得することにより、CSSまたはSASSコードの精度を改善できます。さらに、CSSリセットを使用すると、異なるブラウザー間の一貫性を確保できます。

CSSプリプロセッサとは何ですか?なぜSASSはそれを必要とするのですか?

CSSプリプロセッサは、CSSのデフォルト機能を拡張するスクリプト言語です。 StyleSheetsで変数、ネストされたルール、ミックス、機能、数学操作を使用できます。 SASSはCSSプリプロセッサです。ブラウザはCSSのみを解釈できるため、必要です。したがって、SASSコードは、Webプロジェクトで使用される前にCSSにコンパイルする必要があります。

SASSは、ドライの書き込み(自分自身を繰り返さないでください)コードをどのように役立ちますか?

SASSは、変数、Mixin、継承などの機能をサポートしています。これは、ドライコードの書き込みに役立ちます。変数を使用すると、一度に値を定義し、複数の場所で使用できます。 Mixinを使用すると、他のルールに含めることができる再利用可能なスタイルを作成できます。継承を使用すると、あるセレクターから別のセレクターにCSSプロパティのセットを共有できます。

SASSを使用する潜在的な落とし穴は何ですか?

SASSには多くの利点がありますが、潜在的な落とし穴もあります。前処理者の必要性は、開発プロセスの複雑さを高める可能性があります。さらに、ネストや混合物などの一部のSASS機能により、不適切に使用するとCSS出力が膨満し、非効率性が発生する可能性があります。

学習とSASSの使用を開始する方法は?

オンラインでSASSを学ぶために利用できるリソースがたくさんあります。公式SASS Webサイトは、開始するための包括的なガイドを提供しています。 Web開発Webサイトやオンライン学習プラットフォームでチュートリアルを見つけることもできます。 SASSを始めるには、開発環境にSASSプリプロセッサをセットアップする必要があります。

既存のCSSコードをSASSに変換できますか?

はい、既存のCSSコードをSASSに変換できます。 SASSはCSSのスーパーセットであるため、有効なCSSは有効なSASSです。まず、.cssファイルを.scss(sassy css)に変更してから、コードでsass機能の使用を徐々に開始できます。

以上がCSSとSASS精度の物語の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

静的フォームプロバイダーの比較 静的フォームプロバイダーの比較 Apr 16, 2025 am 11:20 AM

ここでは、「静的フォームプロバイダー」という用語を埋めてみましょう。あなたはあなたのHTMLを持ってきます

毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 Apr 17, 2025 am 10:55 AM

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

セクション要素との取引 セクション要素との取引 Apr 12, 2025 am 11:39 AM

2つの記事がまったく同じ日に公開されました。

マルチサムスライダー:一般的なケース マルチサムスライダー:一般的なケース Apr 12, 2025 am 10:52 AM

この2部構成のシリーズの最初の部分では、2つの親指スライダーを取得する方法を詳しく説明しました。今、私たちは&#039; llが一般的なマルチサンプスのケースを見ていますが、別のものと

HTMLダイアログ要素を使用したいくつかの実践 HTMLダイアログ要素を使用したいくつかの実践 Apr 16, 2025 am 11:33 AM

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

Google Fontsをタグ付けし、Goofonts.comを作成する方法 Google Fontsをタグ付けし、Goofonts.comを作成する方法 Apr 12, 2025 pm 12:02 PM

Goofontsは、開発者妻とデザイナーの夫によって署名されたサイドプロジェクトであり、どちらもタイポグラフィの大ファンです。 Googleにタグを付けています

それはすべて頭の中にあります:Reactヘルメットを使用してReact Poweredサイトのドキュメントヘッドを管理する それはすべて頭の中にあります:Reactヘルメットを使用してReact Poweredサイトのドキュメントヘッドを管理する Apr 15, 2025 am 11:01 AM

ドキュメントヘッドはウェブサイトの中で最も魅力的な部分ではないかもしれませんが、それに入るものは間違いなくあなたのウェブサイトの成功にとってそれと同じくらい重要です

See all articles