Maison > interface Web > tutoriel CSS > le corps du texte

Comment puis-je obtenir une compatibilité entre navigateurs pour les images d'arrière-plan en niveaux de gris en CSS ?

Susan Sarandon
Libérer: 2024-10-25 19:15:59
original
788 Les gens l'ont consulté

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

Images d'arrière-plan en niveaux de gris en CSS

Problème :

Obtenir la prise en charge de la décoloration entre navigateurs Les images d'arrière-plan CSS en niveaux de gris restent un défi. Bien que l'effet de niveaux de gris du filtre CSS3 fonctionne efficacement dans les navigateurs modernes comme Chrome et Safari, il échoue dans les navigateurs plus anciens tels que Firefox, IE et les navigateurs mobiles.

Solution :

Utilisation de filtres SVG :

La solution implique l'utilisation de filtres SVG, qui fournissent une approche multi-navigateurs pour appliquer des transformations de couleur. Cette technique consiste à créer une URL de données avec le filtre SVG suivant :

<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>
Copier après la connexion

En appliquant ce filtre à l'image de fond à l'aide de la propriété filter, on peut obtenir un effet de niveaux de gris :

<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>
Copier après la connexion

Utilisation de jQuery pour le basculement dynamique :

Pour le basculement dynamique de l'effet de niveaux de gris, vous pouvez utiliser 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>
Copier après la connexion

Compatibilité IE10-11 :

Pour IE10-11, une autre approche est requise en raison des changements dans le rendu du navigateur. Le filtre SVG suivant peut être utilisé pour la désaturation, obtenant un effet d'échelle de gris similaire :

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal