CSS: Наведите один элемент, эффект для нескольких элементов?
Я ищу метод для зависания.
<div class="section">
<div class="image"><img src="myImage.jpg" /></div>
<div class="layer">Lorem Ipsum</div>
</div>
Теперь оба класса (изображение и слой) имеют границы, оба имеют разный цвет для обычного и зависания.
Есть ли способ сделать так, если я нахожу класс слоя, активен как слой, так и стиль изображения, парящий цвет границы? И наоборот?
Ответы
Ответ 1
Для этого вам не нужен 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>
Ответ 2
Это работало для меня в 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 (я не уверен, что он там будет работать).
Ответ 3
Я думаю, что лучший вариант для вас - заключить оба 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>
Ответ 4
Это не сложно, но вам нужно использовать функцию javascript onmouseover
. Pseudoscript:
<div class="section ">
<div class="image"><img src="myImage.jpg" onmouseover=".layer {border: 1px solid black;} .image {border: 1px solid black;}" /></div>
<div class="layer">Lorem Ipsum</div>
</div>
Используйте свои собственные цвета. Вы также можете ссылаться на функции javascript в команде mouseover.
Ответ 5
Для этого вам нужно использовать 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');
}
);
});
Откорректируйте значения и идентификатор элемента соответственно:)
Ответ 6
ИЛИ
.section:hover > div {
background-color: #0CF;
}
Примечание
Состояние родительского элемента может влиять только на состояние дочернего элемента
поэтому вы можете использовать:
.image:hover + .layer {
background-color: #0CF;
}
.image:hover {
background-color: #0CF;
}
но вы не можете использовать
.layer:hover + .image {
background-color: #0CF;
}