Estou tentando encontrar a maneira mais eficaz de alinhar o texto com uma div. Eu tentei algumas coisas e nenhuma parece funcionar.
.testimonialText {
position: absolute;
left: 15px;
top: 15px;
width: 150px;
height: 309px;
vertical-align: middle;
text-align: center;
font-family: Georgia, "Times New Roman", Times, serif;
font-style: italic;
padding: 1em 0 1em 0;
}
<div class="testimonialText">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
html
css
vertical-alignment
shinjuo
fonte
fonte
Respostas:
Centralização vertical em CSS
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
Resumo do artigo:
Para um navegador CSS 2, é possível usar
display:table
/display:table-cell
para centralizar o conteúdo.Uma amostra também está disponível no JSFiddle :
É possível mesclar hacks para navegadores antigos (Internet Explorer 6/7) em estilos usando
#
para ocultar estilos de navegadores mais recentes:fonte
table
apesar de que rotineiramente quebro o coração dos fãs de CSS. A maioria deles cria apenas blogs simples e sites estáticos. Alguns de nós desenvolvem software comercial e precisam de exibição densa de dados, e nossos usuários se preocupam mais com a funcionalidade.table
. As coisas estão melhores agora, mas alguns de nós que desenvolvemos aplicativos da Web para negócios precisam oferecer suporte a navegadores mais antigos (o IE6 ainda está em uso em alguns clientes!), Enquanto as pessoas que criam blogs podem viver nas nuvens e fingir que todo mundo no mundo tem um conexão rápida, computador novo, e a última versão do navegador X com CSS 3, etc. Caso em questão: alguns plugins Jira usar tabelas com uma fila de layout (ou fez qualquer maneira)Você precisa adicionar o
line-height
atributo e esse atributo deve corresponder à altura dodiv
. No seu caso:De fato, você provavelmente poderia remover o
height
atributo completamente.Isso funciona apenas para uma linha de texto , portanto, tenha cuidado.
fonte
Aqui está um ótimo recurso
Em http://howtocenterincss.com/ :
Usando o Flexbox
De acordo com a atualização deste post com a tecnologia mais recente, aqui está uma maneira muito mais fácil de centralizar algo usando o Flexbox. O Flexbox não é suportado no Internet Explorer 9 e inferior .
Aqui estão alguns ótimos recursos:
JSFiddle com prefixos de navegador
Outra solução
É do zerosixthree e permite centralizar qualquer coisa com seis linhas de CSS
Este método não é suportado no Internet Explorer 8 e inferior .
jsfiddle
Resposta anterior
Uma abordagem simples e entre navegadores, útil como links na resposta marcada, está um pouco desatualizada.
Andy Howard - Como centralizar vertical e horizontalmente o texto em uma lista ou divisão não ordenada
Como não me importava muito com o Internet Explorer 7/6 no último projeto em que trabalhei, usei uma versão um pouco simplificada (ou seja, removi as coisas que o faziam funcionar no Internet Explorer 7 e 6). Pode ser útil para outra pessoa ...
JSFiddle
fonte
height: x; line-height: x;
mas com mais frequência do que eu não preciso de várias linhas de texto. É por isso que eu amo essa solução. Simples, reutilizável, em vários navegadores, sem js e requer apenas uma pequena marcação extra.height: 100px;
paraheight: 100%;
para oli
e para.outerContainer
.É fácil com
display: flex
. Com o método a seguir, o texto nodiv
será centralizado verticalmente:E se você quiser, horizontal:
Você deve ver a versão do navegador que precisa; nas versões antigas, o código não funciona.
fonte
text-align: center
é necessário também, porque a largura do texto longo de preenchimento e será alinhado à esquerdaEu uso o seguinte para centralizar verticalmente elementos aleatórios facilmente:
HTML:
CSS:
Isso centraliza o texto no meu
div
para o meio vertical exato de um externo de 200px de alturadiv
. Observe que você pode precisar usar um prefixo do navegador (como-webkit-
no meu caso) para fazer isso funcionar no seu navegador.Isso funciona não apenas para texto, mas também para outros elementos.
fonte
position: absolute;
- Obrigado! NB Você pode querer incluído-ms-transform
ou IE vai encher outra coisa-se-web-kit-transform
antestransform
. Talvez adicionar-ms-transform
possa resolver o problema de @ ToniMichelCaubet.Você pode fazer isso configurando a exibição para 'table-cell' e aplicando um
vertical-align: middle;
:No entanto, isso não é suportado por todas as versões do Internet Explorer, de acordo com este trecho que eu copiei de http://www.w3schools.com/cssref/pr_class_display.asp sem permissão.
Nota: Os valores "tabela em linha", "tabela", "legenda da tabela", "célula da tabela", "coluna da tabela", "grupo da coluna da tabela", "linha da tabela", "linha da tabela -group "e" herdar "não são suportados pelo Internet Explorer 7 e versões anteriores. O Internet Explorer 8 requer um! DOCTYPE. Internet Explorer 9 suporta os valores.
A tabela a seguir mostra os valores de exibição permitidos também em http://www.w3schools.com/cssref/pr_class_display.asp .
fonte
Hoje em dia (não precisamos mais do Internet Explorer 6-7-8), eu usaria CSS
display: table
para esse problema (oudisplay: flex
).Para navegadores mais antigos:
Mesa:
Flex:
Esta é (na verdade, foi) minha solução favorita para esse problema (simples e muito bem suportado pelo navegador):
fonte
Tente isso, adicione a div pai:
fonte
Aqui está uma solução que funciona melhor para uma única linha de texto.
Também pode funcionar para texto com várias linhas, com alguns ajustes, se o número de linhas for conhecido.
Aqui está um JSFiddle .
fonte
fonte
Você pode alinhar o texto central verticalmente dentro de uma div usando o Flexbox.
Você pode aprender mais sobre isso em Um guia completo para o Flexbox .
fonte
Verifique esta solução simples:
HTML
CSS
JSFiddle
fonte
Existe uma maneira mais simples de alinhar verticalmente o conteúdo sem recorrer à tabela / célula de tabela:
http://jsfiddle.net/bBW5w/1/
Nele, adicionei uma div invisível (largura = 0) que assume toda a altura do contêiner.
Parece funcionar no Internet Explorer e Firefox (versões mais recentes). Não verifiquei com outros navegadores
E, claro, o CSS:
fonte
Esta é a solução mais limpa que encontrei (Internet Explorer 9+) e adiciona uma correção para o problema "desativado por 0,5 pixel", usando
transform-style
outras respostas omitidas.Fonte: Alinhar vertical qualquer coisa com apenas 3 linhas de CSS
fonte
Uma solução simples para um elemento de não conhecer valores:
HTML
CSS
fonte
De acordo com a resposta de Adam Tomat, foi preparado um exemplo do JSFiddle para alinhar o texto em div :
usando display: flex em CSS:
com outro exemplo e algumas explicações em uma postagem no blog .
fonte
Margem automática em um item de grade.
Da mesma forma que o Flexbox, a aplicação automática de margem em um item de grade o centraliza nos dois eixos:
fonte
O Flexbox funcionou perfeitamente para mim, centralizando vários elementos dentro da divisão pai na horizontal e na vertical.
Código HTML:
Código CSS: o
código abaixo empilha todos os elementos dentro de parent-div em uma coluna, centralizando os elementos horizontalmente e verticalmente. Eu usei o child-div para manter os dois elementos Anchor na mesma linha (linha). Sem div-filho, todos os três elementos (Âncora, Âncora e Parágrafo) são empilhados na coluna do pai-div uma sobre a outra. Aqui, apenas child-div é empilhado dentro da coluna parent-div.
fonte
Usar:
Com esse truque, você pode alinhar qualquer coisa, se não quiser colocá-lo no centro, adicione "left: 0" para alinhar à esquerda.
fonte
HTML
CSS
fonte
Usando o flex, tenha cuidado com as diferenças na renderização dos navegadores.
Isso funciona bem no Chrome e no Internet Explorer:
Compare com este que funciona apenas com o Chrome:
fonte
Esta é uma outra variação do
div
em umdiv
padrão usandocalc()
em CSS.Isso funciona porque:
position:absolute
para posicionamento preciso dodiv
dentro de umdiv
div
porque nós configurá-lo para20px
.calc(50% - 10px)
para 50% - metade da altura para centralizar o interiordiv
fonte
Isso funciona bem:
HTML
Sass
Sem e com a tag da imagem
<mat-icon>
(que é uma fonte).fonte
Hmm, obviamente existem muitas maneiras de resolver isso.
Mas eu tenho um
<div>
que está posicionado absolutamenteheight:100%
(na verdade,top:0;bottom:0
e largura fixa) edisplay:table-cell
simplesmente não funcionou para centralizar o texto verticalmente. Minha solução exigia um elemento de amplitude interna, mas vejo muitas outras soluções também, então devo adicioná-lo:Meu contêiner é um
.label
e quero o número centralizado verticalmente nele. Eu fiz isso posicionando absolutamente emtop:50%
e definindoline-height:0
E o CSS é o seguinte:
Veja em ação: http://jsfiddle.net/jcward/7gMLx/
fonte
Você pode usar css
flexbox
.fonte
Usando grade CSS fez isso por mim:
fonte
Tente incorporar um elemento da tabela.
fonte
Existem vários truques para exibir o conteúdo ou uma imagem no centro de uma div. Algumas das respostas são realmente legais e também concordo plenamente com elas.
Centralização horizontal e vertical absoluta em CSS
http://www.css-jquery-design.com/2013/12/css-techniques-absolute-horizontal-and-vertical-centering-in-css/
Existem mais de 10 técnicas com exemplos . Agora cabe a você o que você preferir.
Sem dúvida,
display:table; display:table-Cell
é um truque melhor.Alguns bons truques são os seguintes:
Truque 1 - usando
display:table; display:table-cell
HTML
Código CSS
Truque 2 - Usando
display:inline-block
HTML
Código CSS
Truque 3 - Usando
position:relative;position:absolute
fonte
CSS:
Adicione esta classe ao elemento que contém as coisas que você deseja alinhar verticalmente
fonte
Se você precisar usar com a
min-height
propriedade, adicione este CSS em:fonte