我有一个全屏背景图像,当我将鼠标悬停在div上时,我需要将其替换为其他图像。我是用jQuery做的 - 这个问题是一个相当重要的加载时间。
有没有办法对其进行构造,以便图像在第一个悬停时近乎瞬间出现?我的代码如下:
$("#hover-bg-2").mouseover(function() {
$("#container").css("background", "url(/assets/image-2.jpg)");
$("#container").css("-webkit-background-size", "cover");
$("#container").css("-moz-background-size", "cover");
$("#container").css("-o-background-size", "cover");
$("#container").css("background-size", "cover");
});

#container {
width: 100vw;
height: 100vh;
/* ORIGINAL IMAGE BEFORE CHANGE */
background: url(/assets/image-1.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div class="bg-hover">
<div id="hover-bg-2" style="cursor: pointer;">
<p>BG 2</p>
</div>
</div>
</div>
&#13;
答案 0 :(得分:1)
您可以在CSS3中执行此操作(大多数浏览器现在应该支持此功能)。即使javascript不行,它也将具有工作的优势。
你可以这样做:
.classToChange{
background: "oldbackground.jpg"
}
.classToHoverOver:hover .classToChange{
background: "newbackground.jpg"
}
答案 1 :(得分:0)
您可以使用鼠标事件更改容器的class
,最初加载css,只需使用class
更改容器的Jquery
例如:
$("#hover-bg-2").hover(function() {
$('#container')
.removeClass("class_default")
.addClass("other");
}, function() {
$('#container')
.removeClass("other")
.addClass("class_default");;
});
.class_default {
/* your style goes here */
background: red;
}
.other{
background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container" class="class_default">
<div class="bg-hover">
<div id="hover-bg-2" style="cursor: pointer;">
<p>BG 2</p>
</div>
</div>
答案 2 :(得分:0)
<head>
中是减少加载时间的最简单方法,无论您使用何种交换方法。
<link rel="prefetch" href="/images/big.jpeg">
我不确定为什么Safari不支持此功能,但the other browsers do。