Maison interface Web tutoriel CSS Pendant que vous n'étiez pas à la recherche, les gradients CSS se sont améliorés

Pendant que vous n'étiez pas à la recherche, les gradients CSS se sont améliorés

Apr 11, 2025 am 09:16 AM

Améliorations des gradients CSS: la syntaxe à double position simplifie les rayures du gradient

Pendant que vous ne cherchez pas, les gradients CSS se sont améliorés

Il y en a un dans la liste des fonctions de polyfill coniques de Lea Verou qui ont attiré mon attention:

Prend en charge la syntaxe à double position (le même point d'arrêt de couleur utilise deux positions comme raccourcis pour deux points d'arrêt de couleur consécutifs avec la même couleur)

Étonnamment, j'ai récemment découvert que la plupart des gens ne savent même pas que la syntaxe à deux positions de points d'arrêt de gradient existe réellement dans la spécification, j'ai donc décidé d'écrire un article à ce sujet.

Selon la spécification:

La spécification de deux positions facilite la création de "rayures" de couleur unie dans un gradient sans avoir à répéter la couleur deux fois.

Je suis totalement d'accord que c'est la première chose qui me vient à l'esprit lorsque je comprends cette fonctionnalité.

Supposons que nous voulons obtenir le résultat suivant: Un dégradé avec de nombreuses bandes verticales de largeur égale (je l'ai obtenu du post précédent de Chris):

Les valeurs hexadécimales sont: # 5461C8, # C724B1, # E4002B, # FF6900, # F6BE00, # 97D700, # 00AB84 et # 00A3E0.

Voyons d'abord comment y parvenir en utilisant CSS sans utiliser la position du point d'arrêt double!

Nous avons huit rayures, dont chacune représente un huitième de la largeur du gradient. Un huitième de 100% est de 12,5%, nous passons donc d'une bande à l'autre en multiples de cette valeur.

Cela signifie que notre linéaire-gradient () ressemble à ceci:

 <code>linear-gradient(90deg, #5461c8 12.5% /* 1*12.5% */, #c724b1 0, #c724b1 25% /* 2*12.5% */, #e4002b 0, #e4002b 37.5% /* 3*12.5% */, #ff6900 0, #ff6900 50% /* 4*12.5% */, #f6be00 0, #f6be00 62.5% /* 5*12.5% */, #97d700 0, #97d700 75% /* 6*12.5% */, #00ab84 0, #00ab84 87.5% /* 7*12.5% */, #00a3e0 0)</code>
Copier après la connexion

Notez que nous n'avons pas besoin de répéter la valeur en pourcentage de la position d'arrêt, car nous effectuons automatiquement une transition nette chaque fois que la position d'arrêt est plus petite que la position précédente. C'est pourquoi il est toujours possible d'utiliser 0 (il est toujours inférieur à toute valeur positive) et d'utiliser # C724B1 25%, # E4002B 0 au lieu de # C724B1 25%, # E4002B 25%, par exemple. Si nous décidons d'ajouter deux rayures et de régler la position d'arrêt sur un multiple de 10%, cela peut nous faciliter la vie à l'avenir.

Pas mal, surtout par rapport au code que les générateurs de gradient génèrent généralement. Cependant, si nous décidons que l'une des rayures au milieu ne correspond pas tout à fait aux autres rayures, le changer en quelque chose d'autre signifie qu'il doit être mis à jour à deux endroits.

Encore une fois, ce n'est pas un gros problème, nous pouvons le résoudre sans l'aide d'un préprocesseur:

 <code>$c: #5461c8 #c724b1 #e4002b #ff6900 #f6be00 #97d700 #00ab84 #00a3e0; @function get-stops($c-list) { $s-list: (); $n: length($c-list); $u: 100%/$n; @for $i from 1 to $n { $s-list: $s-list, nth($c-list, $i) $i*$u, nth($c-list, $i 1) 0 } @return $s-list } .strip { background: linear-gradient(90deg, get-stops($c))) }</code>
Copier après la connexion

Cela générera le dégradé CSS exact que nous avons vu plus tôt, et maintenant nous n'avons plus à le modifier à deux endroits.

Démo de codep

Mais même si le préprocesseur nous empêche de taper deux fois la même chose, il n'éliminera pas la duplication dans le code généré.

Et nous ne voulons peut-être pas toujours utiliser des préprocesseurs. Mis à part le fait que certaines personnes sont têtue ou ont une peur ou une haine irrationnelles pour les préprocesseurs, l'utilisation parfois de boucles se sent un peu idiote.

Par exemple, lorsque nous n'avons presque rien à boucler! Supposons que nous voulons obtenir un modèle d'arrière-plan plus simple, comme un motif de hachage diagonal, qui, je pense, est plus courant que les motifs arc-en-ciel surexagérés, qui peuvent ne pas convenir à la plupart des sites Web.

Cela nécessite l'utilisation de la répétition linéaire-gradient (), ce qui signifie que même si nous n'avons pas une très longue liste de valeurs hexadécimales comme nous l'avons fait auparavant, cela nécessite une duplication:

 <code>repeating-linear-gradient(-45deg, #ccc /* can't skip this, repeating gradient won't work */, #ccc 2px, transparent 0, transparent 9px /* can't skip this either, tells where gradient repetition starts */)</code>
Copier après la connexion

Ici, nous ne pouvons pas rejeter les premier et dernier points d'arrêt, car c'est exactement ce qui indique comment le gradient se répète dans le rectangle défini par la taille de l'arrière-plan.

Si vous voulez comprendre pourquoi il est préférable d'utiliser la répétition linéaire-gradient () au lieu d'un gradient linéaire simple () combiné à la taille de l'arrière-plan appropriée pour créer un tel hachage, consultez un autre article que j'ai écrit auparavant.

C'est là que cette fonctionnalité entre en jeu - elle nous permet d'éviter la duplication dans le code CSS final.

Pour le cas de la bande arc-en-ciel, notre CSS devient:

 <code>linear-gradient(90deg, #5461c8 12.5%, #c724b1 0 25%, #e4002b 0 37.5%, #ff6900 0 50%, #f6be00 0 62.5%, #97d700 0 75%, #00ab84 0 87.5%, #00a3e0 0)</code>
Copier après la connexion

Pour recréer le hachage, nous avons juste besoin:

 <code>repeating-linear-gradient(-45deg, #ccc 0 2px, transparent 0 9px)</code>
Copier après la connexion

Démo de codep

Comment est la situation de soutien? Très bien, vous avez bien demandé! C'est en fait très bon! Il fonctionne avec Safari, les navigateurs de chrome (Edge est maintenant inclus!) Et Firefox. Le bord pré-chrome et certains navigateurs mobiles peuvent toujours être dans la façon dont vous le pouvez, mais si vous n'avez pas à vous soucier de fournir un support à tous les navigateurs ou de fournir une solution de repli est OK, alors vous pouvez commencer à l'utiliser!

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 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

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)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Travailler avec GraphQL Caching Travailler avec GraphQL Caching Mar 19, 2025 am 09:36 AM

Si vous avez récemment commencé à travailler avec GraphQL ou examiné ses avantages et ses inconvénients, vous avez sans aucun doute entendu des choses comme "GraphQL ne prend pas en charge la mise en cache" ou

Construire une application Ethereum à l'aide de Redwood.js et de la faune Construire une application Ethereum à l'aide de Redwood.js et de la faune Mar 28, 2025 am 09:18 AM

Avec la récente montée du prix du bitcoin sur 20k $ USD, et pour lui, récemment en train de briser 30k, je pensais que cela valait la peine de reprendre une profonde plongeon dans la création d'Ethereum

Créer votre propre bragdoc avec Eleventy Créer votre propre bragdoc avec Eleventy Mar 18, 2025 am 11:23 AM

Quelle que soit le stade dans lequel vous vous trouvez en tant que développeur, les tâches que nous effectuons - qu'elles soient grandes ou petites - ont un impact énorme dans notre croissance personnelle et professionnelle.

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

Il est sorti! Félicitations à l'équipe Vue pour l'avoir fait, je sais que ce fut un effort massif et une longue période à venir. Tous les nouveaux documents aussi.

Pouvez-vous obtenir des valeurs de propriété CSS valides du navigateur? Pouvez-vous obtenir des valeurs de propriété CSS valides du navigateur? Apr 02, 2025 pm 06:17 PM

J'ai eu quelqu'un qui écrivait avec cette question très légitime. Lea vient de bloguer sur la façon dont vous pouvez obtenir les propriétés CSS valides elles-mêmes du navigateur. C'est comme ça.

Un peu sur CI / CD Un peu sur CI / CD Apr 02, 2025 pm 06:21 PM

Je dirais que "Site Web" correspond mieux que "Application mobile" mais j'aime ce cadrage de Max Lynch:

Cartes empilées avec un positionnement collant et une pincée de sass Cartes empilées avec un positionnement collant et une pincée de sass Apr 03, 2025 am 10:30 AM

L'autre jour, j'ai repéré ce morceau particulièrement charmant sur le site Web de Corey Ginnivan où une collection de cartes se cassent les uns sur les autres pendant que vous faites défiler.

Comparaison des navigateurs pour une conception réactive Comparaison des navigateurs pour une conception réactive Apr 02, 2025 pm 06:25 PM

Il existe un certain nombre de ces applications de bureau où l'objectif montre votre site à différentes dimensions en même temps. Vous pouvez donc, par exemple, écrire

See all articles