我有一个带有一些img链接的页面。当图像处于hover
状态时,我会更改页面内div的背景。 javascript代码如下:
function hover(element) {
if(element.id=="first"){
element.setAttribute('src', './images/first_active_2.png');
back.style.backgroundImage = 'url(./images/1.png)';
text.src = './images/text_first_active.png';
}
if(element.id=="second"){
element.setAttribute('src', './images/second_active_2.png');
back.style.backgroundImage = 'url(./images/3.png)';
text.src = './images/text_second_active.png';
}
}
function unhover(element) {
if(element.id=="first"){
element.setAttribute('src', './images/first_inactive_2.png');
text.src = './images/text_first_inactive.png';
}
if(element.id=="second"){
element.setAttribute('src', './images/second_inactive_2.png');
text.src = './images/text_second_inactive.png';
}
}
和html代码:
<div id="back"/>
<a>
<img id="first" src="images/first_inactive_2.png" onmouseover="hover(this);" onmouseout="unhover(this);" />
</a>
<a>
<img id="second" src="images/second_inactive_2.png" onmouseover="hover(this);" onmouseout="unhover(this);"/>
</a>
一切都很好,但事实上有时候背景图片会闪烁。我想我必须预先加上两个images/1.png
,images/2.png
,但我不知道如何正确地做到这一点。是否有正确的方法让图像不闪烁?
答案 0 :(得分:2)
var img = new Image(); img.src =&#34; /path/to/image.jpg" ;;
这可能是在window.load或dom:ready事件的某处,这样你可以预加载图像。
答案 1 :(得分:0)
var tmpNewImg = new Image();
tmpNewImg.onload = function () {
var yourDiv = document.getElementById('picture');
yourDiv.style.backgroundImage = 'url(' + this.src + ')';
}
tmpNewImg.src = '/your/background/image.jpg';
这有助于解决我的问题。但在这种情况下我没有测试代码。
答案 2 :(得分:0)
在:hover
伪元素中使用css :after
和preload悬停图片:
div {
background: url(http://keddr.com/wp-content/uploads/2013/12/google.png);
width:300px;
height: 200px;
background-size: 100% 100%;
}
div:after {
content: '';
font: 0/0 a;
}
div:hover,
div:after {
background-image: url(http://hi-news.ru/wp-content/uploads/2013/11/0111.jpg);
}