posicionamento superior e inferior com auto?
o meu div exterior é a posição: o div relativo e o div interior é o absoluto.
quero colocar o meu centro interno de div alinhado verticalmente e pensar em usar top: auto e bottom: auto, mas não está a funcionar. Por favor, me aconselhe como isso pode ser feito.
div.Container div.Right
{
width:50%;
float:right ;
border: 01px dashed green;
height:95px !important;
position:relative !important;
}
div.header-search
{
overflow:auto;
display:inline;
border:0px dashed blue;
position:absolute;
top:auto;
bottom:auto;
right:0px;
}
<div class="Right">
<div class="header-search">
<input type="text" class="searchbox" />
<input type="button" class="searchbutton" value="›" />
</div>
</div>
7 answers
Podes usar line-height:95px;
no div exterior e vertical-align: middle;
no div interior assim:
div.Right
{
width:50%;
float:right ;
border: 01px dashed green;
line-height:95px !important;
display: block;
}
div.header-search
{
overflow:auto;
border:0px dashed blue;
vertical-align: middle;
}
Podes brincar com isso aqui. http://jsfiddle.net/leniel/5Mm67/
Se quiser alinhar horizontalmente o conteúdo do div interior, basta adicionar isto em div.Right
:
text-align: center;
A melhor maneira de conseguir o que procura seria remover o estilo bottom:auto;
e substituir o top:auto;
por top:50%;
. Depois disso trabalhar para fora a altura da barra de pesquisa que você está tentando centrar (digamos seu 20px) e adicionar um estilo de margem negativo para a metade de sua altura, então se fosse 20px o estilo seria margin-top:-10px;
O teu css seria assim:
div.header-search
{
overflow:auto;
display:inline;
border:0px dashed blue;
position:absolute;
top:50%;
height:20px;
margin-top:-10px;
right:0;
}
Por exemplo:
div.header-search
{
overflow:auto;
display:inline;
border:0px dashed blue;
position:absolute;
top:50%;
height: 500px;
margin-top:-250px;
right:0px;
}
Então, sim, neste caso teria de definir uma altura fixa.
Colocado no div com a posição absoluta: "top:50%;"
Ele irá mostrar o div um pouco a baixo (top o div absoluto deve ser exatamente sobre os 50% da altura do pai - div relativo), mas existem maneiras de contornar isso.
Por exemplo: Faça ainda mais um div com posição relativa e mova-o mais alto com metade da altura absoluta do div (isto não parece muito bom em código) - você deve saber a altura divs, se você não pode medir o tamanho em sth como jQuery e mover um pouco mais alto.
Maneira mais fácil: talvez tentar 45% em vez de 50% (se não for o design do pixel para pixel).
Provavelmente alguém tem melhores soluções, se assim for, eu gostaria de vê-las a :)
div.header-search
{
overflow:auto;
display:inline;
border:0px dashed blue;
position:absolute;
top:50%;
right:0px;
}
HTML:
<div id="parent">
<div id="child">Content here</div>
</div>
CSS:
#parent {position: relative;}
#child {
position: absolute;
top: 50%;
left: 50%;
height: 30%;
width: 50%;
margin: -15% 0 0 -25%;
}
Aqui estão outros métodos Clique aqui para ver a referência completa Hope, vai ajudar-te. Aplauso. !!
Tente ajustar o div interior à margem: auto 0;