我有一个图像(在左上角作为主页链接),我使用 CSS :hover 在翻转时更改图像。
问题是,图像在我第一次翻转时加载需要时间。有一个临时空白空间,您会看到图像逐渐加载。这需要大约一秒钟,但很烦人。
我该如何解决这个问题,使翻转是无缝的?有没有办法预加载图像?
我有一个图像(在左上角作为主页链接),我使用 CSS :hover 在翻转时更改图像。
问题是,图像在我第一次翻转时加载需要时间。有一个临时空白空间,您会看到图像逐渐加载。这需要大约一秒钟,但很烦人。
我该如何解决这个问题,使翻转是无缝的?有没有办法预加载图像?
我能想到的有两个选择,副手:
:hover
图像隐藏div
在页面的其他位置。对于CSS Sprite,为“home”链接设置一张背景图片,然后简单地更改其在 上的位置:hover
:
#home {
background-image: url(http://example.com/spriteOne.png);
background-repeat: no-repeat;
background-position: 0 100px;
}
#home:hover {
background-position: 0 200px;
}
不过,这确实需要为具有 css-sprite 背景的元素设置高度。
#home {
background-image: url(http://example.com/bg.png);
background-repeat: no-repeat;
background-position: 0 100px;
}
#home:hover {
background-image: url(http://example.com/hoverBg.png);
}
#preload,
#preload img {
display: none;
}
<div id="preload">
<img src="http://example.com/hoverBg.png" />
</div>
我发现一个非常适合翻转的方法是使用 CSS 精灵,即使用包含图像的原始版本和翻转版本的图像。这样,两个版本同时加载,并且在它们之间进行更改只是更改background-position
样式的问题。
一种方法是使用相同的 URL 将不可见的图像添加到您的页面。因此,通过将以下内容添加到文档正文的开头,您实际上是在指示浏览器尽快加载此图像。
<IMG src="rolloverImage.png" style="display:none">
虽然此标签仍然是您文档的一部分,但由于“显示:无”设置,它不会显示甚至呈现。您甚至可以监听它的加载事件,并在加载后从 DOM 中完全删除标签,以将“垃圾”排除在文档之外。一张图片加载到内存后,每次引用同一个 URL 时都会自动重用,所以一旦将另一张图片的来源设置为同一个 URL,就会从内存中加载。
希望有帮助,科比
1. 答案: 使用CSS Sprites
2. 回答:或者创建这样的东西:
<a href="link.html">
<!-- Remove this img-tag if you don't have a 'nohover' background -->
<img alt="image" src="images/image.png" class="nohover" />
<img alt="imagehover" src="images/image.png" class="hover" />
</a>
和CSS:
img.nohover {
边框:0
}
img.hover {
边界:0;
显示:无
}
一:悬停img.hover {
显示:内联
}
一:悬停img.nohover {
显示:无
}
将图像放在样式设置为 的 div 中{ height: 0; overflow: hidden; }
,这将使浏览器预加载图像。