ホームページ  >  記事  >  ウェブフロントエンド  >  ネストされたセレクターとネストされていないセレクターを処理する効率的なプレースホルダー ミックスインを SCSS/CSS で作成するにはどうすればよいですか?

ネストされたセレクターとネストされていないセレクターを処理する効率的なプレースホルダー ミックスインを SCSS/CSS で作成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 21:41:02822ブラウズ

How can I create an efficient placeholder mixin in SCSS/CSS that handles nested and unnested selectors?

SCSS/CSS のプレースホルダー ミックスイン

プレースホルダー用の SASS ミックスインを作成する場合、次のような単純なミックスインでは不十分な場合があります。渡されるコロンとセミコロンの数:

<code class="scss">@mixin placeholder ($css) {
  ::-webkit-input-placeholder {$css}
  :-moz-placeholder           {$css}
  ::-moz-placeholder          {$css}
  :-ms-input-placeholder      {$css}  
}</code>

@content ディレクティブの使用

静的 CSS をミックスインに正確に渡すには必要に応じて、@content ディレクティブを使用できます。以下に例を示します:

<code class="scss">@mixin placeholder {
  ::-webkit-input-placeholder {@content}
  :-moz-placeholder           {@content}
  ::-moz-placeholder          {@content}
  :-ms-input-placeholder      {@content}  
}

@include placeholder {
    font-style:italic;
    color: white;
    font-weight:100;
}</code>

詳細については、SASS リファレンス (https://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content.

) を参照してください。

オプションの @-root Mixin (Sass 3.4 以降)

Sass 3.4 以降では、オプションの at-root ミックスインを使用して、ネストされたセレクターとネストされていないセレクターを効果的に処理できます。

<code class="scss">@mixin optional-at-root($sel) {
  @at-root #{if(not &amp;, $sel, selector-append(&amp;, $sel))} {
    @content;
  }
}

@mixin placeholder {
  @include optional-at-root('::-webkit-input-placeholder') {
    @content;
  }

  @include optional-at-root(':-moz-placeholder') {
    @content;
  }

  @include optional-at-root('::-moz-placeholder') {
    @content;
  }

  @include optional-at-root(':-ms-input-placeholder') {
    @content;
  }
}</code>

使用法:

<code class="scss">.foo {
  @include placeholder {
    color: green;
  }
}

@include placeholder {
  color: red;
}</code>

出力:

<code class="css">.foo::-webkit-input-placeholder {
  color: green;
}
.foo:-moz-placeholder {
  color: green;
}
.foo::-moz-placeholder {
  color: green;
}
.foo:-ms-input-placeholder {
  color: green;
}

::-webkit-input-placeholder {
  color: red;
}
:-moz-placeholder {
  color: red;
}
::-moz-placeholder {
  color: red;
}
:-ms-input-placeholder {
  color: red;
}</code>

以上がネストされたセレクターとネストされていないセレクターを処理する効率的なプレースホルダー ミックスインを SCSS/CSS で作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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