"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Appuyez-vous sur CSS Clip Path pour créer des formes sympas dans le DOM sans images

Appuyez-vous sur CSS Clip Path pour créer des formes sympas dans le DOM sans images

Publié le 2024-07-31
Parcourir:420

Lean on CSS Clip Path to Make Cool Shapes in the DOM without Images

Introduction

Jusqu'à il y a quelques années, si vous vouliez des formes d'arrière-plan ou des sections d'un site Web autres que des rectangles, vous aviez probablement besoin d'un concepteur pour vous fournir une image PNG ou JPEG statique qui serait ajoutée selon les besoins, mais CSS a Du chemin parcouru depuis, mes amis.

Lorsque je travaillais sur une mise à jour de site Web qui divisait le contenu de la page en sections d'arrière-plan de différentes couleurs, alternant entre des couleurs blanc pur et gris doux, la maquette de conception que j'avais incluse une section dont le bord inférieur était incliné vers le haut et vers le haut. vers la droite au lieu de parcourir la page selon un angle parfait de 90 degrés, comme le fait un élément de bloc typique.

Maintenant, j'aurais pu demander au concepteur de créer une image d'arrière-plan pour le faire à ma place, mais je voulais plutôt voir si je pouvais le faire moi-même avec la puissance du CSS. Et voilà, je pourrais, avec le chemin du clip CSS.

Les formes et visuels intéressants dans le DOM ne sont plus uniquement le domaine des concepteurs, avec des outils comme le chemin de clip CSS, les développeurs ont le pouvoir de remodeler les éléments et je vais vous montrer comment.


Chemin de clip CSS

Si vous êtes moins familier avec la propriété CSS clip-path, comme moi, elle crée une région de découpage qui définit les parties d'un élément qui doivent être affichées. Les parties situées à l'intérieur de la région sont affichées, tandis que celles à l'extérieur sont masquées.

Lean on CSS Clip Path to Make Cool Shapes in the DOM without Images

Une démo de la documentation MDN clip-path. Différentes options de tracé de clip offrent différentes vues de la montgolfière et du texte.

La propriété clip-path peut accepter une grande variété de valeurs :

  • , qui accepte des valeurs telles que l'url pour un élément SVG avec un chemin de détourage défini.
  • , qui accepte des valeurs telles que margin-box et border-box.
  • , qui accepte des valeurs comme circle() et rect().
  • valeurs globales, qui acceptent des valeurs telles que hériter et revenir.

Les valeurs et peuvent même être combinées dans un seul chemin de clip.

/* this CSS combines two different clip path properties */
clip-path: padding-box circle(50px at 0 100px);

Cet article n'entre pas dans les détails de toutes les propriétés que le chemin de clip peut accepter et de la manière dont elles peuvent être combinées pour créer des formes assez complexes. Si vous souhaitez plus d'informations et des exemples de clip=path en action, je vous recommande de commencer par la documentation de Mozilla.

L'une des propriétés acceptées par clip-path est polygon(), et cela a fini par être la solution dont j'avais besoin pour ma section d'arrière-plan inclinée.

Le polygone que je devais recréer avec CSS

Lean on CSS Clip Path to Make Cool Shapes in the DOM without Images

Le fond de polygone gris que je devais créer avec CSS.

L'image ci-dessus est une capture d'écran de la section d'arrière-plan gris que je devais recréer avec la propriété polygon() de CSS clip-path. Et la première chose que je devais faire était de créer des éléments HTML auxquels appliquer le CSS.

polygon() clip-path vs rect() clip-path

Vous vous demandez peut-être pourquoi j'ai choisi d'utiliser la propriété polygon() au lieu de la propriété rect() avec clip-path. Bien que les deux soient similaires, polygon() peut créer des formes polygonales plus complexes et offre une plus grande polyvalence pour les conceptions avancées en acceptant des paires de coordonnées pour définir chaque sommet du polygone, tandis que rect() ne peut gérer que des formes rectangulaires.

Configurer le HTML et le CSS

Le site sur lequel je travaillais s'appuyait sur le générateur de site statique Hugo, un framework basé sur Go. Hugo utilise des modèles pour afficher le HTML du site, donc l'exemple de code ci-dessous devrait vous paraître relativement familier si vous connaissez le HTML.

Remarque sur les modèles :

Si vous avez déjà utilisé des composants JSX, Node.js avec Pug ou guidon, ou Jekyll, les modèles de Hugo sont similaires : des éléments HTML avec des variables et des fonctions Go parsemées de {{ }} pour afficher les informations correctes partout où les modèles sont injectés.

Voici le code de ce que j'avais surnommé la "section puzzle" de la page en raison de la pièce de puzzle au premier plan de cette section. Pour les besoins et la clarté de cet article, j'ai remplacé les variables Go injectées dans le modèle par le HTML généré.

single.html

  

Lorem ipsum dolor

Sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ipsum dolor sit amet consectetur adipiscing elit pellentesque.

Duis aute irure dolor in reprehenderit

in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Consectetur adipiscing elit pellentesque habitant morbi tristique senectus et.

Puzzle pieces

