【发布时间】:2017-07-17 06:20:39
【问题描述】:
我有一个全屏背景图像,当我将鼠标悬停在 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>
【问题讨论】:
-
图片的尺寸是多少?
-
我要注意的一点是,没有必要在 JavaScript 中继续设置背景属性,因为只有 URL 会发生变化。我还将修改 CSS 以使用
background-image而不是background,而是单独指定其他背景属性,因为您只是换出了 URL,因此无需重复该信息,例如background-position、background-repeat等 -
图片为 1200 x 675 @lomboboo
-
@nickrigby 感谢您指出这一点 - 问题是我尝试只是换掉 URL,除非我明确重写相同的规则,否则定位不会保持不变
-
@SamYoungNY 应该,但您需要确保您指定只是更改 JavaScript 中的
background-image,例如$("#container").css("background-image", "url(/assets/image-2.jpg)");