Maison  >  Article  >  interface Web  >  Comment obtenir des images d'arrière-plan en niveaux de gris avec la compatibilité CSS entre navigateurs ?

Comment obtenir des images d'arrière-plan en niveaux de gris avec la compatibilité CSS entre navigateurs ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 17:19:29715parcourir

How to Achieve Grayscale Background Images with CSS Cross-Browser Compatibility?

Comment obtenir des images d'arrière-plan en niveaux de gris avec la compatibilité CSS entre navigateurs

Créer une image d'arrière-plan en niveaux de gris à l'aide de CSS peut être un défi en raison des incohérences du navigateur . Voici une solution complète qui fonctionne sur différents navigateurs :

Méthode 1 : Filtre CSS3

La propriété de filtre CSS3, spécifiquement grayscale(), vous permet d'appliquer un effet de niveaux de gris aux images d’arrière-plan. Cependant, cette technique n'est prise en charge que par les navigateurs modernes comme Chrome et Safari.

Exemple :

<code class="CSS">.grayscale {
  background-image: url(yourimage.jpg);
  -webkit-filter: grayscale(100%);
  filter: grayscale(100%);
}</code>

Méthode 2 : Filtre SVG

Pour une compatibilité entre navigateurs, vous pouvez utiliser un filtre SVG pour obtenir des effets en niveaux de gris. Cette méthode nécessite de définir un filtre dans un document SVG et de le référencer dans votre CSS.

Exemple :

Filtre SVG :

<code class="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></code>

CSS :

<code class="CSS">.grayscale {
  background-image: url(yourimage.jpg);
  filter: url(#grayscale);
}</code>

Méthode 3 : jQuery Toggle

Si vous souhaitez basculer entre les niveaux de gris et non -niveaux de gris dynamiquement, vous pouvez utiliser jQuery.

Exemple :

jQuery :

<code class="JavaScript">$(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>

HTML :

<code class="HTML"><div id="image" class="nongrayscale">
  Rollover this image to toggle grayscale
</div></code>

CSS :

<code class="CSS">.grayscale {
  background: url(yourimagehere.jpg);
  -moz-filter: url("data:image/svg+xml;utf8,...");
  -o-filter: url("data:image/svg+xml;utf8,...");
  -webkit-filter: grayscale(100%);
  filter: gray;
  filter: url("data:image/svg+xml;utf8,...");
}

.nongrayscale {
  background: url(yourimagehere.jpg);
}</code>

Compatibilité IE10-11 :

Pour IE10 et IE11, une approche alternative consiste à utiliser un filtre SVG avec un élément feColorMatrix.

Exemple :

<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="yourimage.jpg" width="600" height="600" filter="url(#desaturate)" />
</svg></code>

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!

Déclaration:
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