Bagaimanakah saya boleh mencapai keserasian silang pelayar untuk imej latar belakang skala kelabu dalam CSS?

Susan Sarandon
Lepaskan: 2024-10-25 19:15:59
asal
714 orang telah melayarinya

How can I achieve cross-browser compatibility for grayscale background images in CSS?

Imej Latar Belakang Skala Kelabu dalam CSS

Masalah:

Mencapai sokongan merentas pelayar untuk pudar Imej latar belakang CSS kepada skala kelabu kekal sebagai cabaran. Walaupun kesan skala kelabu penapis CSS3 berfungsi dengan berkesan dalam penyemak imbas moden seperti Chrome dan Safari, ia gagal dalam penyemak imbas lama seperti Firefox, IE dan penyemak imbas mudah alih.

Penyelesaian:

Menggunakan Penapis SVG:

Penyelesaian melibatkan penggunaan penapis SVG, yang menyediakan pendekatan merentas pelayar untuk menerapkan transformasi warna. Teknik ini melibatkan pembuatan URL data dengan penapis SVG berikut:

<code class="svg"><svg xmlns="http://www.w3.org/2000/svg">
<filter id="grayscale">
  <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0">/</feColorMatrix>
</filter>
</svg></code>
Salin selepas log masuk

Dengan menggunakan penapis ini pada imej latar belakang menggunakan sifat penapis, kami boleh mencapai kesan skala kelabu:

<code class="css">.grayscale {
  -webkit-filter: grayscale(100%);
  filter: gray;
  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
}</code>
Salin selepas log masuk

Menggunakan jQuery untuk Togol Dinamik:

Untuk togol dinamik kesan skala kelabu, anda boleh menggunakan jQuery:

<code class="jquery">$(document).ready(function () {
  $("#image").mouseover(function () {
    $(".nongrayscale").removeClass().fadeTo(400, 0.8).addClass("grayscale").fadeTo(400, 1);
  });
  $("#image").mouseout(function () {
    $(".grayscale").removeClass().fadeTo(400, 0.8).addClass("nongrayscale").fadeTo(400, 1);
  });
});</code>
Salin selepas log masuk

Keserasian IE10-11:

Untuk IE10-11, pendekatan lain diperlukan kerana perubahan dalam pemaparan penyemak imbas. Penapis SVG berikut boleh digunakan untuk penyahtepuan, mencapai kesan skala kelabu yang serupa:

<code class="svg"><svg>
  <defs>
    <filter xmlns="http://www.w3.org/2000/svg" id="desaturate">
      <feColorMatrix type="saturate" values="0" />
    </filter>
  </defs>
  <image xlink:href="http://www.polyrootstattoo.com/images/Artists/Buda/40.jpg" width="600" height="600" filter="url(#desaturate)" />
</svg></code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencapai keserasian silang pelayar untuk imej latar belakang skala kelabu dalam CSS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!