Прежде всего, я предполагаю, что это слишком сложно для CSS3, но если где-то есть какое-то решение, я хотел бы пойти с этим вместо этого.
HTML-код довольно прост.
<div class="parent">
<div class="child">
Text Block 1
</div>
</div>
<div class="parent">
<div class="child">
Text Block 2
</div>
</div>
Дочерний div установлен для отображения: нет; по умолчанию, но затем меняется на display: block; когда мышь находится над родительским div. Проблема в том, что эта разметка появляется в нескольких местах на моем сайте, и я хочу, чтобы дочерний элемент отображался только в том случае, если указатель мыши находится над его родителем, а не в том случае, если указатель мыши находится над любым другим родителем (все они имеют один и тот же класс). имя и без идентификаторов).
Я пытался использовать $(this)
и .children()
безрезультатно.
$('.parent').hover(function(){
$(this).children('.child').css("display","block");
}, function() {
$(this).children('.child').css("display","none");
});
источник
:hover
является одним из «Динамических псевдоклассов», определенных CSS2 ( вот спецификация ). Вот быстрый пример: http://jsfiddle.net/5FLr4/ . меня устраивает..parent:not(:hover) .child { display: none; }
кажется, работает хорошо для меня, хотя я, конечно, не беспокоюсь о IE6. Но таким образом я могу использовать его для элементов, которые я не хочу иметь единообразноеdisplay
свойство.Не нужно использовать JavaScript или jquery, достаточно CSS:
СМОТРЕТЬ ДЕМО
источник
Использование
toggleClass()
.где
color
класс. Вы можете стилизовать класс так, как вам нравится, для достижения желаемого поведения. Пример демонстрирует, как класс добавляется и удаляется при входе и выходе мыши.Проверьте рабочий пример здесь .
источник
источник
Ответ Стивена правильный, но вот моя адаптация его ответа:
HTML
CSS
JQuery
Вы можете увидеть этот пример на jsFiddle .
источник
У меня есть то, что я считаю лучшим решением, так как оно масштабируется до большего количества уровней, сколько нужно, а не только до двух или трех.
Я использую границы, но это также может быть сделано с любым стилем, как фоновый цвет.
С границей идея состоит в том, чтобы:
Вы можете проверить это по адресу: http://jsbin.com/ubiyo3/13
И вот код:
источник
Если вы используете стили Twitter Bootstrap и базовый JS для выпадающего меню:
Это недостающий кусок для создания липких выпадающих меню (которые не раздражают)
источник
Не уверен, есть ли ужасные причины для этого или нет, но мне кажется, что он работает со мной в последней версии Chrome / Firefox без каких-либо видимых проблем с производительностью при большом количестве элементов на странице.
Но в этом случае все, что вам нужно, - это применить
parent-hover-show
к элементу, а об остальном позаботиться, и вы можете оставить любой тип отображения по умолчанию, который вы хотите, не всегда являясь «блоком» или создавая несколько классов для каждого типа.источник
Чтобы изменить его с CSS, вам даже не нужно устанавливать дочерний класс
источник