Cette section de code est relativement compacte, mais elle mérite une discussion. En plus des éléments HTML, il existe de nombreuses classes CSS provenant de la bibliothèque Bootstrap, l'un des frameworks CSS open source originaux pour les conceptions Web réactives.

Parmi les classes personnalisées comme about-body, que j'ai utilisées pour ajouter un style personnalisé, il existe des classes comme conteneur, row, col-12 ou col-md-6, mb-5 et mb-3.

Toutes ces dernières classes sont des classes Bootstrap, qui servent à faire en sorte que les éléments de texte et d'image à l'écran partagent la largeur de la page lorsque la fenêtre d'affichage dépasse une certaine largeur (col-md-6), ou appliquent une marge inférieure d'un certain montant aux balises

(mb-3 ou mb-5).

Les classes Bootstrap ne sont pas pertinentes pour cet article, cependant, la classe sur laquelle se concentrer est la section puzzle qui enveloppe tout le texte et l'image des pièces de puzzle.

Cette classe de section de puzzle est l'endroit où nous allons ajouter la propriété clip-path pour afficher l'arrière-plan gris clair derrière le texte et l'image avec un design légèrement incliné vers le haut et vers la droite.

Ajoutez le chemin du clip CSS pour façonner la section du puzzle

Comme je ne savais pas vraiment comment donner une forme inégale à un

rectangulaire normal, j'ai commencé à chercher une solution en ligne et j'ai trouvé ce site utile et interactif axé sur le chemin de clip, le créateur de chemin de clip CSS. .

Lean on CSS Clip Path to Make Cool Shapes in the DOM without Images

Ce site Web de création de chemins de clips CSS est fantastique car il propose toute une série de formes prédéfinies, de tailles d'image et d'arrière-plans réglables, et les sommets de l'image actuellement affichée peuvent être glissés dans n'importe quel arrangement de votre choix. La ligne en bas de l'écran affiche les valeurs CSS exactes du chemin de clip que vous pouvez copier/coller dans le CSS de votre propre projet.

J'ai choisi la forme prédéfinie du parallélogramme comme point de départ, puis j'ai fait glisser les coins pour qu'ils correspondent à l'angle de la section d'arrière-plan que j'essayais de recréer à partir de zéro. Une fois que j'ai été satisfait du résultat, j'ai copié la ligne CSS en bas de la page dans mon presse-papiers.

Dans le fichier SCSS de mon projet, j'ai ajouté le CSS clip-path copié en plus de la propriété background-color gris clair et un peu de remplissage pour donner au texte et aux images des pièces de puzzle une certaine marge de manœuvre sur la page.

REMARQUE : Même si ce fichier affiché dans l'exemple de code est SCSS au lieu de CSS pur, pour cet article, cela ne devrait pas faire de différence ici. Il devrait s'agir d'une comparaison directe 1:1.

à propos.scss

.about-body {
  // this white sets the white background color for the whole webpage
  background-color: white; 

  .puzzle-section {
    // clip-path code copied from the clip-path maker website
    clip-path: polygon(0 0, 100% 0%, 100% 75%, 0% 100%);
    background-color: light-grey;
    padding: 2rem 0 10rem 0;
  }
}

Ce petit peu de CSS pour le chemin du clip était tout ce qu'il fallait pour prendre mon élément DOM parfaitement rectangulaire et le transformer en un polygone imparfait. Pas trop mal!


Conclusion

CSS repousse les limites de ce que les développeurs Web peuvent faire sans recourir en permanence à des images, des vidéos et des éléments conçus sur mesure. Et la satisfaction de découvrir comment créer un petit morceau de design sympa par vous-même est assez stimulante.

Un exemple récent de ceci consistait à utiliser la propriété CSS clip-path pour créer une zone d'arrière-plan pour du texte et des images dont le bord inférieur était irrégulier. Avec l'aide d'un site Web interactif dédié au décodage des chemins de détourage de toutes formes et tailles, j'ai pu travailler rapidement sur ce polygone légèrement asymétrique.

Et permettez-moi de prendre un moment pour crier à quel point j'apprécie les gens qui publient ces petits sites ou extraits de code qui résolvent un problème très spécifique pour un autre développeur - vous continuez à rendre Internet meilleur.

Revenez dans quelques semaines : j'écrirai davantage sur JavaScript, React, IoT ou autre chose lié au développement Web.

Si vous souhaitez être sûr de ne jamais manquer un article que j'écris, inscrivez-vous à ma newsletter ici : https://paigeniedringhaus.substack.com

Merci d'avoir lu. J'espère qu'apprendre à remodeler l'apparence des éléments dans le DOM avec la seule puissance du CSS vous aidera autant qu'il m'a aidé.


Autres références et ressources

  • Documents MDN, chemin de clip CSS
  • Site Web du générateur de chemins de clips CSS
Déclaration de sortie Cet article est reproduit sur : https://dev.to/paigen11/lean-on-css-clip-path-to-make-cool-shapes-in-the-dom-without-images-2d7c?1S'il y en a infraction, veuillez contacter [email protected] pour supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3