Mantenha redimensionar o texto de empurrar os outros elementos em seu redor recipiente?

StackOverflow https://stackoverflow.com/questions/217741

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu tenho o seguinte html

          <div id="menu">
            <ul class="horizMenu">
            <li id="active"><a href="#" id="current">About</a></li>
            <li><a href="#">Archive</a></li>
            <li><a href="#">Contact</a></li>
            <li><a href="#">Item four</a></li>
            <li><a href="#">Item five</a></li>
            </ul>
        </div>

e no css Eu tenho

.horizMenu li
{
    display: inline;
    list-style-type: none;
    padding-right: 20px;
}
#menu
{


    text-align:center;
    margin-bottom:10px;
    letter-spacing:7px;
}
#menu a
{
    color:red;

}
#menu a:hover
{
    color:blue;
    font-weight:bold;
}

Tudo funciona muito bem, exceto que quando eu mouse sobre os links, a cor muda e torna-se em negrito, que é o que eu quero, mas também faz com que todos os outros elementos li para mover um pouco e depois voltar quando você rato-off. Existe uma maneira fácil de impedir que isso aconteça?

Foi útil?

Solução

Não tenho certeza que -1ed, mas a resposta de Mauro é essencialmente correto:. Você não pode trivialmente tornar um item com largura automática depender do que a largura teria sido se o interior da fonte não eram negrito

No entanto, um 'float: left;' regra também será necessário que você não pode definir a largura de um elemento inline-display. E 'em' provavelmente seria uma unidade melhor, para tornar o exigido largura dependente do tamanho da fonte nos botões.

Outras dicas

Adicionar uma largura para os elementos item da lista que é maior do que a largura em negrito dos itens, desta forma eles não vão ser empurrado para fora da linha.

#menu li
{
   width: 150px;
}

Como alternativa, você pode tentar uma fonte monoespaçada, que não vai ser afetada pela negrito / unbold em foco.

tente usar este MenuText { A linha-altura: 10px; /* como queiras */ }

e também, para definir a largura de um elemento em linha, visor utilização: inline-bloco;

float: left pode não ser tão amigável, se você usá-lo e ele mexe as coisas utilização clear: both

Eu apenas tive o mesmo problema. Uma solução que eu pensava, e pode usar a partir de agora, é usar text-shadow vez.

a:hover {
  color:blue;
  text-shadow:0px 0px 1px blue;
}

O texto vai olhar um pouco borrão embora. Se você definir o 3º parâmetro para 0, o texto não será borrão, mas vai olhar apenas um mais ousado pouco pouco.

Eu diria que este é melhor do que lidar com textos de largura dinâmica.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top