В CSS: наведите один элемент, эффект для нескольких элементов?
Я ищу метод для моей проблемы зависания.
<div class="section">
<div class="image"><img src="myImage.jpg" /></div>
<div class="layer">Lorem Ipsum</div>
</div>
теперь оба класса (изображение и слой) имеют границы, оба имеют разные цвета для нормального и наведения. Есть ли способ сделать так, если я наведу класс слоя, как слой, так и класс изображения, зависающий цвет границы активен? И наоборот?
6 ответов:
вам не нужен JavaScript для этого.
некоторые CSS сделают это. Вот пример:
<html> <style type="text/css"> .section { background:#ccc; } .layer { background:#ddd; } .section:hover img { border:2px solid #333; } .section:hover .layer { border:2px solid #F90; } </style> </head> <body> <div class="section"> <img src="myImage.jpg" /> <div class="layer">Lorem Ipsum</div> </div> </body> </html>
это работало для меня в Firefox и Chrome и IE8...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <style type="text/css"> div.section:hover div.image, div.section:hover div.layer { border: solid 1px red; } </style> </head> <body> <div class="section"> <div class="image"><img src="myImage.jpg" /></div> <div class="layer">Lorem Ipsum</div> </div> </body> </html>
... вы можете проверить это с IE6, а также (я не уверен, если он будет работать там).
Я думаю, что лучший вариант для вас-это заключить оба divs другим div. Тогда вы можете сделать это с помощью CSS следующим образом:
<html> <head> <style> div.both:hover .image { border: 1px solid blue } div.both:hover .layer { border: 1px solid blue } </style> </head> <body> <div class="section"> <div class="both"> <div class="image"><img src="myImage.jpg" /></div> <div class="layer">Lorem Ipsum</div> </div> </div> </body> </html>
вам нужно будет использовать JavaScript для этого, я думаю.
jQuery:
$(function(){ $("#innerContainer").hover( function(){ $("#innerContainer").css('border-color','#FFF'); $("#outerContainer").css('border-color','#FFF'); }, function(){ $("#innerContainer").css('border-color','#000'); $("#outerContainer").css('border-color','#000'); } ); });
отрегулируйте значения и идентификатор элемента соответственно :)
или
.section:hover > div { background-color: #0CF; }
Примечание. Состояние родительского элемента может влиять только на состояние дочернего элемента так что вы можете использовать:
.image:hover + .layer { background-color: #0CF; } .image:hover { background-color: #0CF; }
а вы не может использовать
.layer:hover + .image { background-color: #0CF; }