検索

SASSの@Extendを介した継承の利点

キーテイクアウト

  • SASSの@ExtEnd機能により、クラスはプロパティを互いに共有し、CSSスタイルシートの組織を簡素化し、大規模なWebサイトを効果的にスタイリングできるようにすることができます。
  • @extend機能は、CSSスタイルシートの重複を減らし、HTMLクラスをよりクリーンにし、開発者の時間と労力を節約し、CSS構造をより整理し、維持しやすくすることができます。 ただし、 @Extendを使用する場合は、CSSファイルサイズと影響力を不注意に使用すると劇的に増加させる可能性があるため、注意が払われます。継承されたクラスが継承されているオブジェクトに直接関係している場合にのみ使用する必要があります。
  • SASSは、CSSの貴重な拡張機能であり、よりクリーンで十分に構造化され、開発と保守が容易になります。以前に試したことがない人にはお勧めしますが、潜在的な落とし穴を避けるために慎重に使用する必要があります。
  • CSSスタイルシートの編成は、大規模なWebサイトを効果的にスタイリングするために重要になっていますが、プロジェクトのスタイルシートは、開発に伴い、より大きく、複雑で、維持がより困難になっています。これは、すべてをよりシンプルにするためにSASSが入ってくる場所です。
  • まだSASSを探索していない人にとっては、CSSの延長です。式、変数、ネスト、ミキシン(機能のSASSの名前)、継承などのネイティブCSSには存在しない機能を提供します。 この記事では、 @Extendを使用してSASSの継承の概要を説明します。この機能がもたらす利点と、自分のプロジェクトでそれを使用するときの私の経験をカバーします。 @extendは悪用される可能性があることに注意することが重要です。HugoGiraudelはSitePointで、Sass @extendを避けるべき理由についても書いています。したがって、@extendは論争のある主題になる可能性があることに注意してください。 Atozを見る:Sass 手紙でサスの手紙を学びます
  • このコースをご覧ください このコースをご覧ください
  • 次の例では、SCSS構文を使用します。これは、SASSの追加機能を備えたCSSのすべての機能と構造を含む構文です。
  • @extendとは?

@extendは、クラスが互いに一連のプロパティを共有できるようにするSASSの機能です。 SASSのクラスを伸ばすセレクターは、セレクターが拡張されているクラスのすぐ隣に含まれているため、コンマ分離リストになります。

その構文はそうです:

使用法

SASSの@Extendを介した継承の利点 @extendを使用すると、次のようになります:

これは次のようにコンパイルされています

上記の例では、次の機能を備えた.fooと.barを定義しました。

  • .barは.fooから継承し、親クラスのすべてのプロパティを含む.foo。
  • .barは、プロパティバックグラウンドカラーを追加して.fooを拡張します
基本を知って、@extendのいくつかのユースケースを見ていきます。

@extend

を使用しています

ユースケース1:複製

クラス間のプロパティの重複は、CSSをまとめるときに回避するのが困難です。これにより、スタイルシートがより複雑になります。たとえば、

上記の例でわかるように、。ブレイクファースト、.Lunch、および.Dinnerには、同じ値のプロパティカラー、ボーダー、ボックスシャドウ、マージン、パディングが含まれています。これらのプロパティは複製されているため、コードが乱雑に見えるため、@extendで書き直しましょう。

上記の書き換えられたCSSでは、SASSを使用することで、マークアップがCSSだけよりもクリーンになるのに役立つことがわかります。

codepenのSitePoint(@sitepoint)によるSCSSのプロパティのペンの複製を参照してください。
<span><span>@extend .class-name;</span></span>
ケース2:HTML

から複数のクラスを移動します

あるクラスが別のクラスのすべてのスタイルを持っている必要がある場合、ページを設計する場合、多くの場合があります。 HTMLで複数のクラス名を使用することにより、このケースをよく処理します。
<span><span>.foo</span> {
</span>  <span>color: black;
</span>  <span>border: 1px solid black;
</span><span>}
</span>
<span><span>.bar</span> {
</span>  <span><span>@extend .foo;</span>
</span>  <span>background-color: red;
</span><span>}</span>
私たちのcssはそうするでしょう:

そのcssのhtml:

上記の例では、
に2つのクラスがあります。いくつかのクラスがあった場合、これがどれほど厄介であるか想像してみてください:

上記のHTMLコードは非常に複雑になる可能性があります。一部のWeb開発者はこの方法でそれを好みますが、私は私のSASSスタイルでの継承を好みます:

私たちのHTMLが今のように見えます:

<span><span>.foo, .bar</span> {
</span>  <span>color: black;
</span>  <span>border: 1px solid black;
</span><span>}
</span>
<span><span>.bar</span> {
</span>  <span>background-color: red;
</span><span>}</span>
今回は1つのクラスのみが必要です。クラス用に定義されているすべてのスタイルは、クラス.Strawberry-Candyにも適用されます。これで、HTMLコードはクリーナーになりました。 codepenで@extend(@sitepoint)で@extendを使用してHTMLから複数のクラスを移動するペンを参照してください。

