@extendは、クラスが互いに一連のプロパティを共有できるようにするSASSの機能です。 SASSのクラスを伸ばすセレクターは、セレクターが拡張されているクラスのすぐ隣に含まれているため、コンマ分離リストになります。
その構文はそうです:
使用法
上記の例では、次の機能を備えた.fooと.barを定義しました。
@extend
を使用しています上記の書き換えられたCSSでは、SASSを使用することで、マークアップがCSSだけよりもクリーンになるのに役立つことがわかります。
codepenのSitePoint(@sitepoint)によるSCSSのプロパティのペンの複製を参照してください。<span><span>@extend .class-name;</span></span>
から複数のクラスを移動します
あるクラスが別のクラスのすべてのスタイルを持っている必要がある場合、ページを設計する場合、多くの場合があります。 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のhtml:
上記の例では、
上記の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>
ケース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>
<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</span> class<span>="candy strawberry-candy"</span>></span> </span> This is the strawberry candy! <span><span><span></div</span>></span></span>
@extend
の利点 上記の例を歩いている@extendを介して継承のいくつかの利点を見ることができます。これらには次のものが含まれます
私の観点からは、優れた製品を作るとき、エンドユーザーの視点だけでなく、開発戦略の質も考慮しています。したがって、@extendは、各HTML要素内でよりクリーンな方法でクラスを構成するのに役立ちます。 CSSの重複の減少
Web開発では、CSSスタイル内に常に複製があります。したがって、書かれたCSSソースコードを再利用することは非常に必要です。 @Extendは、CSSが適切でクリーンである場合に再利用するのに役立ちます。
開発者はさまざまな要素のCSSを再利用でき、CSSの問題の根本原因を見つけるために必要な努力を減らし、CSS構造を素晴らしくクリーンにすることができます。 ただし、 @Extendを使用することには危険がないわけではありません。上記の利点は、@extendが慎重に使用されている場合にのみ適用されます。逆の効果を引き起こす可能性があります。
@extend@extendは、CSSファイルのサイズを大幅に増やし、注意せずに使用するとCSSのパフォーマンスに影響を与える可能性があります。私はこのような状況で痛みの割合を持っていて、@ExtEndのSASSの使用に多くの時間を費やしました。 @extendを最初に使用した方法の例は次のとおりです。
例:
は次のようにコンパイルされています
は次のようにコンパイルされています
<span><span>@extend .class-name;</span></span>
上記の例がはるかに正確で合理的であることがわかります。オブジェクトの種類のバリエーションであるために互いに継承すべきクラスにのみ @Extendを適用することにより、スコープを削減しました。たとえば、上記のスタイルはすべて、さまざまな種類のボタンに関連しています。
結論以上がSASSの@Extendを介した継承の利点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。