CSS中的链接伪类:hover可以让当鼠标悬停在链接上时改变链接的外观。然而,当我们将背景图片应用于链接,并使用:hover来改变背景图片时,有可能会出现背景图片闪烁的问题。接下来,我们给出两个示例,演示这个问题以及如何解决它。
问题示例
以下示例HTML代码中有两个链接,每个链接都有自己的背景图片,并在:hover状态下改变背景图片。但是,当鼠标移动到链接上时,背景图片会发生闪烁的问题。
<a href="#" class="link1">Link 1</a>
<a href="#" class="link2">Link 2</a>
<style>
.link1 {
background-image: url('link1.png');
width: 200px;
height: 100px;
}
.link1:hover {
background-image: url('link1-hover.png');
}
.link2 {
background-image: url('link2.png');
width: 200px;
height: 100px;
}
.link2:hover {
background-image: url('link2-hover.png');
}
</style>
解决方法
使用CSS预加载
使用CSS预加载可以缓存所有的背景图片,避免在链接hover时加载图片而导致的闪烁。可以使用以下代码:
<head>
<link rel="preload" href="link1.png" as="image">
<link rel="preload" href="link1-hover.png" as="image">
<link rel="preload" href="link2.png" as="image">
<link rel="preload" href="link2-hover.png" as="image">
</head>
<body>
<a href="#" class="link1">Link 1</a>
<a href="#" class="link2">Link 2</a>
<style>
.link1 {
background-image: url('link1.png');
width: 200px;
height: 100px;
}
.link1:hover {
background-image: url('link1-hover.png');
}
.link2 {
background-image: url('link2.png');
width: 200px;
height: 100px;
}
.link2:hover {
background-image: url('link2-hover.png');
}
</style>
</body>
在:visited伪类中使用背景图片
在:visited伪类中使用相同的背景图片可以解决这个问题,因为浏览器只需要为每个链接缓存一次背景图片。可以使用以下代码:
<a href="#" class="link1">Link 1</a>
<a href="#" class="link2">Link 2</a>
<style>
.link1 {
background-image: url('link1.png');
width: 200px;
height: 100px;
}
.link1:visited {
background-image: url('link1.png');
}
.link1:hover {
background-image: url('link1-hover.png');
}
.link2 {
background-image: url('link2.png');
width: 200px;
height: 100px;
}
.link2:visited {
background-image: url('link2.png');
}
.link2:hover {
background-image: url('link2-hover.png');
}
</style>
以上就是两种解决方案,可以根据自己的喜好选择适合自己的方法。
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)