Magazine Gadgets

Comment changer dynamiquement la couleur pendant le défilement avec CSS

Publié le 04 juin 2023 par Mycamer

Avec des éléments de site Web fixes tels que des logos, vous rencontrerez souvent une confusion de couleurs lors du défilement de la page. Cela peut se produire si l’élément statique passe sur une section du site Web qui partage la même couleur avec l’élément. L’élément statique sera invisible tant qu’il reposera sur cet arrière-plan.

Pour résoudre ce problème, vous devez inverser dynamiquement la couleur du logo lorsqu’il passe sur un élément de la même couleur. Apprenez à obtenir cet effet en utilisant uniquement CSS, sans JavaScript requis !

UTILISEZ LA VIDÉO DU JOURFAITES DÉFILER POUR CONTINUER AVEC LE CONTENU

Télécharger le code de démarrage

Pour suivre ce tutoriel, téléchargez le code de démarrage depuis son Référentiel GitHub à votre ordinateur local.

Ouvrir index.html dans un navigateur qui devrait ressembler à la page montrée ici :

Capture d'écran du projet de démarrage

La page HTML contient un logo et quatre sections. Chaque section a un titre factice et trois paragraphes de texte factice. Le texte du logo est de la même couleur noire que l’arrière-plan des deuxième et quatrième sections. Cet effet vient de la nième enfant (pair) bloquer dans styles.cssqui applique le fond noir aux sections paires.

Rendre le logo collant

Avec ce code de démarrage, le logo ne colle pas au dessus. Cela signifie que le logo disparaît lorsque vous faites défiler la page. Vous pouvez transformer votre logo en en-tête collant en appliquant le position : collante propriété à l’intérieur du fichier CSS. Pour une plongée approfondie dans le positionnement en CSS, lisez notre article sur le Propriété de position CSS.

Assurez-vous que le logo adhère au haut, mais ne le faites que sur des écrans plus grands (car, sur des écrans plus petits, il pourrait recouvrir d’autres éléments). Ce qui suit Requête multimédia réactive HTML crée cet effet :

 @media(width > 980px) {
  .logo {
  position: sticky;
  top: .5rem;
  }
}

Désormais, le logo restera en haut à tout moment et vous suivra pendant que vous faites défiler. Mais vous remarquerez également que le texte disparaît lorsque vous faites défiler les sections d’arrière-plan sombre (car le texte du logo est également noir). Maintenant, regardez comment résoudre ce problème.

Pour vous assurer que le logo noir ne disparaisse pas sur des fonds noirs, vous allez devoir inverser la couleur dynamiquement. La façon dont vous feriez cela est d’utiliser le mode mix-blend propriété CSS et en lui attribuant une valeur de différence:

 @media(width > 980px) { 
  .logo {
  position: sticky;
  top: .5rem;
  mix-blend-mode: difference
  }
}

La propriété CSS mix-blend-mode spécifie comment le contenu d’un élément doit se fondre avec le contenu du parent de l’élément et son arrière-plan. La valeur différente prend la valeur de différence de chaque pixel, en inversant les couleurs claires. Donc, si les valeurs de couleur sont les mêmes, elles deviennent noires. Les différences de valeurs s’inverseront.

L’ajout de CSS ci-dessus fera disparaître complètement le logo. En effet, vous n’avez pas défini la couleur du texte du logo sur blanc en dehors de la requête média. Faites cela avec le code suivant :

 .logo { 
  color: white;
  
}

Vous avez maintenant tout configuré avec succès. Faites défiler la page et dans le fond noir. Vous verriez le logo passer du noir au blanc.

Capture d'écran de la page avec le logo coloré dynamiquement

Vous pouvez également travailler avec d’autres couleurs que le noir et blanc. Par exemple, si vous deviez changer la couleur du texte de votre logo en bleu sarcelle (#008080), vous obtiendrez la couleur rose sur fond blanc. L’image suivante illustre cela.

Capture d'écran de la page avec le logo bleu sarcelle et la couleur inversée

Dans la plupart des cas, vous voudriez que votre élément soit blanc pour obtenir les meilleurs résultats. De plus, si vous faites défiler vers le haut, vous pourriez trouver votre logo coupé en deux. Cela se produit parce que le logo existe en dehors du élément. Pour afficher le logo dans son intégralité, vous devez définir la couleur d’arrière-plan du élément au blanc.

Utiliser une image comme logo au lieu de texte

Cette technique ne fonctionne pas seulement avec du texte, mais aussi avec des images. Bien sûr, vous devez vous assurer d’utiliser une image blanche comme logo. L’exemple suivant utilise un logo lorem ipsum blanc qui se trouve dans le même dossier que le index.html déposer:

 <img src="loremipsum-297.svg" alt="Lorem Ipsum Logo">

L’image utilisée ici est un SVG (Scalable Vector Graphic), un type de fichier vectoriel.

Maintenant, la couleur de l’image de votre logo sera noire sur fond blanc, comme indiqué dans l’image ci-dessous.

Capture d'écran de la couleur du logo sur fond blanc

Mais si vous faites défiler vers un fond noir, la couleur du logo deviendra automatiquement blanche. Vous pouvez le voir dans l’image ci-dessous.

Capture d'écran de la couleur de l'image du logo sur fond noir

Vous pouvez également augmenter la taille du logo en remplaçant taille de police avec hauteur et largeur dans le bloc CSS ciblant le logo. Après tout, vous avez maintenant affaire à une image plutôt qu’à du texte.

 .logo {
  color: white;
  width: 10rem;
  
}

Si vous réduisez l’écran, la requête média ne s’appliquera plus. Cela désactivera les différents modes de fusion, faisant disparaître votre logo. Pour ramener le logo sur la page, vous devez définir le mode mix-blend propriété sur le logo en dehors de la requête média :

 .logo {
  color: white;
  width: 10rem;
  mix-blend-mode: difference;
  
}

Cela activera le mélange de mélange sur le logo à tout moment, même sur des écrans plus grands. Mais sur les petits écrans, le logo restera en haut et ne vous suivra pas lorsque vous faites défiler vers le bas (car position : collante ne fonctionne que sur les grands écrans). Enfin, pensez toujours à utiliser un logo blanc pour éviter qu’il ne disparaisse de la page.

En savoir plus Trucs et astuces CSS

En utilisant le mode mix-blend, vous pouvez créer des mises en page fascinantes avec des couleurs alternées. Mieux encore, vous n’avez pas besoin de coder en dur une couleur ou de définir des points d’arrêt car le mode mix-blend inversera la couleur de manière dynamique. Il vous permet de créer de jolis mélanges et couleurs pour des parties du contenu d’un élément en fonction de son arrière-plan direct.

CSS est souvent considéré comme l’un des langages les plus passionnants à apprendre. C’est en partie parce que CSS regorge de trucs et astuces comme celui que vous venez d’apprendre dans cet article. D’autres trucs et astuces CSS pratiques sont les effets de survol, le redimensionnement des images pour les adapter aux conteneurs, la troncation du texte avec des ellipses et l’utilisation de la transformation de texte.

to www.makeuseof.com


Abonnez-vous à notre page Facebook: https://www.facebook.com/mycamer.net
Pour recevoir l’actualité sur vos téléphones à partir de l’application Telegram cliquez ici: https://t.me/+KMdLTc0qS6ZkMGI0
Nous ecrire par Whatsapp : Whatsapp +44 7476844931



Retour à La Une de Logo Paperblog

A propos de l’auteur


Mycamer Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines