css hover状态图片卡闪

发布于 2022-09-12 23:24:57 字数 331 浏览 11 评论 0

注意不是IE浏览器,chrome内核下元素的hover状态触发时会卡闪
代码如下:

<body>
   <a href=""></a>
</body>

a{
   background:url("img");
}
a:hover{
   background:url("img_hover");
}

初次进入页面时就会有一定概率卡闪,个人猜测是与网速有关,hover触发时新图片是从服务器获取,但hover已经触发,原图消失hover图还未请求到就会卡闪
不知道有啥解决办法,现在已经不适用雪碧图了,原图和hover图都是分开的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

素衣风尘叹 2022-09-19 23:24:57

你可以参考下这个利用link的preload能让浏览器尽快的加载图片,而不是等到hover的时候才去加载,至于会闪,我猜是因为你这个元素hover前后的大小变了导致不停的重复触发hover
https://codesandbox.io/s/swee...
image.png

娇女薄笑 2022-09-19 23:24:57

为什么会闪?因为第二张图片加载需要时间,所以会闪。

那么解决的方向就是让第二张图片不需要加载提前加载第二张图片

  1. 雪碧图,把两张图放在同一个url上面,通过坐标控制显示。
  2. 图片预加载,可以使用js。也可以给他在css上加载出来,background支持多张图片哟。

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

落墨 2022-09-19 23:24:57

没什么好的办法,就硬来,提前把图片加载好,这可以利用css或js

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

后来的我们 2022-09-19 23:24:57
a{
   background:url("img");
}
a:after{
 content:"";
 background:url("img_hover");
}
a:hover{
   background:url("img_hover");
}
2022-09-19 23:24:57

4楼正解
把两张图片放到一个雪碧图上 通过控制background-position: 来实现这个效果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文