Digamos que eu tenho um botão de inicialização com um ícone incrível de fonte e algum texto:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
Como faço para que o texto apareça centralizado verticalmente? O texto está alinhado com a borda inferior do ícone agora: http://jsfiddle.net/V7DLm/1/
EDIT: Eu tenho uma solução possível : http://jsfiddle.net/CLdeG/1/, mas parece um pouco hacky - introduz tag p extra, usa pull-left e display: table. Talvez alguém possa sugerir uma maneira mais fácil.
html
css
font-awesome
Paulo
fonte
fonte
Respostas:
Eu só tinha que fazer isso sozinho, você precisa fazer o contrário.
É claro que você não pode usar estilos inline e direcioná-lo com sua própria classe css. Mas isso funciona de maneira copiar e colar.
Veja aqui: Alinhamento vertical de texto e ícone no botão
Se dependesse de mim, no entanto, eu não usaria o ícone-2x. E simplesmente especifique o tamanho da fonte, como a seguir
Para um exemplo de trabalho, consulte JsFiddle
fonte
Eu uso ícones próximos ao texto em 99% das vezes, então fiz a alteração globalmente:
Adicione 3x, 4x, etc. à mesma definição necessária.
fonte
vertical-align: middle;
- talvez esteja faltando alguma coisa aqui. Por favor, explique se sim.vertical-align: middle
, elas significam se você está usandoblock
elementos . Se você estiver usandoinline
,inline-block
outable-cell
, você deve ser bom. MDN:vertical-align
Depois de considerar todas as opções sugeridas, a solução mais limpa parece definir a altura da linha e alinhar verticalmente tudo:
Veja a demonstração do Jsfiddle
CSS:
fonte
se as coisas não estiverem alinhadas, uma simples
line-height: inherit;
CSS via elementos i.fa específicos que estão tendo problemas de alinhamento pode fazer o truque com bastante simplicidade.Você também pode usar uma solução global viável, que devido a uma especificidade CSS um pouco mais alta, substituirá a regra .fa do FontAwesome que especifica
line-height: 1
sem exigir!important
a propriedade:Apenas verifique se a solução global acima não causa outros problemas em locais onde você também pode usar os ícones FontAwesome.
fonte
uma opção flexbox - fonte impressionante 4.7 e abaixo
URL hospedado do FA 4.x - https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
violino
http://jsfiddle.net/Hastig/V7DLm/180/
usando flex e fonte impressionante 5
URL hospedado do FA 5.x - https://use.fontawesome.com/releases/v5.0.8/js/all.js
violino
https://jsfiddle.net/3bpjvof2/
fonte
A maneira mais simples é definir a propriedade css de alinhamento vertical como meio
fonte
.svg-inline--fa
para FontAwesome 5fa-clock
na classe?Isto funcionou bem para mim.
fonte
Tente definir seu ícone como
height: 100%
Você não precisa fazer nada com o invólucro (por exemplo, seu botão).
Isso requer o Font Awesome 5. Não tenho certeza se funciona para versões FA anteriores.
Observe que o ícone é realmente um
svg
gráfico.Demo
fonte
Para quem usa o Bootstrap 4 é simples:
fonte
Outra opção para ajustar a altura da linha de um ícone é usar uma porcentagem da
vertical-align
propriedade. Geralmente, 0% é o fundo e 100% no topo, mas é possível usar valores negativos ou mais de cem para criar efeitos interessantes.fonte
Eu colocaria o texto em um formato para que você possa segmentá-lo separadamente. Agora, se você flutuar ambos e para a esquerda, poderá usar a altura da linha para controlar o espaçamento vertical do. A configuração para a mesma altura que (30px) o alinhará no meio. Veja aqui .
Nova marcação:
Novo CSS:
fonte
vertical-align: middle
o ícone e o texto. Dessa forma, você não está fazendo suposições sobre a altura do ícone e há menos CSS.Ao usar uma caixa flexível, o alinhamento vertical dos ícones impressionantes da fonte ao lado do texto pode ser muito difícil. Tentei margens e preenchimento, mas isso moveu todos os itens. Tentei diferentes alinhamentos flexíveis, como centro, início, linha de base, etc., sem sucesso. A maneira mais fácil e limpa de ajustar apenas o ícone foi configurá-lo com div para
position: relative; top: XX;
Isso fez o trabalho perfeitamente.fonte
Bem, essa pergunta foi feita anos atrás. Eu acho que a tecnologia mudou bastante e a compatibilidade do navegador é muito melhor. Você poderia usar o alinhamento vertical, mas eu consideraria que alguns são menos escaláveis e menos reutilizáveis. Eu recomendaria uma abordagem flexbox .
Aqui está o mesmo exemplo que o pôster original usou, mas com o flexbox. Denomina um único elemento. Se o tamanho de um botão for alterado por qualquer motivo, ele continuará centralizado na vertical e na horizontal.
Exemplo: JsFiddle
fonte
Basta definir a
vertical-align
propriedade para o elemento icon:fonte