Como posso Center (vertical e horizontalmente) botões em uma tag div?
Pergunta
Eu estou tentando determinar como centro (vertical e horizontalmente) botões em uma tag div.
Dado o seguinte CSS:
div.listBoxMoverUserControl
{
width: 350px;
height: 175px;
}
div.listBoxMoverUserControl div
{
height: 150px;
}
div.listBoxMoverUserControl div select
{
width: 150px;
height: 150px;
}
div.listBoxMoverUserControl div.listBoxMoverUserControl_column1
{
float: left;
width: 150px;
}
div.listBoxMoverUserControl div.listBoxMoverUserControl_column2
{
float: left;
width: 50px;
}
div.listBoxMoverUserControl div.listBoxMoverUserControl_column3
{
float: left;
width: 150px;
}
Eu gostaria de ter os botões neste marcação centrado. Como posso modificar o CSS para conseguir isso?
<div class="listBoxMoverUserControl">
<div class="listBoxMoverUserControl_column1">
<label>Test1</label>
<asp:ListBox runat="server"></asp:ListBox>
</div>
<div class="listBoxMoverUserControl_column2">
<input id="btnMoveRight" type="button" value="->" /> <br />
<input id="btnMoveLeft" type="button" value="<-" /> <br />
</div>
<div class="listBoxMoverUserControl_column3">
<label>Test2</label>
<asp:ListBox runat="server"></asp:ListBox>
</div>
</div>
Solução
definir as margens em torno do objeto para assumir o resto do espaço. Se você quiser centralizar um 50px por 50px div em um 100px por 100px div, então você irá definir uma margem de 25px em torno da div 50px.
Outras dicas
Defina os itens dentro de sua div assim:
margin: 0px 0px auto auto; text-align: center;
<div class="listBoxMoverUserControl_column1" style="margin: 0px auto 0px auto; text-align: center;">
** Eu apenas fiz um exemplo inline para mostrar o que eu quis dizer.
Aqui é transformar uma solução usando CSS (teve para adicionar um class="button_group"
recipiente para os dois elementos de entrada na coluna do meio, a fim de centralizá-los corretamente):
div,
label,
button_group {
border: 1px solid blue;
}
*,
*:before,
*:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
div.listBoxMoverUserControl {
width: 352px;
height: 150px;
}
div.listBoxMoverUserControl div {
height: 150px;
}
div.listBoxMoverUserControl div select {
width: 150px;
height: 150px;
}
div.listBoxMoverUserControl div.listBoxMoverUserControl_column1 {
float: left;
width: 150px;
}
div.listBoxMoverUserControl div.listBoxMoverUserControl_column2 {
float: left;
width: 50px;
}
div.listBoxMoverUserControl div.listBoxMoverUserControl_column3 {
float: left;
width: 150px;
}
div.listBoxMoverUserControl_column1,
div.listBoxMoverUserControl_column2,
div.listBoxMoverUserControl_column3 {
/* centering */
position: relative;
}
/* centering */
.button_group {
height: auto !important;
}
div label,
.button_group {
/* centering */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
<div class="listBoxMoverUserControl">
<div class="listBoxMoverUserControl_column1">
<label>Test1</label>
</div>
<div class="listBoxMoverUserControl_column2">
<div class="button_group">
<input id="btnMoveRight" type="button" value="->" /> <br />
<input id="btnMoveLeft" type="button" value="<-" /> <br />
</div>
</div>
<div class="listBoxMoverUserControl_column3">
<label>Test2</label>
</div>
</div>