J'ai un div dont la largeur est de 100%.
Je voudrais centrer un bouton, comment pourrais-je faire cela?
<div style="width:100%; height:100%">
<button type="button">hello</button>
</div>
Réponse mise à jour
Mettre à jour parce que j'ai remarqué que c'était une réponse active, cependant Flexbox serait la bonne approche maintenant.
Alignement vertical et horizontal.
#wrapper {
display: flex;
align-items: center;
justify-content: center;
}
Juste horizontal (tant que l'axe de flexion principal est horizontal ce qui est la valeur par défaut)
#wrapper {
display: flex;
justify-content: center;
}
Réponse originale utilisant une largeur fixe et aucune boîte souple
Si l’affiche originale veut un alignement vertical et central, c’est assez facile avec une largeur et une hauteur fixes du bouton, essayez ce qui suit.
CSS
button{
height:20px;
width:100px;
margin: -20px -50px;
position:relative;
top:50%;
left:50%;
}
pour un alignement horizontal uniquement, utilisez
button{
margin: 0 auto;
}
ou
div{
text-align:center;
}
vous pourriez juste faire
<div style="text-align: center;">
<input type="button" value="button">
</div>
Ou tu pourrais faire comme ça
<div>
<input type="button" value="button" style="display: block; margin: 0 auto;">
</div>
Le premier centre alignera tout dans la division. L'autre centre alignera juste le bouton.
et voilà:
button {
width: 100px; // whatever your button's width
margin: 0 auto; // auto left/right margins
}
Mise à jour : Si OP recherche un centre horizontal et vertical, cette réponse le fera pour un élément width/height fixe.
Marge: 0 auto; est la bonne réponse pour le centrage horizontal uniquement. Pour centrer les deux manières, quelque chose comme ceci fonctionnera, en utilisant jquery:
var cenBtn = function() {
var W = $(window).width();
var H = $(window).height();
var BtnW = insert button width;
var BtnH = insert button height;
var LeftOff = (W / 2) - (BtnW / 2);
var TopOff = (H / 2) - (BtnH /2);
$("#buttonID").css({left: LeftOff, top: TopOff});
};
$(window).bind("load, resize", cenBtn);
Mise à jour ... cinq ans plus tard , on pourrait utiliser flexbox sur l'élément DIV parent pour facilement centrer le bouton horizontalement et verticalement.
Y compris tous les préfixes du navigateur, pour un meilleur support
div {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align : center;
-moz-box-align : center;
-ms-flex-align : center;
-webkit-align-items : center;
align-items : center ;
justify-content : center;
-webkit-justify-content : center;
-webkit-box-pack : center;
-moz-box-pack : center;
-ms-flex-pack : center;
}
#container {
position: relative;
margin: 20px;
background: red;
height: 300px;
width: 400px;
}
#container div {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-moz-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
justify-content: center;
-webkit-box-pack: center;
-moz-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
}
<!-- using a container to make the 100% width and height mean something -->
<div id="container">
<div style="width:100%; height:100%">
<button type="button">hello</button>
</div>
</div>
Avec les détails limités fournis, je vais supposer la situation la plus simple et dire que vous pouvez utiliser text-align: center
:
Utiliser la flexbox
.Center {
display: flex;
align-items: center;
justify-content: center;
}
Et puis ajouter la classe à votre bouton.
<button class="Center">Demo</button>
Vous devriez le prendre simple ici vous allez:
vous avez d'abord la position initiale de votre texte ou bouton:
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2> Simple Text </h2>
<div>
<button> Simple Button </button>
</div>
</div>
En ajoutant cette ligne de code CSS à la balise h2 ou à la balise div que contient le bouton étiquette
style: "text-align: center;"
Finaly Le code de résultat sera:
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2 style="text-align:center;"> Simple Text </h2> <!-- <<--- here the changes -->
<div style="text-align:center"> <!-- <<--- here the changes -->
<button> Simple Button </button>
</div>
</div>
Je suis passé par là et je pensais quitter la solution que j'avais également utilisée, qui utilise line-height
et text-align: center
pour effectuer un centrage vertical et horizontal:
La réponse la plus simple qui puisse s’appliquer à la plupart des cas est de définir la marge sur 0 auto
et de régler l’affichage sur block
. Vous pouvez voir comment j'ai centré mon bouton dans ma démo sur CodePen
Pour centrer un <button type = "button">
à la fois verticalement et horizontalement dans un <div>
dont la largeur est calculée dynamiquement, comme dans votre cas, procédez comme suit:
text-align: center;
sur le retour à la ligne <div>
: cela centrera le bouton chaque fois que vous redimensionnerez le <div>
(ou plutôt la fenêtre)Pour l'alignement vertical, vous devrez définir margin: valuepx;
pour le bouton. Voici la règle pour calculer valuepx
:
valuepx = (wrappingDIVheight - buttonHeight)/2
Voici une démonstration de JS Bin .
Si div est #div et que le bouton est #button:
#div {
display: table-cell;
width: 100%;
height: 100%;
text-align: center;
vertical-align: center;
}
#button {}
Puis emboîtez le bouton dans div comme d’habitude.
Option CSS réactive pour centrer un bouton verticalement et horizontalement sans se préoccuper de la taille de l'élément parent (en utilisant des crochets d'attributs de données pour des raisons de clarté et de séparation) :
HTML
<div data-element="card">
<div data-container="button"><button>CTA...</button></div>
</div>
CSS
[data-container="button"] {
position: absolute;
top: 50%;
text-align: center;
width: 100%;
}
Le plus simple est de le saisir en tant que "div", de lui attribuer une "marge: 0 auto", mais si vous souhaitez le centrer, vous devez lui donner une largeur.
Div{
Margin: 0 auto ;
Width: 100px ;
}
Manière réactive de centrer votre bouton dans un div:
<div
style="display: flex;
align-items: center;
justify-content: center;
margin-bottom: 2rem;">
<button type="button" style="height: 10%; width: 20%;">hello</button>
</div>