ケース3:複雑なセレクターを拡張

<span><span>.breakfast</span> {
</span>  <span>color: #333;
</span>  <span>border: 1px solid #bbb;
</span>  <span>box-shadow: 1px 1px 0 #ddd;
</span>  <span>margin: 0 0 10px;
</span>  <span>padding: 15px;
</span><span>}
</span>
<span><span>.lunch</span> {
</span>  <span>background-color: yellow;
</span>  <span>color: #333;
</span>  <span>border: 1px solid #bbb;
</span>  <span>box-shadow: 1px 1px 0 #ddd;
</span>  <span>margin: 0 0 10px;
</span>  <span>padding: 15px;
</span><span>}
</span>
<span><span>.dinner</span> {
</span>  <span>background-color: orange;
</span>  <span>color: #333;
</span>  <span>border: 1px solid #bbb;
</span>  <span>box-shadow: 1px 1px 0 #ddd;
</span>  <span>margin: 0 0 10px;
</span>  <span>padding: 15px;
</span><span>}</span>
クラスセレクターは、拡張できる唯一のものではありません。また、複雑なセレクターを、A:Hover、.ParentClass.Childclassなど、単一の要素に拡張することもできます。たとえば、

<span><span>.meal-box</span> {
</span>  <span>color: #333;
</span>  <span>border: 1px solid #bbb;
</span>  <span>box-shadow: 1px 1px 0 #ddd;
</span>  <span>margin: 0 0 10px;
</span>  <span>padding: 15px;
</span><span>}
</span>
<span><span>.breakfast</span> {
</span>  <span><span>@extend .meal-box;</span>
</span><span>}
</span>
<span><span>.lunch</span> {
</span>  <span><span>@extend .meal-box;</span>
</span>  <span>background-color: yellow;
</span><span>}
</span>
<span><span>.dinner</span> {
</span>  <span><span>@extend .meal-box;</span>
</span>  <span>background-color: orange;
</span><span>}</span>
これは次のようにコンパイルされています

このようにhtmlで使用できる

<span><span>.candy</span> {
</span>  <span>background-color: black;
</span>  <span>border: 1px solid red;
</span>  <span>box-shadow: 1px 1px 0 #ddd;
</span>  <span>padding: 15px;
</span><span>}
</span>
<span><span>.strawberry-candy</span> {
</span>  <span>background-color: #ff6666;
</span>  <span>color: white;
</span><span>}</span>
<span><span><span><div> class<span>="candy strawberry-candy"</span>>
  This is the strawberry candy!
<span><span><span></span></span></span>
</div></span>></span></span>
codepenで@extend(@sitepoint)で@extendを使用して複雑なセレクターを拡張するペンを参照してください。

@extend

の利点 上記の例を歩いている

@extendを介して継承のいくつかの利点を見ることができます。これらには次のものが含まれます

クリーナーhtmlクラス

2番目のケーススタディでわかるように、1つの要素で非常に多くのクラスを使用すると、問題が発生した場合に根本原因を判断することが難しくなる場合があります。 HTMLタグの構造もあまり見栄えが良くてきれいではありません。

私の観点からは、優れた製品を作るとき、エンドユーザーの視点だけでなく、開発戦略の質も考慮しています。したがって、@extendは、各HTML要素内でよりクリーンな方法でクラスを構成するのに役立ちます。 CSSの重複の減少

Web開発では、CSSスタイル内に常に複製があります。したがって、書かれたCSSソースコードを再利用することは非常に必要です。 @Extendは、CSSが適切でクリーンである場合に再利用するのに役立ちます。

時間と労力を節約します

前述の2つの利点により、開発者は開発中に時間と労力を節約できます。

開発者はさまざまな要素のCSSを再利用でき、CSSの問題の根本原因を見つけるために必要な努力を減らし、CSS構造を素晴らしくクリーンにすることができます。 ただし、 @Extendを使用することには危険がないわけではありません。上記の利点は、@extendが慎重に使用されている場合にのみ適用されます。逆の効果を引き起こす可能性があります。

@extend

の危険

自分のプロジェクトで@extendを適用しましたが、@extendを使用する際には注意の言葉を提供する必要があります。注意する必要があります。

@extendは、CSSファイルのサイズを大幅に増やし、注意せずに使用するとCSSのパフォーマンスに影響を与える可能性があります。私はこのような状況で痛みの割合を持っていて、@ExtEndのSASSの使用に多くの時間を費やしました。 @extendを最初に使用した方法の例は次のとおりです。

例:

は次のようにコンパイルされています

この例では、.base-cssは、それに基づいた多くの継承クラスを持つクラスです。この例を見ると、継承されたクラスが互いに関係していないことがわかります。ボタン用の.btnとフッター用のフッターがあります。 .base-cssから100のクラスが継承されている場合、.base-css特性を持つセレクターが増加します。これは、CSSの最終結果を大幅に不必要に複雑にします。さらに、これにより、各セレクターのプロパティを確認することがより困難になります。

