Chyba a:hover v IE – jednoduché řešení
Při tvorbě horizontálního menu se často používá seznam odkazů, kdy se jednotlivé položky seznamu nechají „plavat“. Ovšem pozor na to!
Mějme jednoduché menu jako seznam:
<ul>
<li><a href="#">odkaz</a></li>
<li><a href="#">odkaz</a></li>
<li><a href="#">odkaz</a></li>
<li><a href="#">odkaz</a></li>
</ul>
Menu naformátujeme tímto stylopisem:
li{ float: left; display: inline; }
a{ display: block; padding: 20px; margin: 0 5px; background: #ccc; }
a:hover{ background: #999; }
Nebo se podívejte na připravený příklad.
A máme jednoduché horizontální menu. Zkuste si ho otestovat v IE 6, 5.5 nebo 5. Jak vidíte, hover efekt se aktivuje až po najetí na text odkazu, nikoli po najetí kamkoli na oblast odkazu. Jinými slovy: IE sice padding odkazu vykreslí, ale z nějakých důvodů ho nechápe jako jeho součást.
Jak na to?
Jednoduše. Upravíme stylopis (místo položky seznamu necháme „plavat“ samotný odkaz):
li{ display: inline; }
a{ float: left; display: block; padding: 20px; margin: 0 5px; background: #ccc; }
a:hover{ background: #999; }
A vidíme, že už je vše v pořádku.
Je možné, že jsem objevil Ameriku, ale snad řešení nikoho neurazí a poslouží zadost.