Mam div, którego szerokość wynosi 100%.
Chciałbym wyśrodkować przycisk w środku, jak mogę to zrobić?
<div style="width:100%; height:100%; border: 1px solid">
<button type="button">hello</button>
</div>
Mam div, którego szerokość wynosi 100%.
Chciałbym wyśrodkować przycisk w środku, jak mogę to zrobić?
<div style="width:100%; height:100%; border: 1px solid">
<button type="button">hello</button>
</div>
Odpowiedzi:
Zaktualizowana odpowiedź
Aktualizacja, ponieważ zauważyłem, że jest to aktywna odpowiedź, jednak Flexbox będzie teraz właściwym podejściem.
Wyrównanie w pionie i poziomie.
#wrapper {
display: flex;
align-items: center;
justify-content: center;
}
Tylko poziomo (o ile główna oś flex jest pozioma, co jest domyślne)
#wrapper {
display: flex;
justify-content: center;
}
Oryginalna odpowiedź przy użyciu stałej szerokości i bez Flexbox
Jeśli oryginalny plakat chce wyrównywania w pionie i środku jest dość łatwy dla stałej szerokości i wysokości przycisku, spróbuj wykonać następujące czynności
CSS
button{
height:20px;
width:100px;
margin: -20px -50px;
position:relative;
top:50%;
left:50%;
}
tylko do wyrównania w poziomie użyj albo
button{
margin: 0 auto;
}
lub
div{
text-align:center;
}
Możesz po prostu:
<div style="text-align: center; border: 1px solid">
<input type="button" value="button">
</div>
Lub możesz to zrobić w ten sposób:
<div style="border: 1px solid">
<input type="button" value="button" style="display: block; margin: 0 auto;">
</div>
Pierwszy z nich wyśrodkuje wszystko w środku div. Drugi wyśrodkuje wyrównanie tylko przycisku.
zrobione:
button {
width: 100px; // whatever your button's width
margin: 0 auto; // auto left/right margins
display: block;
}
Aktualizacja : Jeśli OP szuka środka poziomego i pionowego, ta odpowiedź zrobi to dla elementu o stałej szerokości / wysokości.
Margines: 0 auto; jest poprawną odpowiedzią tylko dla centrowania poziomego. Do centrowania w obie strony działa coś takiego, używając 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);
Aktualizacja ... pięć lat później można użyć Flexboksa na nadrzędnym elemencie DIV, aby łatwo wyśrodkować przycisk zarówno w poziomie, jak i w pionie.
W tym wszystkie prefiksy przeglądarki dla najlepszego wsparcia
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;
}
Z podanymi ograniczonymi szczegółami założę najprostszą sytuację i powiem, że możesz użyć text-align: center
:
Powinieneś zacząć od prostoty, proszę:
najpierw masz początkową pozycję tekstu lub przycisku:
<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>
Dodając ten wiersz kodu css do znacznika h2 lub znacznika div, który przechowuje znacznik przycisku
style: „text-align: center;”
Ostatecznie Kod wyniku będzie:
<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>
Przekroczyłem to i pomyślałem, że zostawię również rozwiązanie, którego użyłem, które wykorzystuje line-height
i text-align: center
wykonuje zarówno centrowanie w pionie, jak i w poziomie:
Aby wyśrodkować <button type = "button">
zarówno w pionie, jak iw poziomie, w obrębie <div>
której szerokość jest obliczana dynamicznie, jak w twoim przypadku, wykonaj następujące czynności:
text-align: center;
na zawijanie <div>
: spowoduje to wyśrodkowanie przycisku przy każdej zmianie rozmiaru <div>
(a raczej okna)W przypadku wyrównania w pionie należy ustawić margin: valuepx;
przycisk. Jest to reguła obliczania valuepx
:
valuepx = (wrappingDIVheight - buttonHeight)/2
Oto demo JS Bin .
Najłatwiej jest wprowadzić go jako „div”, nadać mu „margines: 0 auto”, ale jeśli chcesz, aby był wyśrodkowany, musisz nadać mu szerokość
Div{
Margin: 0 auto ;
Width: 100px ;
}
Responsywna opcja CSS, aby wyśrodkować przycisk w pionie i poziomie, nie przejmując się wielkością elementu nadrzędnego (używając haczyków atrybutów danych w celu zapewnienia przejrzystości i separacji) :
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%;
}
Elastyczny sposób na wyśrodkowanie przycisku w 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>
Załóżmy, że div to #div, a przycisk to #b przycisk:
#div {
display: table-cell;
width: 100%;
height: 100%;
text-align: center;
vertical-align: center;
}
#button {}
Następnie jak zwykle zagnieżdż przycisk w div.