SASSを再除去した後、継承されたクラスが継承しているオブジェクトに直接関係している場合にのみ @Extendを使用する必要があることに気付きました。多くの無関係な要素のブランケットルールではなく、オブジェクトまたはスタイルのバリエーションである必要があります。上記の私の例のような継承については、CSSの既存の機能に頼って、スタイルを子供の要素にカスケードする必要があります。

は次のようにコンパイルされています
<span><span>@extend .class-name;</span></span>

上記の例がはるかに正確で合理的であることがわかります。オブジェクトの種類のバリエーションであるために互いに継承すべきクラスにのみ @Extendを適用することにより、スコープを削減しました。たとえば、上記のスタイルはすべて、さまざまな種類のボタンに関連しています。

結論

SASSは、CSSを改善して、よりクリーンで、十分に構造化され、整理され、開発と保守を簡単にすることができる貴重な拡張機能です。以前にSASSを試したことがない場合は、強くお勧めします。 SASSの基本にもっと慣れているときは、Sassの @Extendについて誰もあなたに言ったことに関するHugo GiraudelのSitePointの記事を読むことをお勧めします。また、SitePointのSASSリファレンスにSASSリファレンスガイド全体があり、探索する例がたくさんあります。

この投稿の最初のバージョンでエラーを受け取ってくれたコメントで、スティーブとエゼキエルに感謝します。その後、更新されました。 ​​はい、sassのネストされたルール内で@extendを使用できます。ただし、拡張セレクターは、ネストされたルール内ではなく、スタイルシートの上部レベルに挿入されることに注意することが重要です。これは、SASSがすべてのセレクターがドキュメントのトップレベルにある必要があるというCSSルールに従っているためです。 🎜>このエラーは、SASSのルールセットの外部で@extendを使用しようとすると発生します。このエラーを回避するには、ルールセット内で@extendを使用していることを確認してください。たとえば、「@extend .class;」を書く代わりに、「.new-class {@extend .class; }”。

sassの擬似クラスで@extendを使用できますか?ただし、 @Extendは、擬似クラス自体ではなく、擬似クラスのスタイルのみを拡張することに注意することが重要です。これは、「@extend:hover;」を使用する場合、セレクターにホバーエフェクトを追加するのではなく、代わりに次のスタイルを拡張することを意味します。 SASSで動作していませんか?

@extendがSASSで機能していない理由がいくつかあります。一般的な理由の1つは、拡張しようとしているセレクターが同じファイルに存在しないことです。もう1つの理由は、SASSでは許可されていないメディアクエリまたはネストされたルール内でセレクターを拡張しようとしていることです。 @ExtEndが機能していない場合は、これらのポイントを確認してください。

sassで複数のクラスで@extendを使用できますか?これは、クラスをコンマで分離することで行うことができます。たとえば、「.new-class {@extend .class1、.class2; }”は.class1と.class2の両方のスタイルを拡張します。 SASSの拡張クラス。 @extendディレクティブの後に新しいスタイルを定義することで、これを行うことができます。新しいスタイルは、@extendを使用しているセレクターの拡張クラスのスタイルをオーバーライドします。

以上がSASSの@Extendを介した継承の利点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
@KeyFrames CSS:最も使用されているトリック@KeyFrames CSS:最も使用されているトリックMay 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversitility andpowerincreatingsmoothcssanimations.keytricksinclude:1)defingsmoothtransitionsbetweenstates、2)AnimatingMultipleProperiessimally、3)3)bendorprefixesforbrows -compativity、4)組み合わせwithjavasfo

CSSカウンター:自動番号の包括的なガイドCSSカウンター:自動番号の包括的なガイドMay 07, 2025 pm 03:45 PM

csScounterSareSareusedTomageautomaticinginginwebdesigns.1)それらは、コンテンツ、リスト、および積極的なものを使用することができます

スクロール駆動型のアニメーションを使用したモダンなスクロールシャドウスクロール駆動型のアニメーションを使用したモダンなスクロールシャドウMay 07, 2025 am 10:34 AM

特にモバイルデバイスでは、スクロールシャドウを使用することは、Chrisが以前にカバーした微妙なUXです。 Geoffは、アニメーションタイムラインプロパティを使用する新しいアプローチをカバーしました。これがさらに別の方法です。

画像マップを再検討します画像マップを再検討しますMay 07, 2025 am 09:40 AM

簡単に復習してみましょう。画像マップはHTML 3.2に戻ります。ここで、最初にサーバー側マップを使用してから、マップとエリア要素を使用して画像上でクリック可能な領域を定義したクライアント側マップをマップしました。

開発者:すべての開発者の調査開発者:すべての開発者の調査May 07, 2025 am 09:30 AM

State of Devsの調査は現在、参加に対して開かれており、以前の調査とは異なり、コードを除くすべてをカバーしています:キャリア、職場だけでなく、健康、趣味などもあります。 

CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!