28172 sujets
CSS et mise en forme, CSS3
joint au hasard: https://developer.mozilla.org/fr/docs/Web/CSS/border-radius
Border radius ?
Exemple pour 2 coins opposés avec le raccourci de cette règle :
Il vous suffit maintenant de jouer avec l'ordre et l'amplitude des valeurs pour obtenir ce que vous souhaitez.
Edit : grillé sur le fil
Modifié par Olivier C (01 Sep 2017 - 22:30)
Exemple pour 2 coins opposés avec le raccourci de cette règle :
.element {
border-radius: 0 .5rem 0 .5rem;
}
Il vous suffit maintenant de jouer avec l'ordre et l'amplitude des valeurs pour obtenir ce que vous souhaitez.
Edit : grillé sur le fil
Modifié par Olivier C (01 Sep 2017 - 22:30)
Bonjour.
À moins avis, la plus élégante :
deux pseudo-éléments, ::before et ::after.
Le ::before, par exemple, a deux règles border-left et border-bottom, et un border-radius dans le coin inférieur gauche.
Le ::after, le contraire : border-top et border-right et un border-radius dans le coin supérieur droit.
Les deux pseudo-éléments sont positionnés en absolu avec un parent positionné en relatif, bien entendu.
(Ce serait plus sympa d'utiliser les variables pour coordonner la couleur, le style et l'épaisseur.)
Un autre méthode serait d'utiliser border-image mais elle n'a jamais été trop appréciée…
À moins avis, la plus élégante :
deux pseudo-éléments, ::before et ::after.
Le ::before, par exemple, a deux règles border-left et border-bottom, et un border-radius dans le coin inférieur gauche.
Le ::after, le contraire : border-top et border-right et un border-radius dans le coin supérieur droit.
Les deux pseudo-éléments sont positionnés en absolu avec un parent positionné en relatif, bien entendu.
(Ce serait plus sympa d'utiliser les variables pour coordonner la couleur, le style et l'épaisseur.)
Un autre méthode serait d'utiliser border-image mais elle n'a jamais été trop appréciée…
Et ben... j'arrête pas de me faire griller par un autre alsanaute en ce moment...
Je propose tout de même ma solution qui est point pour point la même que celle préconisée par Zelena : CodePen.
Je propose tout de même ma solution qui est point pour point la même que celle préconisée par Zelena : CodePen.
Ahah.
Merci beaucoup, c'est parfait !
Le problème d'avoir appris les CSS il y a 10 ans et de ne jamais s'être vraiment remis au gout du jour, c'est que le jour où l'on se remet à devoir coder un peu tout a vraiment changé
Je ne connaissais pas CurrentColor, merci.
@Zelena : qu'entends-tu par "utiliser les variables pour coordonner la couleur, le style et l'épaisseur" ? C'est justement du CurrentColor ?
@Olivier C : si vraiment tu veux essayer de répondre en premier sur ce topic, une autre chance : je suis en train de m'attaquer à cette mise en page (très élégante, mais je crois que je vais vite caler dessus, pour quelque chose d'élégant en tout cas
Merci beaucoup, c'est parfait !
Le problème d'avoir appris les CSS il y a 10 ans et de ne jamais s'être vraiment remis au gout du jour, c'est que le jour où l'on se remet à devoir coder un peu tout a vraiment changé
Je ne connaissais pas CurrentColor, merci.
@Zelena : qu'entends-tu par "utiliser les variables pour coordonner la couleur, le style et l'épaisseur" ? C'est justement du CurrentColor ?
@Olivier C : si vraiment tu veux essayer de répondre en premier sur ce topic, une autre chance : je suis en train de m'attaquer à cette mise en page (très élégante, mais je crois que je vais vite caler dessus, pour quelque chose d'élégant en tout cas
jabric a écrit :
@Zelena : qu'entends-tu par "utiliser les variables pour coordonner la couleur, le style et l'épaisseur" ? C'est justement du CurrentColor ?
Les variables css ressemblent à ceci mais ne sont pas encore très bien supportée :
:root {
--font-size-xxl: 5em;
--bg-color: Red;
}
.one {
color: var(--bg-color);
}
.one,
.two {
font-size: var(--font-size-xxl);
}
Voir ici mon CodePen d'exemple : Variables CSS.
La variable CurrentColor, en réalité un nom de couleur fonctionnant par héritage, est, elle, très bien supportée mais aussi très méconnue, voir cet article sur le blog La Cascade.
Modifié par Olivier C (02 Sep 2017 - 11:47)
jabric a écrit :
@Olivier C : si vraiment tu veux essayer de répondre en premier sur ce topic, une autre chance...
Oui enfin, je ne suis pas à ce point tributaire du forum...
jabric a écrit :
Je suis en train de m'attaquer à cette mise en page (très élégante, mais je crois que je vais vite caler dessus, pour quelque chose d'élégant en tout cas
upload/1504342477-138-capturedaeacran2017-09-02aa10.5.png
Parce que le sujet est intéressant je le ferais... Pour que soit en pur CSS et non en image il faudra tout de même envisager un compromis sur les arrondis des traits qui encadrent l'image.
jabric a écrit :
j'étais finalement tombé sur ces var(), je trouve ça super cool.
Tu en déconseilles l'usage pour le moment, au niveau du support ?
Pour le support des règles CSS sur les navigateurs, un site à connaitre absolument pour tout dev' front : Can I use, variables,
à comparer avec le support de CurentColor.
Modifié par Olivier C (02 Sep 2017 - 18:01)
jabric a écrit :
je suis en train de m'attaquer à cette mise en page (très élégante, mais je crois que je vais vite caler dessus, pour quelque chose d'élégant en tout cas.
Vu la complexité du truc (arrondis en bout des barres, etc), après réflexion j'opterais pour un SVG placé en background-image : CodePen .
Au moins c'est modulable a volonté.
Modifié par Olivier C (02 Sep 2017 - 18:03)
bonsoir,
sinon , border-radius et des pseudo (si fond de couleur unis), ça peut faire quelque chose d'approchant. (avoir les bonnes font-family ...) : https://codepen.io/gc-nomade/pen/ZJwdwq
++
sinon , border-radius et des pseudo (si fond de couleur unis), ça peut faire quelque chose d'approchant. (avoir les bonnes font-family ...) : https://codepen.io/gc-nomade/pen/ZJwdwq
++
@OlivierC merci infiniment !
Ca fonctionne nickel... et le rendu est très propre.
Merci merci merci
C'est ma femme qui va être contente
Je trouve ça fascinant les css.
Je trouve toujours dommage de ne pas pouvoir prendre le temps de rentrer un peu plus dans leur magie... Mais on peut maintenant faire des choses hallucinantes avec cet outil, je suis tout le temps épaté
Du coup, j'ai une question vraiment toute nulle à côté, mais il doit y avoir une réponse toute simple : mes ::before et ::after ne s'affichent pas comme je voudrais (ils devraient être centrés, ils sont ferré sur les bords).
J'ai l'impression qu'il doit me manquer un bout de compréhension du fonctionnement de ces pseudo classes, mais je sèche un peu
=> page en cours de déclinaison css visible ici
Ca fonctionne nickel... et le rendu est très propre.
Merci merci merci
C'est ma femme qui va être contente
Je trouve ça fascinant les css.
Je trouve toujours dommage de ne pas pouvoir prendre le temps de rentrer un peu plus dans leur magie... Mais on peut maintenant faire des choses hallucinantes avec cet outil, je suis tout le temps épaté
Du coup, j'ai une question vraiment toute nulle à côté, mais il doit y avoir une réponse toute simple : mes ::before et ::after ne s'affichent pas comme je voudrais (ils devraient être centrés, ils sont ferré sur les bords).
J'ai l'impression qu'il doit me manquer un bout de compréhension du fonctionnement de ces pseudo classes, mais je sèche un peu
=> page en cours de déclinaison css visible ici
Bonjour.
Oh, c'est pas mal non plus… avec des traits un peu plus épais peut-être.
Sinon, si vous voulez les centrer :
Le 'left : 50% ' décale de la moitié de l'élément 'parent' (je ne sais pas si c'est le terme exact dans ce cas-là).
Comme le décalage a lieu à partir du bord gauche de l'élément, un recentrage est nécessaire et c'est ce que fait : 'transform : translateX(-50%)'.
Le right ne sert à rien.
Modifié par Zelena (04 Sep 2017 - 09:06)
Oh, c'est pas mal non plus… avec des traits un peu plus épais peut-être.
Sinon, si vous voulez les centrer :
left : 50%;
transform : translateX(-50%);
Le 'left : 50% ' décale de la moitié de l'élément 'parent' (je ne sais pas si c'est le terme exact dans ce cas-là).
Comme le décalage a lieu à partir du bord gauche de l'élément, un recentrage est nécessaire et c'est ce que fait : 'transform : translateX(-50%)'.
Le right ne sert à rien.
Modifié par Zelena (04 Sep 2017 - 09:06)
Bonjour,
auto est la valeur par défaut, très différent de 0.
Il n'est pas utile de préciser "right: auto" à moins que ce soit pour écraser une valeur existante et right: 0 va en général forcer le bord droit à occuper la position right: 0; (sinon l'élément "prend la place dont il a besoin", quelque chose dans ce goût-là)
C'est le 1er ancêtre positionné c'est-à-dire en remontant tous les ancêtres du parent direct à body : le 1er a avoir une valeur de position différente de static et s'il n'y en a aucun alors body lui-même.
EDIT : concernant currentColor, il y a aussi inherit pour hériter du parent. Sur 4 fois où j'arrive à me servir de l'un ou l'autre, 3 fois c'est inherit et 1 fois currentColor. Très pratique pour des sites où des déclinaisons de couleur existent pour chaque composant.
Modifié par Felipe (04 Sep 2017 - 19:10)
auto est la valeur par défaut, très différent de 0.
Il n'est pas utile de préciser "right: auto" à moins que ce soit pour écraser une valeur existante et right: 0 va en général forcer le bord droit à occuper la position right: 0; (sinon l'élément "prend la place dont il a besoin", quelque chose dans ce goût-là)
Zelena a écrit :
Le 'left : 50% ' décale de la moitié de l'élément 'parent' (je ne sais pas si c'est le terme exact dans ce cas-là).
C'est le 1er ancêtre positionné c'est-à-dire en remontant tous les ancêtres du parent direct à body : le 1er a avoir une valeur de position différente de static et s'il n'y en a aucun alors body lui-même.
EDIT : concernant currentColor, il y a aussi inherit pour hériter du parent. Sur 4 fois où j'arrive à me servir de l'un ou l'autre, 3 fois c'est inherit et 1 fois currentColor. Très pratique pour des sites où des déclinaisons de couleur existent pour chaque composant.
Modifié par Felipe (04 Sep 2017 - 19:10)