BASE HTML / CSS – JSFiddle : https://jsfiddle.net/tae8pc1g/2/
Tout dans le titre vraiment. Tous les codes importants du JSFiddle sont les suivants:
CSS
.example-button { position: relative; display: inline-block; } .example-menu { position: absolute; display: inline-block; top: 100%; }
En utilisant uniquement HTML et CSS, est-il possible de centrer .example-menu
rapport à la largeur de .example-button
même si elle est plus large que .example-button
?
Oui, il est possible d’utiliser:
1- Pour une largeur inconnue:
left: 50%; transform: translateX(-50%);
2- Pour largeur connue:
left: 50%; margin-left: -(width/2)
Voici un JSFiddle au travail avec lequel jouer
body { text-align: center; } .example-button { position: relative; padding: 15px; border-radius: 5px; background: gray; display: inline-block; text-align: left; } .example-menu { position: absolute; display: inline-block; top: 100%; background: blue; margin:0; padding: 10px 70px; list-style: none; left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); }
Cela peut être considéré comme un hack, mais en utilisant du CSS pur, vous pouvez mettre ceci sur votre classe example-button:
left: 50%; transform: translateX(-50%);
Voir https://jsfiddle.net/08fqfhum/
Remarque: cela ne fonctionnera pas sur les anciens navigateurs (IE8) car il utilise des transformations CSS. Et pour certains navigateurs tels que Safari, vous devez également append une version préfixée de la propriété de transformation:
-webkit-transform: translateX(-50%);