2011-08-15 2 views
8

Я создаю галерею, где, когда вы наведите указатель мыши на основное изображение, миниатюры должны стать прозрачными. Я хотел бы добиться этого с помощью чистого CSS, но я не уверен, что это возможно.Влияет на div: наведите указатель мыши на другой div

CSS:

/* should affect thumbs but not main */ 
/* obviously this code wouldn't work */ 
#main:hover, #thumbs { 
    opacity: .5; 
} 

HTML:

<div id="main"> 
    Hover over me to change #thumbs 
</div> 
<div id="thumbs"> 
    I change when you hover over #main 
</div> 

Является ли это возможно с использованием чистого CSS?

ответ

14

Конечно, просто использовать прилегающую селектор родственный:

#div1:hover + #div2 { 
    ... 
} 

Пример здесь: http://jsfiddle.net/6BfR6/94/

+2

+1 удивительный ... даже не знал, что это существовало! http://meyerweb.com/eric/articles/webrev/200007a.html – samccone

+0

Вау! Благодаря! Это абсолютно идеально! Так же, как парень выше меня, я понятия не имел, что существует. Отлично. – JacobTheDev

+0

+1 Я понятия не имел, что вы можете сделать это без Javascript. –

-1

даже если это так, он не будет работать в IE :)

я предложил бы использовать OnMouseOver событие

однако это хороший вопрос, и мне интересно, если кто-то имеет решение сделать это кросс-браузер через css

+0

Это не нужно работать в IE, я уже знаю, как написать резервную копию, но я не думаю, что я буду беспокоиться об этом. Это скорее персональный сайт. – JacobTheDev

+0

@rev: см. Решение, предоставляемое Nightfirecat. Удивительно, и он работает в IE 7 и 8 - я протестировал – mkk

+0

Вы можете сделать это только с помощью CSS. См. Мой ответ (см. Мой виджет с чистым CSS-сигналом) (http://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-a-div-is-hovered/32470900#32470900), который показывает, что вы можете изменить стиль элементов, которые (как представляется,) отображаются в DOM * до * зависания. –

0

Могут быть затронуты только дети селектора. В противном случае вам нужно будет использовать javascript.

Например:

div:hover #childDiv { 
    background: green; 
} 
-1

Я думаю, что вы будете нуждаться в некоторых JavaScript для этого.

+0

Вы можете сделать это только с помощью CSS. См. Мой ответ (см. Мой виджет с чистым CSS-сигналом) (http://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-a-div-is-hovered/32470900#32470900), который показывает, что вы можете изменить стиль элементов, которые (как представляется,) отображаются в DOM * до * зависания. –

+0

серьезно? Ликвидация после 4 лет? –

+0

Теперь это так же неправильно, как и тогда. Я только что наткнулся на ответ вчера. Я не модератор, который мог бы читать ответы по мере их публикации; просто случайный пользователь, который приземлился здесь из веб-поиска. –

-1

Нет. Вам нужно будет использовать Javascript.

+0

Вы можете сделать это только с помощью CSS. См. Мой ответ (см. Мой виджет с чистым CSS-сигналом) (http://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-a-div-is-hovered/32470900#32470900), который показывает, что вы можете изменить стиль элементов, которые (как представляется,) отображаются в DOM * до * зависания. –

0

# Div1: парения + # div2 { ... }

он отлично работает в IE 7, 8, 9 и 10. Нет необходимости в каких-либо JS или onovermouse и НЕ ТОЛЬКО могут пострадать дети селектора.

Попробуйте пример Ссылка на «Nightfirecat».

Смежные вопросы