只是建議,通常隱藏而不是銷燬,瀏覽器會感謝你。
爲什麼?當您將顯示塊設置爲無,或者無顯示時,瀏覽器必須銷燬該元素並再次渲染。當你隱藏它時,瀏覽器只需要定位它。
HTML
<a href="#"><div class="hover-img">
Show Image
<span><img src="http://placehold.it/150x150" alt="image" height="100" /> </span>
</div></a>
CSS
a .hover-img {
position:relative;
}
a .hover-img span {
position:absolute; left:-9999px; top:-9999px; z-index:9999;
}
a:hover .hover-img span {
top: 20px;
left:0;
}
看到它運行https://jsfiddle.net/b5Lvq7yL/
在另一方面,由於要使用JavaScript,以便使其更可重用性和可維護性,我建議你把這個想法和一些通用的CSS結合起來,並把它想象成你稍後可能想用於軟件其他部分(或其他公關選項)
實際上,你可以推廣。
你可以有一個觸發器選擇器「.onhover-toggle-child-class」,它從「data-target」中取出其子,並在鼠標進入和離開時切換「data-toggle」中的類。
使用你有相同的HTML,但其他的CSS類
<div>
<a href="#" class="relative onhover-toggle-child-class" data-target=".target" data-toggle="hidden shown">Show Image
<span class="absolute target hidden on-top">
<img src="http://placehold.it/150x150" alt="image" height="100" />
</span>
</a>
</div>
<div>
<a href="#" class="relative onhover-toggle-child-class" data-target=".target2" data-toggle="hidden shown">Show Image
<span class="absolute target2 on-top hidden">
<img src="http://placehold.it/150x150" alt="image" height="100" />
</span>
</a>
</div>
一些超級通用CSS。
.on-top {
z-index: 99;
}
.relative {
position: relative;
}
.absolute {
position: absolute;
}
.shown {
display: block;
}
.hidden {
display: none;
}
而且一些JavaScript(使用jQuery)
$('.onhover-toggle-child-class').on(
'mouseenter mouseleave',
function() {
var element = $(this);
var selector = element.data('target');
var child = element.find(selector);
var classes = element.data('toggle');
child.toggleClass(classes);
}
);
或者,如果你想使用拜尼亞的javascript:
var queried = document.querySelectorAll('.onhover-toggle-child-class');
var elements = Array.prototype.slice.call(queried);
var onhover = function(event) {
var element = event.srcElement || event.target;
var selector = element.getAttribute('data-target');
var classes = element.getAttribute('data-toggle').split(' ');
var childs = element.querySelectorAll(selector);
//console.log(selector, classes, childs);
childs.forEach(function(child) {
classes.forEach(function(toggleClass) {
if (child.classList.contains(toggleClass))
child.classList.remove(toggleClass);
else
child.classList.add(toggleClass);
});
});
}
elements.forEach(function(element) {
element.addEventListener('mouseenter', onhover);
element.addEventListener('mouseleave', onhover);
});
看到這兩個例子的工作:https://jsfiddle.net/kg22ajm6/
你可以創建使用不透明度的類:0和不透明度:1以使「淡入」成爲a nd「fadeOut」。 CSS通常是比原始Javascript或jQuery更好的選擇,jQuery的fadeIn和fadeOut手動動畫和CSS轉換內置在瀏覽器中。
檢查使用不透明度動畫例如:https://jsfiddle.net/Lwcbn0ae/1/
問候,
我相信這將需要太多的代碼和手動維護。它會如何? –