28112 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

J'ai reçu une maquette qui contient des éléments assez particuliers et je me demande comment la réaliser avec CSS (et si c'est possible Smiley lol ). Je galère sur trois choses :

• Le background des éléments, avec le texte répété style watermark
• Les deux angles arrondis bizarres
• L'ombre des éléments

Voici en image le résultat attendu :

upload/1651590509-68566-capturedaeacran2022-05-03aa17.png

Et voici dans un codepen le truc que j'ai pu pondre Smiley lol (vous pouvez vous moquer ci-dessous)

Pour le background, je pensais tenir un truc avec un SVG en background-image. Ça permet de le répéter facilement, mais je galère avec l'espacement entre les textes (car le texte est en diagonale), et je n'arrive pas utiliser une police Google Fonts au sein du SVG (mais ça, c'est un détail). À votre avis, il y a moyen d'arriver à ce résultat avec cette technique ou ça semble ultra compliqué ?

Pour les angles, je ne vois pas comment faire. Border-radius ne permet pas de gérer des angles de ce genre. Existe-t-il un moyen d'arriver à ce résultat, ou à quelque chose qui s'en rapproche ?

Pour les ombres, je pensais aussi tenir un truc en superposant deux box-shadow : une de la même couleur de fond que le <body>, la seconde bleue, décalée de 1px pour donner l'effet d'une bordure déportée. Hélas, avec le border-radius, box-shadow suit évidement l'arrondi de l'angle, et en plus, je ne trouve pas de moyen de gérer le coin supérieur gauche du premier élément : il est masqué par la première ombre Smiley decu

Si vous avez des pistes pour un ou les trois soucis, je suis prenneur d'info Smiley smile

Merci pour votre aide Smiley smile

Edit : je viens de me rendre compte que mon CodePen est tout pourri quand on se rend dessus. Le CSS est print dans la vue... Par contre, si on sélectionne tout le CSS (ctrl A), qu'on le coupe (ctrl X), qu'on attend que la vue se réinitialise... puis qu'on colle à nouveau le CSS, ben ça s'affiche comme il faut. Étrange...
Du coup, pour vous éviter de faire la manip, je met une capture d'écran du bon résultat en attendant de résoudre le souci

upload/1651603875-68566-capture.png

Edit 2 : J'ai viré la google font dans le svg en ligne, du coup, le codepen fonctionne
Modifié par Loraga (04 May 2022 - 10:13)
Bonsoir. Personnellement je trouve ton essai plus propre que le résultat attendu, notamment pour les border-radius. Mais bon, le client est roi je suppose...

Pour les border-radius justement, fais tes essais avec des unités absolues (comme les px) plutôt qu'avec des unités relatives (les % que tu as utilisé), tu devrais arriver à tes fins. Dans un premier jet je t'avais aussi proposé la solution clip-path, mais pas sûr que cela soit possible car il me semble que c'est soit ellipse soit polygone, mais pas entre les deux.

Pour les ombres, un filter: drop-shadow() sera peut-être plus polyvalent qu'un box-shadow (les paramètres d'ombre à définir sont les mêmes), à voir.
Modifié par Olivier C (04 May 2022 - 00:28)
Salut Olivier, merci pour ton aide Smiley smile

Pour les border-radius, je me suis aidé d'outils en ligne comme Fancy Border Radius Generator. Je vais suivre ton conseil concernant les unités absolues mais je doute pouvoir arriver à produire quelque chose de fidèle au résultat attendu, que ce soit avec border-radius ou clip-path (ce dernier est moins facile à utiliser je trouve, mais je suis arrivé à la même conclusion que toi : soit ellipse, soit polygone).

Le principal problème, ce sont les pointes de ces deux angles :

upload/1651640664-68566-capturedaeacran2022-05-04aa06.png

C'est sûrement facile à faire sur Illustrator mais impossible de réaliser ça en CSS (je me trompe peut-être), donc je pense partir sur quelque chose le plus proche possible, on verra bien.
Dans la journée, je vais essayer de tout refaire sur Sketch : c'est pas toujours hyper propre mais il y a une fonction qui permet d'exporter le CSS d'un élément. Je suis curieux de voir ce que ça va donner...

Pour les ombres, je n'ai pas réussi avec drop-shadow. De mémoire, j'utilisais toujours drop-shadow pour générer des ombres sur des images (souvent des PNG avec de la transparence), et box-shadow plutôt pour générer des ombres sur des blocs, ici notre grid-item.

Et enfin, pour le texte en fond, c'est vraiment ingérable car il faut jouer avec les propriétés width et height du SVG et ce n'est particulièrement pas adapté au texte en diagonale (le conteneur, lui, n'est pas en diagonale)

PS : J'ai viré l'appel à la Google Font au sein du SVG sur CodePen. Du coup, ça fonctionne mieux Smiley lol
Merci à vous deux pour votre aide et vos précieux conseils. À chaque post j'apprends à chaque fois bien plus de trucs Smiley smile

Text-stroke, je ne connaissais absolument pas ! Le support par les navigateurs me semble suffisamment correct pour pouvoir l'utiliser. Combiné au texte transparent et à drop-shadow, ça fait exactement le résultat voulu. C'est vraiment malin, je n'avais absolument pas pensé à cela !

En y ajoutant la même police et en faisant en sorte que l'ombre passe derrière le bloc, on est sur un rendu fidèle au résultat attendu sur le CodePen.

CSS m'épatera toujours. Quand on a une bonne connaissance des propriétés et assez d'imagination, on peut faire tellement de choses Smiley smile

La propriété mask est plus difficile à aborder, il me faut encore un peu de temps pour arriver au résultat mais en tout cas, merci aussi pour cette piste que je ne connaissais pas non plus