Estou tentando centralizar o conteúdo de minhas guias verticalmente, mas quando adiciono o estilo CSS display:inline-flex
, o alinhamento horizontal do texto desaparece.
Como posso fazer os alinhamentos de texto xey para cada uma das minhas guias?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
Respostas:
Abordagem 1 -
transform
translateX
/translateY
:Exemplo aqui / Exemplo em tela cheia
Nos navegadores suportados (a maioria deles), você pode usar
top: 50%
/left: 50%
em combinação comtranslateX(-50%) translateY(-50%)
para centralizar verticalmente / horizontalmente o elemento dinamicamente.Abordagem 2 - Método Flexbox:
Exemplo aqui / Exemplo em tela cheia
Nos navegadores suportados , defina o
display
elemento de destino comoflex
e usealign-items: center
para centralização vertical ejustify-content: center
centralização horizontal. Apenas não esqueça de adicionar prefixos de fornecedores para suporte adicional ao navegador ( veja o exemplo ).Abordagem 3 -
table-cell
/vertical-align: middle
:Exemplo aqui / Exemplo em tela cheia
Em alguns casos, você precisará garantir que a altura do elemento
html
/body
esteja definida como100%
.Para o alinhamento vertical, definir o elemento pai
width
/height
a100%
e adicionedisplay: table
. Em seguida, para o elemento filho, altere odisplay
paratable-cell
e adicionevertical-align: middle
.Para centralização horizontal, você pode adicionar
text-align: center
para centralizar o texto e quaisquer outrosinline
elementos filhos. Como alternativa, você pode usarmargin: 0 auto
, assumindo que o elemento estejablock
nivelado.Abordagem 4 - Absolutamente posicionado a
50%
partir do topo com deslocamento:Exemplo aqui / Exemplo em tela cheia
Essa abordagem pressupõe que o texto tenha uma altura conhecida - neste caso
18px
,. Posicione o elemento absolutamente50%
de cima, em relação ao elemento pai. Use ummargin-top
valor negativo que seja metade da altura conhecida do elemento, neste caso --9px
.Abordagem 5 - O
line-height
método (Menos flexível - não sugerido):Exemplo Aqui
Em alguns casos, o elemento pai terá uma altura fixa. Para centralização vertical, tudo o que você precisa fazer é definir um
line-height
valor no elemento filho igual à altura fixa do elemento pai.Embora essa solução funcione em alguns casos, é importante notar que ela não funcionará quando houver várias linhas de texto - assim .
fonte
display: flex
nos pais ealign-self: center
nos filhos.Se CSS3 for uma opção (ou você tiver um fallback), poderá usar transform:
Diferente da primeira abordagem acima, você não deseja usar a esquerda: 50% com a tradução negativa porque há um bug de estouro no IE9 +. Utilize um valor certo positivo e você não verá barras de rolagem horizontais.
fonte
transform: translateX(50%) translateY(50%);
. A transformação acima não está sintaticamente correta, de acordo com os documentos de transformação da Mozilla .transform
valores que podem assumir um valor X e Y tem uma função básica para receber ambos e funções especializadas para tirar apenas um.A melhor maneira de centralizar uma caixa na vertical e na horizontal é usar dois contêineres:
O recipiente externo:
display: table;
O recipiente interno:
display: table-cell;
vertical-align: middle;
text-align: center;
A caixa de conteúdo:
display: inline-block;
Demo:
Veja também este violino !
Centralizando no meio da página:
Para centralizar seu conteúdo no meio da sua página, adicione o seguinte ao seu contêiner externo:
position : absolute;
width: 100%;
height: 100%;
Aqui está uma demonstração para isso:
Veja também este violino !
fonte
Aqui está como usar 2 propriedades flex simples para centralizar n divs no eixo 2:
align-items: center
centralizará verticalmente os blocosjustify-content: space-around
distribuirá o espaço horizontal livre ao redor dos divsfonte
Execute esse snippet de código e veja uma div alinhada vertical e horizontalmente.
fonte
A solução mais simples e limpa para mim é usar a propriedade CSS3 "transform":
fonte
O primeiro filho será alinhado vertical e horizontalmente no centro
fonte
centralizar o Div em uma página check the fiddle link
Atualizar Outra opção é usar a caixa flexível check the fiddle link
fonte
Abaixo está a abordagem Flex-box para obter o resultado desejado
fonte
Outra abordagem é usar a tabela:
fonte
Para centralizar vertical e horizontalmente um elemento, também podemos usar as propriedades abaixo mencionadas.
Esta propriedade CSS alinha itens verticalmente e aceita os seguintes valores:
flex-start : os itens estão alinhados com a parte superior do contêiner.
flex-end : os itens se alinham ao fundo do contêiner.
centro : os itens são alinhados no centro vertical do contêiner.
linha de base : os itens são exibidos na linha de base do contêiner.
esticar : os itens são esticados para caber no contêiner.
Esta propriedade CSS justifica o conteúdo , que alinha itens horizontalmente e aceita os seguintes valores:
flex-start : os itens estão alinhados ao lado esquerdo do contêiner.
flex-end : os itens estão alinhados ao lado direito do contêiner.
Centro : os itens são alinhados no centro do contêiner.
espaço entre : os itens são exibidos com espaçamento igual entre eles.
space-around : os itens são exibidos com espaçamento igual ao redor deles.
fonte
Abordagem de CSS em grade
fonte
É necessário seguir a seguinte solução nova e fácil:
fonte
fonte
Basta fazer 0, superior, inferior, esquerda e direita.
fonte
Você pode conseguir isso usando CSS (seu elemento
display:inline-grid
+grid-auto-flow: row;
) Grid e Flex Box (elemento paidisplay:flex;
),Veja abaixo o snippet
fonte
Link de origem
Veja outros métodos aqui
fonte
A maneira mais fácil de centralizar uma div na vertical e na horizontal é a seguinte:
Mais um exemplo :
fonte
Este é um problema relacionado que as pessoas podem acessar esta página ao pesquisar: Quando eu quero centralizar uma div para um gif animado "em espera .." (quadrado de 100 px) que eu uso:
fonte
Se você preferir sem :
flexbox / grid / table
ou sem o:
vertical-align: middle
Você pode fazer:
HTML
CSS
fonte
Isso deve funcionar
fonte
Simples! Use flex de exibição no contêiner e margem automática no texto !!!!
Demonstração: https://jsfiddle.net/ay95f08g/
Testado: Safari, Chrome, Firefox e Opera no MacOs Mojave. (última atualização em 25 de fevereiro de 2019)
fonte
Há muitos foi fazer o mesmo. você pode usar o seguinte método para criar a div no meio da página.
Felicidades !
fonte
A
flexbox
abordagem mais simples :A maneira mais fácil de centralizar um único elemento vertical e horizontalmente é torná-lo um item flexível e definir sua margem para
auto
:Essa extensão de margens em cada direção empurrará o elemento exatamente para o meio de seu contêiner.
fonte