Seguir não funciona. Qual é o erro que estou cometendo. <html> <head> <style> #over img {display: block; margem esquerda: auto; margem direita: auto; } </style> </head> <body> <div id = "over" style = "position: absolute; width: 100%; height: 100%"> <img src = " img8a.flixcart.com/image/ tablet / f / k / t /… "> </div> </body> </html>
nizam.sp
1
Se não usarmos, display: blocko padrão é de display: inlineacordo com w3schools.com/cssref/pr_class_display.asp . Por que precisamos usar o bloco? Eu trabalhei para mim, mas não sei por que o bloco centralizará o img e o inline não.
precisa saber é o seguinte
porque inline não se move na linha, é, de fato, na linha. portanto, margem automática é ineficaz.
Solução muito curta e fácil, mas parece estar funcionando apenas com largura e altura fixas, sem porcentagem. Ele funciona com carros alegóricos, portanto, +1 para isso. # Jsfiddle.net/2s2nY/2
magnetronnie
1
mas isso está apenas fazendo o alinhamento vertical, mas não o horizontal, certo?
V-SHY
1
Não funcionará se a largura da imagem for maior que a largura da div.
Davuz 26/05
5
Se removermos display: table-cell; funciona perfeitamente.
Ahesanali Suthar
103
Isso também pode ser feito usando o layout do Flexbox:
TAMANHO ESTÁTICO
.parent {display: flex;height:300px;/* Or whatever */background-color:#000;}.child {width:100px;/* Or whatever */height:100px;/* Or whatever */margin: auto;/* Magic! */}
*{padding:0;margin:0;}#over
{position:absolute;width:100%;height:100%;text-align: center;/*handles the horizontal centering*/}/*handles the vertical centering*/.Centerer
{display: inline-block;height:100%;vertical-align: middle;}.Centered
{display: inline-block;vertical-align: middle;}
Nota: esta solução é boa para alinhar qualquer elemento dentro de qualquer elemento. para o IE7, ao aplicar a .Centeredclasse em elementos de bloco, você precisará usar outro truque para obter o inline-blocktrabalho. (isso porque o IE6 / IE7 não funciona bem com o bloco embutido nos elementos do bloco)
@ Deadlock é bem conhecido. mas eu estava alvejando navegadores antigos do IE (que não suportavam pseudo elementos).
Avrahamcool
1
Não é, mas o HTML deve ser usado apenas para estrutura, não para apresentação. Esse trabalho é deixado para CSS, daí o pseudo-elemento.
Deathlock
1
O que você quer dizer com "Não interromper o fluxo do documento (sem flutuações ou posicionamento absoluto)"? Qual é o #over { position:absolute; width:100%; height:100%;?
Rodrigo
1
@ Rodrigo, de fato, se você não precisar segmentar navegadores mais antigos, este flexbox é a abordagem recomendada.
Eu também tive que adicionar CSS pai, mas seu código funcionou perfeitamente! posição: relativa; largura: 100%; flutuar: esquerda; estouro: oculto; altura mínima: 189px;
usar o seguinte comando
10
Basicamente, definir a margem direita e esquerda como automática fará com que a imagem fique alinhada ao centro.
realmente não há espaços entre eles (como visto aqui).
Apenas básico para evitar essas lacunas (inerentes ao bloco embutido) entre elas. Essas lacunas podem ser vistas entre cada duas palavras que estou escrevendo agora! :-) Então .. espero que isso ajude alguns de vocês.
Eu tentei muitas abordagens, mas somente essa funciona para vários elementos embutidos dentro de uma div de contêiner. Aqui está o código para alinhar tudo em div no meio.
CSS
.divContainer
{
vertical-align: middle;
text-align: center;<!--If you want horizontal center alignment -->}.divContainer >*{
vertical-align: middle;}
Amor css3! Obrigado. No entanto, é bom observar que isso só funcionará em navegadores modernos (exceto no IE). Todos os outros navegadores não terão efeito.
Neel
2
Muitas respostas sugerem o uso, margin:0 automas isso funciona apenas quando o elemento que você está tentando centralizar não está flutuando à esquerda ou à direita, ou seja, o floatatributo css não está definido. Para fazer isso, aplique o displayatributo table-celle, em seguida, aplique a margem esquerda e direita ao automático, para que seu estilo pareçastyle="display:table-cell;margin:0 auto;"
Isso funcionou para mim quando você precisa centralizar a imagem de alinhamento e sua div principal com a imagem cobre a tela inteira. ou seja, altura: 100% e largura: 100%
A resposta marcada para isso não alinhará verticalmente a imagem. Uma solução adequada para navegadores modernos é o flexbox. Um contêiner flexível pode ser configurado para alinhar seus itens horizontalmente e verticalmente.
Esta solução responde à pergunta e funciona, ao contrário da resposta marcada. Talvez o eleitor em baixa possa detalhar sua decisão de votar em baixa?
WDuffy # 30/19
6
Da fila de revisão : Posso solicitar que você adicione algum contexto ao seu código-fonte. As respostas somente de código são difíceis de entender. Isso ajudará os solicitantes e futuros leitores, se você puder adicionar mais informações em sua postagem.
RBT
1
Isso não justifica o voto negativo. A resposta é tecnicamente correta e ajudaria futuros leitores. Atualizei o corpo da resposta para respeitar as regras da empresa, mas talvez uma solução mais direta deva ser implementada pela equipe principal, pois identificar respostas apenas com código é uma tarefa trivial.
Uma maneira simples seria criar estilos separados para a div e a imagem e depois posicioná-los independentemente. Digamos que se eu quiser definir a posição da minha imagem para 50%, então eu teria um código parecido com o seguinte ....
Apenas me diga se ele funciona com todos os tipos de navegadores, mesmo que isso é uma coisa básica que cada navegador deve suportar (caso contrário não chamá-lo de um navegador)
IMPORTANTE PARA O TESTE: Para executar o snippet de código, clique no botão esquerdo EXECUTE o snippet de código e , em seguida, no link direito Página inteira
Respostas:
JSFiddle
fonte
display: block;
foi minha armadilha. TnXdisplay: block
o padrão é dedisplay: inline
acordo com w3schools.com/cssref/pr_class_display.asp . Por que precisamos usar o bloco? Eu trabalhei para mim, mas não sei por que o bloco centralizará o img e o inline não.fonte
Isso também pode ser feito usando o layout do Flexbox:
TAMANHO ESTÁTICO
TAMANHO DINÂMICO
Encontrei o exemplo neste artigo , que faz um ótimo trabalho explicando como usar o layout.
fonte
Parece-me que você também queria que a imagem fosse verticalmente centralizada no contêiner. (Não vi nenhuma resposta que fornecesse isso)
Violino de trabalho:
HTML
CSS
Nota: esta solução é boa para alinhar qualquer elemento dentro de qualquer elemento. para o IE7, ao aplicar a
.Centered
classe em elementos de bloco, você precisará usar outro truque para obter oinline-block
trabalho. (isso porque o IE6 / IE7 não funciona bem com o bloco embutido nos elementos do bloco)fonte
span
, você poderia usar o pseudo-elemento:before
: jsfiddle.net/xaliber/cj6zhtp0#over { position:absolute; width:100%; height:100%;
?fonte
Você pode fazer isso facilmente usando a propriedade display: flex css
fonte
fonte
Eu ainda tinha alguns problemas com outra solução apresentada aqui. Finalmente, isso funcionou melhor para mim:
css3:
Você pode ler mais sobre essa abordagem nesta página .
fonte
Basicamente, definir a margem direita e esquerda como automática fará com que a imagem fique alinhada ao centro.
fonte
Esta seria uma abordagem mais simples
fonte
A resposta de Daaawx funciona, mas acho que seria mais limpo se eliminássemos o CSS embutido.
fonte
configurando o img para display: inline-block enquanto tiver definido a div superior como text-align: center também fará o trabalho
EDIT: para aquelas pessoas que estão brincando com display: inline-block >>> não esqueça que, por exemplo, duas divs como
realmente não há espaços entre eles (como visto aqui).
Apenas básico para evitar essas lacunas (inerentes ao bloco embutido) entre elas. Essas lacunas podem ser vistas entre cada duas palavras que estou escrevendo agora! :-) Então .. espero que isso ajude alguns de vocês.
fonte
SIMPLES. 2018. FlexBox. Para verificar o suporte ao navegador - Posso usar a
solução mínima:
Para obter o suporte mais amplo possível ao navegador:
fonte
Eu tentei muitas abordagens, mas somente essa funciona para vários elementos embutidos dentro de uma div de contêiner. Aqui está o código para alinhar tudo em div no meio.
CSS
HTML
O código de amostra está aqui: https://jsfiddle.net/yogendrasinh/2vq0c68m/
fonte
Arquivo CSS
fonte
Experimente este código mínimo:
E CSS:
fonte
Bem, estamos em 2016 ... por que não usar o flexbox? Também é responsivo. Aproveitar.
fonte
Muitas respostas sugerem o uso,
margin:0 auto
mas isso funciona apenas quando o elemento que você está tentando centralizar não está flutuando à esquerda ou à direita, ou seja, ofloat
atributo css não está definido. Para fazer isso, aplique odisplay
atributotable-cell
e, em seguida, aplique a margem esquerda e direita ao automático, para que seu estilo pareçastyle="display:table-cell;margin:0 auto;"
fonte
fonte
HTML:
CSS:
fonte
Para centralizar horizontalmente Basta colocar
Outro método:
Para o centro verticalmente Basta colocar:
fonte
Isso funcionou para mim:
fonte
isso fez o truque para mim.
'Observação: neste caso, não há uma classe css associada a' BrandImage '
CSS:
fonte
Isso funcionou para mim quando você precisa centralizar a imagem de alinhamento e sua div principal com a imagem cobre a tela inteira. ou seja, altura: 100% e largura: 100%
fonte
Use posicionamento. O seguinte funcionou para mim ...
Com o zoom no centro da imagem (a imagem preenche a div):
Sem zoom para o centro da imagem (a imagem não preenche a div):
fonte
A resposta marcada para isso não alinhará verticalmente a imagem. Uma solução adequada para navegadores modernos é o flexbox. Um contêiner flexível pode ser configurado para alinhar seus itens horizontalmente e verticalmente.
fonte
Você pode dar uma olhada nesta solução:
Centralizando horizontal e verticalmente uma imagem em uma caixa
fonte
Uma maneira simples seria criar estilos separados para a div e a imagem e depois posicioná-los independentemente. Digamos que se eu quiser definir a posição da minha imagem para 50%, então eu teria um código parecido com o seguinte ....
fonte
Modifique o valor da altura para sua necessidade.
fonte
Isso deve funcionar.
IMPORTANTE PARA O TESTE: Para executar o snippet de código, clique no botão esquerdo EXECUTE o snippet de código e , em seguida, no link direito Página inteira
fonte