Dans ce didacticiel, je vais vous guider dans la création d'un effet de bordure dégradé animé à l'aide de propriétés personnalisées CSS, qui peuvent ajouter un aspect dynamique et accrocheur à vos composants d'interface utilisateur. À la fin, vous aurez une carte simple avec une bordure dégradée animée, en utilisant le CSS personnalisé @property.
Si vous n'êtes pas familier avec @property personnalisé CSS, lisez d'abord ce blog.
Nous utiliserons React pour ce tutoriel, la carte de base ressemblera à ceci
import "./styles.css"; const CardAnimatedBorder = () => { return ( <div className="container"> <div className="card">This is a card with animated gradient border</div> </div> ); }; export default CardAnimatedBorder;
.container { width: 100%; height: 200px; display: flex; align-items: center; justify-content: center; } .card { margin: 0 auto; padding: 2em; width: 300px; background: #1c1f2b; text-align: center; border-radius: 10px; color: #ffffff; position: relative; }
Avant de créer une bordure animée en dégradé, voyons comment créer une bordure simple. Nous n'utiliserons pas la propriété CSS border mais utiliserons plutôt des pseudo éléments ::before et ::after pour la carte. Une autre propriété importante ici est l'encart qui nous permet de placer les pseudo éléments à l'intérieur de la carte. Le z-index sera -1 car nous voulons que la bordure soit en dessous du contenu de la carte.
.card::after, .card::before { content: ""; position: absolute; background: red; inset: -4px; z-index: -1; border-radius: 10px; }
Notre carte ressemble désormais à ceci
Nous ajouterons une propriété personnalisée pour suivre l'angle du dégradé. Nous utiliserons le dégradé conique.
Ajoutez une propriété personnalisée comme celle-ci
@property --angle { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
et apportez les modifications suivantes au CSS
Votre CSS devrait ressembler à ceci
.container { width: 100%; height: 200px; display: flex; align-items: center; justify-content: center; } .card { margin: 0 auto; padding: 2em; width: 300px; background: #1c1f2b; text-align: center; border-radius: 10px; color: #ffffff; position: relative; } @property --angle { syntax: "<angle>"; initial-value: 0deg; inherits: false; } .card::after, .card::before { content: ""; position: absolute; background-image: conic-gradient( from var(--angle), transparent 70%, blue, red ); inset: -4px; z-index: -1; border-radius: 10px; animation: 2s spin linear infinite; } .card::before { filter: blur(1rem); opacity: 0.7; } @keyframes spin { from { --angle: 0deg; } to { --angle: 360deg; } }
Et enfin nous avons une carte avec une bordure dégradée animée.
Cliquez ici
Message original
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!