Rumah > hujung hadapan web > tutorial css > 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
Lepaskan: 2024-10-26 21:41:02
asal
1013 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Penggunaan:

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

@include placeholder {
  color: red;
}</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan