#menu {
position: fixed;
width: 800px;
background: rgb(255, 255, 255); /* The Fallback */
background: rgba(255, 255, 255, 0.8);
margin-top: 30px;
}
Eu sei que essa pergunta existe um milhão de vezes, mas não consigo encontrar uma solução para o meu caso. Eu tenho uma div, que deve ser corrigida na tela, mesmo que a página seja rolada, ela sempre deve permanecer centralizada no meio da tela!
A div deve ter 500px
largura, deve estar 30px
afastada da parte superior (margem superior), centralizada horizontalmente no meio da página para todos os tamanhos de navegador e não deve se mover ao rolar o restante da página.
Isso é possível?
Respostas:
fonte
-400
se deve à largura da div que está sendo configurada800
.As respostas aqui estão desatualizadas. Agora você pode facilmente usar uma transformação CSS3 sem codificar uma margem . Isso funciona em todos os elementos, incluindo elementos sem largura ou largura dinâmica.
Centro horizontal:
Centro vertical:
Horizontal e vertical:
A compatibilidade não é um problema: http://caniuse.com/#feat=transforms2d
fonte
Se o uso de blocos embutidos for uma opção, eu recomendaria esta abordagem:
Eu escrevi um pequeno post sobre isso aqui: http://salomvary.github.com/position-fixed-horizontally-centered.html
fonte
width
ou algo assim - ao contrário @Quentins respostaEditar setembro de 2016: Embora seja bom ainda obter uma votação ocasional ocasional para isso, porque o mundo mudou, agora eu iria com a resposta que usa transform (e que tem uma tonelada de votos). Eu não faria mais dessa maneira.
Outra maneira de não precisar calcular uma margem ou precisar de um sub-container:
fonte
bottom:0
garantiria que o menu esteja sempre centralizado verticalmente, mas agora vejo que não é isso que o OP solicitou. :)É possível centralizar horizontalmente a div desta maneira:
html:
css:
Dessa maneira, você sempre terá seu bloco interno centralizado; além disso, ele pode ser facilmente transformado em verdadeiro responsivo (no exemplo, será apenas fluido em telas menores), portanto, não há limitação, como no exemplo da pergunta e na resposta escolhida. .
fonte
... ou você pode agrupar seu menu div em outro:
fonte
Aqui está outra solução de duas div. Tentou mantê-lo conciso e não codificado. Primeiro, o html esperado:
O princípio por trás do css a seguir é posicionar algum lado de "externo" e, em seguida, usar o fato de que ele assume o tamanho de "interno" para mudar relativamente o último.
Essa abordagem é semelhante à de Quentin, mas interna pode ser de tamanho variável.
fonte
Aqui está uma solução flexbox ao usar uma div de wrapper de tela cheia. justificar conteúdo centra sua criança div horizontalmente e alinhar itens centraliza verticalmente.
fonte