Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah saya boleh mencipta campuran pemegang tempat yang cekap dalam SCSS/CSS yang mengendalikan pemilih bersarang dan tidak bersarang?

Bagaimanakah saya boleh mencipta campuran pemegang tempat yang cekap dalam SCSS/CSS yang mengendalikan pemilih bersarang dan tidak bersarang?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 21:41:02822semak imbas

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

Campuran Pemegang Tempat dalam SCSS/CSS

Apabila mencipta campuran SASS untuk ruang letak, campuran mudah seperti di bawah mungkin tidak mencukupi kerana bilangan titik bertindih dan koma bertindih yang dilalui kepadanya:

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

Menggunakan @content Directive

Untuk menghantar CSS statik melalui mixin sama seperti dikehendaki, arahan @content boleh digunakan. Berikut ialah contoh:

<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>

Maklumat lanjut boleh didapati dalam Rujukan SASS di https://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content.

Pilihan @-root Mixin (Sass 3.4 dan ke atas)

Dalam Sass 3.4 dan ke atas, pilihan-at-root mixin boleh digunakan untuk mengendalikan pemilih bersarang dan tidak bersarang dengan berkesan:

<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>

Penggunaan:

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

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

Output:

<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>

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta campuran pemegang tempat yang cekap dalam SCSS/CSS yang mengendalikan pemilih bersarang dan tidak bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn