recherche
Maisoninterface Webtutoriel CSS4 effets de survol cool qui utilisent l'ombre de texte CSS

4 effets de survol cool qui utilisent l'ombre de texte CSS

Dans l'article précédent, nous avons discuté de la façon d'utiliser les propriétés d'arrière-plan CSS pour créer des effets de volants sympas. Cette fois, nous nous concentrerons sur la propriété CSS text-shadow et explorerons des effets de volants plus intéressants. Vous vous demandez peut-être comment l'ajout d'ombres au texte peut avoir un effet sympa, mais le fait est: nous ne créons pas réellement d'ombres pour ces effets de survol du texte.

Série d'effets de volants cool:

  1. Utilisez des propriétés d'arrière-plan pour obtenir un effet de survol cool
  2. Utilisez CSS Text Shadow pour obtenir un effet de survol cool (votre emplacement actuel!)
  3. Utilisez des recadrage de fond, du masquage et de la 3D pour obtenir des effets de survol cool

text-shadow mais pas d'ombre de texte?

Permettez-moi de supprimer la confusion par l'effet de survol que nous construire dans la démo suivante:

Sans regarder le code, beaucoup d'entre vous penseront intuitivement que pour chaque effet de survol, nous copierons le texte et l'animons indépendamment. Maintenant, si vous regardez le code, vous constaterez qu'aucun texte dans le HTML n'est réellement copié. Avez-vous remarqué content: "text" n'est pas utilisé dans CSS?

Les couches de texte sont entièrement créées avec text-shadow !

Effet de survol n ° 1

Décomposons le code CSS:

 .Hover-1 {
  hauteur de ligne: 1.2EM;
  Couleur: # 0000;
  Text-shadow: 
    0 0 # 000, 
    0 1.2EM # 1095C1;
  débordement: caché;
  transition: .3s;
}
.Hover-1: Hover {
  Text-shadow: 
    0 -1.2em # 000, 
    0 0 # 1095C1;
}

La première chose à noter est que pour masquer le texte réel, je définis la couleur du texte réel pour être transparent (en utilisant #0000 ). Après cela, j'utilise text-shadow pour créer deux ombres, chacune ne définit que deux valeurs de longueur. Cela signifie qu'il n'y a pas de rayon flou, résultant en une ombre claire et nette qui produit efficacement une copie du texte avec la couleur spécifiée.

C'est pourquoi j'ai affirmé dans l'introduction qu'il n'y avait pas d'ombre ici. Ce que nous faisons n'est pas tant une ombre «classique» qu'un moyen facile de copier du texte.

Nous avons deux couches de texte que nous déplacons lorsqu'ils planaient. Si nous masquons le débordement, le texte en double sera invisible et le déplacera, cela donne l'impression que le texte réel a été remplacé par un autre texte. C'est l'astuce principale pour que tous les exemples de cet article fonctionnent correctement.

Optimions le code. J'ai utilisé la valeur 1.2em plusieurs fois pour définir la hauteur et le décalage de l'ombre, ce qui en fait un candidat idéal pour les propriétés personnalisées CSS (nous l'appelons --h ):

 .Hover-1 {
  --H: 1.2EM;

  hauteur de ligne: var (- h);
  Couleur: # 0000;
  Text-shadow: 
    0 0 # 000, 
    0 var (- h) # 1095C1;
  débordement: caché;
  transition: .3s;
}
.Hover-1: Hover {
  Text-shadow: 
    0 calc (-1 * var (- h)) # 000, 
    0 0 # 1095C1;
}

Nous pouvons également simplifier davantage le code en utilisant plus de calculs calc() afin que nous n'utilisions que text-shadow une fois. (Nous avons fait la même chose dans le post précédent.)

 .Hover-1 {
  --H: 1.2EM;   

  hauteur de ligne: var (- h);
  Couleur: # 0000;
  Text-shadow: 
    0 calc (-1 * var (--_ t, 0em)) # 000, 
    0 calc (var (- h) - var (--_ t, 0em)) # 1095C1;
  débordement: caché;
  transition: .3s;
}
.Hover-1: Hover {
  --_ t: var (- h);
}

Si vous vous demandez pourquoi j'ajoute un soulignement à la variable --_t , ce n'est qu'une convention de dénomination que j'utilise pour distinguer les variables (telles que --h ) que les utilisateurs peuvent mettre à jour des variables internes (telles que --_t ) uniquement utilisées à des fins d'optimisation et ne doivent pas être modifiées. En d'autres termes, les soulignements font partie du nom de la variable et n'ont aucune signification particulière.

Nous pouvons également mettre à jour le code pour obtenir l'effet inverse, où le texte en double glisse du haut:

Nous n'avons fait qu'une petite mise à jour de text-shadow - nous n'avons rien touché d'autre!

Effet de survol n ° 2

Pour cet effet, nous animerons deux propriétés: text-shadow et background . En ce qui concerne text-shadow nous avons encore deux couches comme l'exemple précédent, mais cette fois, nous ne déplacerons qu'un d'entre eux tout en définissant la couleur de l'autre couche à transparent pendant le swap.

 .Hover-2 {
  /* haut*/
  --H: 1.2EM;

  hauteur de ligne: var (- h);
  Couleur: # 0000;
  Text-shadow: 
    0 var (--_ t, var (- h)) #fff,
    0 0 var (--_ c, # 000);
  transition: 0,3S;
}
.Hover-2: Hover {
  --_ t: 0;
  --_ C: # 0000;
}

En survol, nous déplaçons la couche de texte blanche vers le haut tout en changeant la couleur de l'autre couche en transparente. Pour ce faire, nous avons ajouté une animation background-size appliquée aux gradients:

Enfin, nous ajoutons overflow: hidden pour rendre l'animation visible uniquement dans les limites de l'élément:

 .Hover-2 {
  /* haut*/
  --H: 1.2EM;

  hauteur de ligne: var (- h);
  Couleur: # 0000;
  Text-shadow: 
    0 var (--_ t, var (- h)) #ffff,
    0 0 var (--_ c, # 000);
  arrière-plan: 
    Gradient linéaire (# 1095C1 0 0) 
    en bas / 100% var (--_ d, 0) sans répétition;
  débordement: caché;
  transition: 0,3S;
}
.Hover-2: Hover {
  --_ D: 100%;
  --_ t: 0;
  --_ C: # 0000;
}

Ce que nous faisons ici, c'est de combiner le CSS text-shadow et les propriétés background pour créer un effet de survol cool. De plus, nous pouvons utiliser des variables CSS pour optimiser le code.

Si la grammaire d'arrière-plan est bizarre, je vous recommande fortement de lire mon article précédent. Le prochain effet de survol s'appuie également sur l'animation que j'ai détaillée dans ce post. À moins que vous ne connaissiez les compétences de fond de CSS, je vous suggère de lire cet article pour plus d'informations de base avant de continuer à lire cet article.

Dans les articles précédents, vous nous avez montré comment créer un effet de survol en utilisant une seule variable - pouvez-vous le faire ici?

Oui, absolument! Nous pouvons en effet utiliser la même technique de commutation à sec afin que nous n'ayons besoin que de gérer une propriété CSS personnalisée qui ne change que les valeurs lors du plan de vol:

 .Hover-2 {
  /* haut*/
  --H: 1.2EM;

  hauteur de ligne: var (- h);
  Couleur: # 0000;
  Text-shadow: 
    0 var (--_ i, var (- h)) #fff,
    0 0 RGB (0 0 0 / Calc (var (--_ i, 1) * 100%));
  arrière-plan: 
    Gradient linéaire (# 1095C1 0 0) 
    en bas / 100% calc (100% - var (—_ i, 1) * 100%) sans répétition;
  débordement: caché;
  transition: 0,3S;
}
.Hover-2: Hover {
  --_ i: 0;
}

Effet de survol n ° 3

Cet effet de survol n'est rien de plus qu'une combinaison de deux effets que nous avons faits: le deuxième effet de survol dans le post précédent et le premier effet de survol de cet article.

 .Hover-3 {
  /* couleur*/
  --c: # 1095C1;
  /* haut*/
  --H: 1.2EM;

  / * Le premier effet de survol de cet article * /
  hauteur de ligne: var (- h);  
  Couleur: # 0000;
  débordement: caché;
  Text-shadow: 
    0 calc (-1 * var (--_ t, 0em)) var (- c), 
    0 calc (var (- h) - var (--_ t, 0em)) #fff;
  / * Le deuxième effet de survol dans le post précédent * /
  arrière-plan: 
    gradient linéaire (var (- c) 0 0) sans répétition 
    calc (200% - var (--_ p, 0%)) 100% / 200% var (--_ p, .08em);
  transition: .3s var (--_ s, 0s), position d'arrière-plan .3s calc (.3s - var (--_ s, 0s));
}
.Hover-3: Hover {
  --_ t: var (- h);
  --_ P: 100%;
  --_ s: .3s
}

Tout ce que j'ai fait, c'est copier et coller les effets des autres exemples et faire quelques ajustements mineurs au nom de la variable. Lorsqu'ils sont combinés, ils créent un effet de survol net! À première vue, cet effet peut sembler complexe et difficile à réaliser, mais en fin de compte, il combine simplement deux effets relativement simples en un seul.

Si nous considérons les optimisations antérieures que nous avons terminées, il devrait également être une tâche simple pour optimiser le code à l'aide de la technologie de variable de bascule sèche:

 .Hover-3 {
  /* couleur*/
  --c: # 1095C1;
  /* haut*/
  --H: 1.2EM;

  hauteur de ligne: var (- h);  
  Couleur: # 0000;
  débordement: caché;
  Text-shadow: 
    0 calc (-1 * var (- h) * var (--_ i, 0)) var (- c), 
    0 calc (var (- h) * (1 - var (--_ i, 0))) #fff;
  arrière-plan: 
    gradient linéaire (var (- c) 0 0) sans répétition
    calc (200% - var (--_ i, 0) * 100%) 100% / 200% calc (100% * var (--_ i, 0) .08em);
  transition: .3s calc (var (--_ i, 0) * .3s), position d'arrière-plan .3s calc (.3s - calc (var (--_ i, 0) * .3s));
}
.Hover-3: Hover {
  --_ i: 1;
}

Effet de survol n ° 4

Cet effet de survol est une amélioration du deuxième effet de survol. Tout d'abord, introduisons une animation clip-path pour afficher l'une des calques de texte, puis le déplacez:

Voici une meilleure explication pour mieux comprendre ce qui se passe:

Initialement, nous avons utilisé inset(0 0 0 0) , ce qui est similaire à overflow: hidden , car nous ne voyons que le texte réel. En survol, nous mettons à jour la troisième valeur (représentant le décalage inférieur) avec une valeur négative égale à la hauteur pour afficher la couche de texte placée en bas.

De là, nous pouvons ajouter cela au deuxième effet de survol que nous avons fait dans cet article, et voici ce que nous obtenons:

Nous nous rapprochons de plus en plus! Notez que nous devons d'abord exécuter clip-path , puis tout le reste. Pour ce faire, nous pouvons ajouter un délai à toutes les propriétés de survol, à l'exception de clip-path :

 Transition: 0,4 s 0,4 s, clip path 0,4S;

Lorsque la souris est émue, nous faisons le contraire:

 Transition: 0,4 s, clip path 0,4S 0,4S;

La touche finale consiste à ajouter une box-shadow pour créer l'effet coulissant du rectangle bleu. Malheureusement, background ne produit pas cet effet, car l'arrière-plan est recadré dans la zone de contenu par défaut. Dans le même temps, box-shadow peut aller au-delà de la zone de contenu.

 .Hover-4 {
  /* couleur*/
  --c: # 1095C1;
  /* haut*/
  --H: 1.2EM;

  hauteur de ligne: var (- h);
  Couleur: # 0000;
  Text-shadow: 
    0 var (--_ t, var (- h)) #fff,
    0 0 var (--_ c, # 000);
  Box-shadow: 0 var (--_ t, var (- h)) var (- c);
  Clip-path: inset (0 0 0 0);
  Contexte: Linear-Gradient (var (- C) 0 0) 0 var (--_ t, var (- h)) sans répétition;
  Transition: 0,4 s, clip path 0,4S 0,4S;
}
.Hover-4: Hover {
  --_ t: 0;
  --_ C: # 0000;
  Clip-path: inset (0 0 calc (-1 * var (- h)) 0);
  Transition: 0,4 s 0,4 s, clip path 0,4S;
}

Si vous regardez attentivement box-shadow , vous constaterez qu'il a la même valeur que le calque de texte blanc à l'intérieur text-shadow . C'est logique, car les deux doivent être déplacés de la même manière. Les deux glisseront vers le haut. box-shadow est alors derrière l'élément et text-shadow est en haut.

Voici une démonstration avec quelques modifications pour visualiser comment les couches se déplacent:

Attendez, la syntaxe d'arrière-plan est légèrement différente de celle utilisée dans le deuxième effet de survol!

Bonne vue! Oui, nous utilisons différentes techniques d'arrière-plan pour produire le même effet. Au lieu d'animer la taille de 0% à 100%, nous animons la position.

Si nous ne spécifions pas la taille sur le gradient, il occupera la largeur et la hauteur entières par défaut. Puisque nous connaissons la hauteur de l'élément ( --h ), nous pouvons créer un effet glissant en mettant à jour la position de 0 var(--h) à 0 0 .

 .Hover-4 {
  / * ... * /
  Contexte: Linear-Gradient (var (- C) 0 0) 0 var (--_ t, var (- h)) sans répétition;
}
.Hover-4: Hover {
  --_ t: 0;
}

Nous pouvons utiliser une animation background-size pour obtenir le même effet, mais nous avons simplement ajouté une autre astuce à notre liste de trucs!

Dans la démo, vous avez également utilisé inset(0 0 1px 0) … Pourquoi?

J'ajoute ou supprime parfois des pixels ou des pourcentages ici pour perfectionner tout ce qui n'a pas l'air très bien. Dans ce cas, une mauvaise ligne apparaît en bas, l'ajout de 1px le supprimera.

Et l'optimisation des variables de commutation à sec?

Je vais vous laisser cette tâche! Après avoir lu ces quatre effets de survol et les articles précédents, vous devriez être en mesure de mettre à jour le code afin qu'il n'utilise qu'une seule variable. J'aimerais voir votre tentative dans les commentaires!

maintenant vous!

Permettez-moi de partager le dernier effet de survol, qui est une autre version de l'effet précédent. Pouvez-vous découvrir comment il est implémenté sans regarder le code? C'est un excellent exercice, alors ne trichez pas!

Résumer

Nous avons examiné de nombreux exemples qui montrent comment l'utilisation d'un élément et quelques lignes de CSS est suffisante pour créer un effet de survol plutôt complexe sur les éléments de texte - aucun pseudo-éléments n'est nécessaire! Nous sommes même en mesure de combiner plusieurs technologies pour réaliser des animations plus complexes avec des efforts plus petits.

Si vous êtes intéressé à creuser ce qui est au-delà de ces quatre effets de survol de l'ombre de texte dans cet article, consultez ma collection de 500 effets de survol, où j'explore une variété de techniques différentes.

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
Deux images et une API: tout ce dont nous avons besoin pour recolorer les produitsDeux images et une API: tout ce dont nous avons besoin pour recolorer les produitsApr 15, 2025 am 11:27 AM

J'ai récemment trouvé une solution pour mettre à jour dynamiquement la couleur de toute image de produit. Donc, avec un seul produit, nous pouvons le colorer de différentes manières pour montrer

Actualités hebdomadaires de la plate-forme: impact du code tiers, contenu mixte passif, pays avec les connexions les plus lentesActualités hebdomadaires de la plate-forme: impact du code tiers, contenu mixte passif, pays avec les connexions les plus lentesApr 15, 2025 am 11:19 AM

En cette semaine, le Roundup, Lighthouse met en lumière les scripts tiers, les ressources en insécurité seront bloquées sur des sites sécurisés et de nombreuses vitesses de connexion de pays

Options pour héberger vos propres analyses non-javascriptOptions pour héberger vos propres analyses non-javascriptApr 15, 2025 am 11:09 AM

Il existe de nombreuses plates-formes d'analyse pour vous aider à suivre les données des visiteurs et d'utilisation sur vos sites. Peut-être plus particulièrement Google Analytics, qui est largement utilisé

C'est tout dans la tête: gérer la tête de document d'un site alimenté par réact avec un casque ReactC'est tout dans la tête: gérer la tête de document d'un site alimenté par réact avec un casque ReactApr 15, 2025 am 11:01 AM

Le chef de document n'est peut-être pas la partie la plus glamour d'un site Web, mais ce qui y va est sans doute tout aussi important pour le succès de votre site Web que son

Qu'est-ce que Super () dans JavaScript?Qu'est-ce que Super () dans JavaScript?Apr 15, 2025 am 10:59 AM

Qu'est-ce qui se passe quand vous voyez un JavaScript qui appelle super () ?. Dans une classe d'enfants, vous utilisez super () pour appeler le constructeur et le super. pour accéder à son

Comparaison des différents types de popups JavaScript natifsComparaison des différents types de popups JavaScript natifsApr 15, 2025 am 10:48 AM

JavaScript possède une variété d'API popup intégrés qui affichent l'interface utilisateur spéciale pour l'interaction utilisateur. Fameusement:

Pourquoi les sites Web accessibles sont-ils si difficiles à construire?Pourquoi les sites Web accessibles sont-ils si difficiles à construire?Apr 15, 2025 am 10:45 AM

L'autre jour, je discutais avec des gens frontaux sur les raisons pour lesquelles tant d'entreprises ont du mal à créer des sites Web accessibles. Pourquoi les sites Web accessibles sont-ils si durs

L'attribut `` caché 'est visiblement faibleL'attribut `` caché 'est visiblement faibleApr 15, 2025 am 10:43 AM

Il y a un attribut HTML qui fait exactement ce que vous pensez qu'il devrait faire:

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles