L'objectif est d'aligner sur la droite les boutons avec qui a un texte de taille variable. La meilleure méthode est d'utiliser grid
. Pour réaliser cette mise en plage, il faut :
le h2
grid-auto-flow: column;
(qui enlève le comportement par défaut qui est d'aller à ligne)/*Emmet*/ .box>div*5>((h2>lorem5)+button*3>lorem1)
/*css*/ .box{ width: 600px; margin: 0 auto; }
.box > div{ border: 1px solid var(--grey,black); padding: 5px 0; display: grid; grid-template-columns: 1fr; grid-auto-flow: column; }
button{ align-self: center; }
Le but ici est de réaliser en html / css les boutons d'un player, la barre de défilement doit prendre le maximum de place disponible entre le ou les bouton(s)
La meilleure méthode est d'utiliser le flex
. Voici l'exemple complet : Player
display:flex;
/*Emmet*/ .container>.player>((button*3>{$})+.scrubber+button>{$})
/*css*/ .container{ width: 960px; margin: 0 auto; }
.player{ display: flex; align-items: center; }
.scrubber{ flex:1; background: #8e44ad; height: 15px; }autre solution avec
display:grid;
.player{ display:grid; grid-template-columns:auto auto auto 1fr auto; }Le seul reproche possible est lié au fait que si l'on modifie le html (ajouter / supprimer des boutons), il faut modifier le css alors la méthode précédente est plus resistante.
Ici l'objectif est de centrer parfaitement en largeur / hauteur plusieurs (quelquesoit le nombre avec un contenu dont on ne connait pas la largeur / hauteur) éléments html dans un bloc. Les display : grid / flex
fonctionnent.
Voici l'exemple complet : perfect center
display:flex;
/*Emmet*/ .container>.hero>((h2>lorem10)+(p>lorem70))
/*css*/ .container{ width: 960px; margin: 0 auto; }
.hero{ display: flex; flex-direction: column; justify-content: center; align-items: center; border:1px solid #2ecc71; height: 544px; }Solution avec
display:grid;
.hero{ display:grid; justify-items: center; align-content:center; }
Centrer dans un bloc des colonnes lorsque on sait le nombre de colonne mais pas les dimensions du contenu des colonnes.
Ici display:grid;
est à privilégier.
Voici l'exemple complet : unknown-content-size.html
/*Emmet*/ .container> .know> ((div>lorem1)+ (div>lorem30)+ (div>lorem2)+ (div>lorem12))
.container{ width: 960px; margin: 0 auto; }
.know{ display: grid; grid-template-columns: repeat(4,auto); justify-content: center; align-items: center; grid-gap: 20px; border:1px solid #2ecc71; height: 544px; }
Centrer dans un bloc des colonnes lorsque on sait le nombre de colonne mais pas les dimensions du contenu des colonnes
Voici l'exemple complet : Four corners
/*Emmet*/ .container>.box>.item*4>{$}
/*css*/ .container{ width: 960px; margin: 0 auto; }
.box{ width: 500px; height: 500px ; border: 1px solid #e67e22; } .box{ display: grid; grid-template-columns: repeat(2,1fr); grid-template-rows: repeat(2,1fr); /*grid-template: repeat(2,1fr) / repeat(2,1fr) */ align-items: end; /*anti strech*/ justify-items:end; }
.box>*{ border: 1px solid #2ecc71; padding: 10px; }
.item:nth-child(1),.item:nth-child(2){ align-self: start; }
.item:nth-child(1),.item:nth-child(3){ justify-self: start; }