Primeiro de tudo, estou assumindo que isso é muito complexo para CSS3, mas se houver uma solução em algum lugar, eu adoraria ir com isso.
O HTML é bastante direto.
<div class="parent">
<div class="child">
Text Block 1
</div>
</div>
<div class="parent">
<div class="child">
Text Block 2
</div>
</div>
A div filho está configurada para exibir: none; por padrão, mas depois muda para display: block; quando o mouse está sobre o div principal. O problema é que essa marcação aparece em vários lugares do meu site, e eu só quero que o filho seja exibido se o mouse estiver sobre o pai, e não se o mouse estiver sobre qualquer um dos outros pais (todos têm a mesma classe nome e sem IDs).
Eu tentei usar $(this)
e .children()
sem sucesso.
$('.parent').hover(function(){
$(this).children('.child').css("display","block");
}, function() {
$(this).children('.child').css("display","none");
});
fonte
:hover
é uma das "pseudo-classes dinâmicas" definidas pelo CSS2 ( aqui está a especificação ). Aqui está um exemplo rápido: http://jsfiddle.net/5FLr4/ . funciona para mim..parent:not(:hover) .child { display: none; }
parece funcionar bem para mim, embora eu certamente não esteja preocupado com o IE6. Mas dessa maneira eu posso usá-lo em elementos que não quero ter umadisplay
propriedade uniforme .Não há necessidade de usar JavaScript ou jquery, o CSS é suficiente:
VER DEMO
fonte
Use
toggleClass()
.onde
color
está a turma Você pode estilizar a classe como quiser para alcançar o comportamento desejado. O exemplo demonstra como a classe é adicionada e removida ao entrar e sair do mouse.Confira o exemplo de trabalho aqui .
fonte
fonte
A resposta de Stephen está correta, mas aqui está minha adaptação de sua resposta:
HTML
CSS
jQuery
Você pode ver este exemplo trabalhando em jsFiddle .
fonte
Eu tenho o que eu acho que é uma solução melhor, pois é escalável para mais níveis, quantos quiser, não apenas dois ou três.
Uso bordas, mas isso também pode ser feito com qualquer estilo desejado, como a cor de fundo.
Com a fronteira, a idéia é:
Você pode testá-lo em: http://jsbin.com/ubiyo3/13
E aqui está o código:
fonte
Se você estiver usando o estilo de inicialização do Twitter e o JS base em um menu suspenso:
Esta é a peça que falta para criar listas suspensas (que não são irritantes)
fonte
Não tenho certeza se existem motivos terríveis para fazer isso ou não, mas parece funcionar comigo na versão mais recente do Chrome / Firefox, sem problemas visíveis de desempenho, com muitos elementos na página.
Porém, dessa forma, tudo o que você precisa é aplicar
parent-hover-show
a um elemento e o restante é resolvido, e você pode manter o tipo de exibição padrão que desejar, sem que ele sempre seja "bloco" ou crie várias classes para cada tipo.fonte
Para alterá-lo de css, você nem precisa definir a classe filho
fonte