Pergunta

Eu estou tentando alinhar um texto de diferentes tamanhos verticalmente, no entanto, o Firefox exibe a maneira como o texto menor acima da média.

CSS:

div.categoryLinks {
    margin: 1em 16px;
    padding: 0 4px;
    border-width: 1px 0;
    border-style: solid;
    border-color: #ece754;
    background: #f7f5b7;
    color: #a49f1c;
    text-align: center;
    font-size: 1.4em;
}
div.categoryLinks em {
    font-size: 0.6em;
    font-style: normal;
    vertical-align: middle;
}

HTML:

<div class="categoryLinks">
    <em>SECTION:</em>
    Page One &#183;
    Page Two &#183;
    <a href="link">Page Three</a>
</div>

Captura de tela: Captura de tela
(fonte: doheth.co.uk )

Atualizar :. Só para ficar claro, estou ciente de mais ou menos como funciona vertical-align, ou seja, eu já sei os equívocos comuns

De mais investigação, parece que a maneira mais simples de resolver este problema é para quebrar o texto maior em um span vertical-align e conjunto sobre isso também. Os dois filhos de .categoryLinks alinhe em relação ao outro. A menos que alguém pode mostrar uma maneira melhor, sem marcação extra?

Foi útil?

Solução

Vertical align só funciona como esperado em células da tabela ou elementos inline-bloco. Se você quiser mais informações sugiro que leia Compreender vertical-align, ou "Como (não) para verticalmente Centro de conteúdo ".

Editar: Você tem algo mais acontecendo porque que funciona para mim como é no Firefox. Eu até cair o tamanho da fonte do SECÇÃO: baixo direito e ainda está centrado. Você já usou o Firebug para ver o que outros CSS está afetando ele?

Isso funciona como é:

<html>
<head>
<style type="text/css">
div.categoryLinks {
        margin: 1em 16px;
        padding: 0 4px;
        border-width: 1px 0;
        border-style: solid;
        border-color: #ece754;
        background: #f7f5b7;
        color: #a49f1c;
        text-align: center;
        font-size: 1.4em;
}
div.categoryLinks em {
        font-size: 0.4em;
        font-style: normal;
        vertical-align: middle;
}
</style>
</head>
<body>
<div class="categoryLinks">
        <em>SECTION:</em>
        Page One &#183;
        Page Two &#183;
        <a href="link">Page Three</a>
</div>
</body>

Nota:. tamanho da fonte seção alterado para 0.4em de 0.6em original para enfatizar o ponto

Outras dicas

O Firefox está rendendo corretamente. A propriedade vertical-align está em linha, o que significa que não se aplica aos elementos de bloco como

(e

, etc). Tente adicionar display:. Em linha e ver se isso funciona

align Vertical só é suposto para aplicar aos elementos inline-bloco (eu acho que as imagens são as únicas coisas que têm esta propriedade de layout por padrão), de modo a usá-lo para posicionar um elemento inline, primeiro transformá-lo em um bloco de linha, então você pode usar margin e padding para posicioná-la semelhante à forma como você woudl um elemento de bloco normal:

div.categoryLinks {
        margin: 1em 16px;
        padding: 0 4px;
        border-width: 1px 0;
        border-style: solid;
        border-color: #ece754;
        background: #f7f5b7;
        color: #a49f1c;
        text-align: center;
        font-size: 1.4em;

}
div.categoryLinks em {
            font-size: 0.6em;

           display:inline-block;
        vertical-align:top;
        font-style: normal;
        padding: 2px 0 0 0;

}

Você tem que ajustá-lo um pouco para firefox 2 embora, mas isso é por causa de um exemplo RAER de firefox não apoiar padrões web. Por outro lado, você não poderia se preocupar com o tweak como algumas pessoas ainda usam ffx2, e é apenas uma falha de projeto muito menor.

Eu reparei isso apenas questões remoção:

 white-space: nowrap;

de div pai. Eu não sei por que, mas com esta regra acrescentou, Firefox não se aplica a:

vertical-align: middle;

Eu tive o mesmo problema. Isso funciona para mim:

 <style type="text/css">
    div.parent {
         position: relative;
    }

    /*vertical middle and horizontal center align*/
    img.child {
        bottom: 0;
        left: 0;
        margin: auto;
        position: absolute;
        right: 0;
        top: 0;
    }
    </style>

    <div class="parent">
        <img class="child"> 
    </div>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top