Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Augusto

Um problema já resolvido...

Recommended Posts

Resolvi hoje um problema de um menu horizontal, cuja marcação e estilos eu fiz da forma mais simples possível:

 

<ul id="tabs">

   <li>
       <a href="#" class="current">Overview</a>
   </li>

   <li>
       <a href="#">About</a>
   </li>

</ul>

ul#tabs {
   float: left;
   margin: -27px 0 0 10px;
}

   ul#tabs li {
       display: inline;
   }

       ul#tabs li a {
           background: transparent url( 'images/tabs.png' ) no-repeat 0 -35px;
           color: #191003;
           font-weight: bold;
           float: left;
           height: 35px;
           margin-top: -10px;
           line-height: 48px;
           text-align: center;
           text-decoration: none;
           width: 129px;
       }

       ul#tabs li a:hover {
           background-position: 0 -70px;
           cursor: pointer;
       }

       ul#tabs li a.current {
           background-position: 0 0;
           line-height: 35px;
           margin-top: -4px;
       }

O problema em questão é que, para o HTML acima, a margem de -27px em ul#tabs era suficiente para fazer o dito menu posicionar-se acima da DIV pai, considerando que tal lista não poderia estar fora dessa DIV devido à um plano de fundo problemático que não vem ao caso.

 

Ocorreu que ao adicionar mais outros dois itens nessa lista, essa margem negativa se tornou insuficiente, requerendo que eu a alterasse para -45px.

 

Mas, com essa alteração, bagunçou a primeira página, com apenas dois itens, fazendo-os ficar muito para cima.

 

Como @Evandro Oliveira me disse noutro tópico que elementos com float perdem a habilidade de estender sua largura automaticamente ao máximo possível, eu adicionei, em ul#tabs, um width de valor igual à largura de quatro abas, que é o máximo que haverá em todo o site, sempre.

 

Com isso, os -45px perfeitos para quatro abas, também ficou perfeito para uma, duas ou três abas.

 

Mas por quê?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo menos pra mim não faz sentido pois o line-height está sendo aplicado no link e a margem negativa em seu avô, digamos assim.

 

Fora que o line-height foi uma das últimas adicionadas. Enquanto o básico não estava funcionando, o texto continuava lá em cima. Quando resolvi é que adicionei-o.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não vejo necessidade de float no link, visto que é filho único dos LI. Passe o "float: left" para o LI, e na UL declare display como inline-block, assim ele assumirá largura e altura de acordo com os filhos (caso não estejam previamentes declaradas). Ah, com isso não precisa declarar "display: inline" pros LI. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu André, mas não estou com problemas para criar o menu.

 

De fato eu já o criei. Podem haver tais otimizações e/ou melhores formas de fazê-lo, mas o que me intrigou foi essa questão da largura indefinida encrespar com a margem e quando definida tudo ocorrer bem.

 

Só decidi postar porque nunca havia visto nada parecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi @Bruno,

 

o teu caso parece ser uma soma de fatores.

Poste por favor, o link real, com o código completo, assim podemos analisar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.