Chrome渲染Transition时页面闪动Bug

前段时间,有同事和会员反馈使用Chrome访问淘宝首页会出现画面闪动的现象,但是我在Mac和Win下面的Chrome都无法重现这个问题,后来重装了一遍Win7下的Chrome Beta版本,终于重现了这个问题,正好研究解决下…

问题主要集中于淘宝首页吊顶以及左侧服务栏处,鼠标移过整个页面会闪动一次,Refresh和Reopen无法重现,只有当首次打开淘宝首页才会出现…

问题重现:

如果想查看此问题请访问jsfiddler

问题定位:

我的第一感觉是鼠标移动时触发了某些JS,导致页面重新加载了一遍从而出现闪动,但是使用Chrome控制台监测Network状态,发现页面闪动并不会额外发送请求,这就排除了JS的问题。再检查下这两个地方的CSS源码:

#site-nav .menu-hd b {

-webkit-transition: -webkit-transform .2s ease-in;

}

.product-main s {

-webkit-transition: all .2s ease-in-out;

}

上述两个地方都使用了CSS3的Transition属性,那是不是这个Transition导致的问题?由于Refresh和Reopen页面都无法重现,只有当首次打开淘宝首页才会出现,最便捷的办法就是使用FiddlerAuto Responder功能来在线调试代码,于是我尝试将CSS代理到本地并去除-webkit-transition: all .2s ease-in-out;属性,关闭浏览器后再次访问淘宝首页发现问题解决了,反向恢复属性后执行上述操作,Bug再次重现…看来我好像找到原因了,但是为什么是它?

寻找解决方案:

Google关键字“Chrome transition blink”和“Chrome transition bug”发现网上已经有很多人注意到这个问题,推测为Chrome在初始渲染CSS动画时产生的Bug,虽然暂时无法考证这个问题的根本原因,但是目前已知的解决方案有两条:

一些思考:

遇到一些很奇怪的Bug首先要快速定位,最常用的几种定位Bug方法无非这几种;其次要反复调试,使用Fiddler这类辅助工具往往能节约大量时间和精力;最后就是要善于描述关键问题,并提炼出关键字(最好是英文)使用Google搜索相关解决方案。

感谢:

相关链接:

转载于:https://my.oschina.net/brian_nodejs/blog/39728

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HTML过渡页面是指在网页中使用CSS3的transition属性来实现页面元素的平滑过渡效果。通过设置元素的属性变化,如颜色、大小、位置等,可以让页面元素在一定间内逐渐变化,从而实现过渡效果。这种技术可以使网页更加生动、有趣,提高用户体验。 ### 回答2: HTML的transition是一种CSS3属性,用于使元素的变化过程更加流畅和平滑。通过使用transition,我们可以为元素添加动画效果,包括改变元素的尺寸、颜色、透明度、位置等。这种过渡效果可以在CSS中定义,并在HTML中应用到需要过渡效果的元素上。 要使用transition,首先需要在CSS中定义要过渡的属性,并设置过渡的持续间、过渡的延迟间等属性。例如,我们可以使用下面的代码定义一个div元素在改变颜色的过渡效果: div { width: 100px; height: 100px; background-color: red; transition-property: background-color; transition-duration: 2s; transition-delay: 1s; } 在上述代码中,我们定义了一个div元素,它的背景颜色为红色,通过设置transition-property为background-color,表示我们要对背景颜色进行过渡效果。transition-duration表示过渡持续间为2秒,transition-delay表示过渡延迟间为1秒。 接下来,在HTML中应用CSS定义的过渡效果,只需将定义过渡效果的class应用到对应的元素上。例如,我们可以使用下面的代码将上述定义的过渡效果应用到一个div元素上: <div class="transition-effect"></div> 在上述代码中,我们将class为transition-effect的过渡效果应用到一个div元素上。这样,在div元素改变背景颜色,就会出现一个从红色到过渡效果定义的颜色过渡的平滑动画。 总而言之,HTML的transition过渡页面可以通过CSS3的transition属性来实现,给想要添加过渡动画的元素设置相关的CSS属性,然后在HTML中应用这些定义好的过渡效果即可。这样,页面就可以呈现出更加生动、有趣的交互效果。 ### 回答3: HTML transition过渡页面是指在HTML页面中通过CSS transition属性来实现页面元素的平滑过渡效果。通过定义不同的过渡属性和过渡间,可以实现元素的淡入淡出、移动、旋转、缩放等效果,从而改变元素的外观和位置。 在CSS中,通过transition属性来定义元素的过渡效果。可以设置过渡的属性、过渡的间、过渡的延迟以及过渡的速度曲线。例如,可以通过以下代码实现一个元素在1秒钟内逐渐改变透明度的过渡效果: ```css div { transition: opacity 1s; } div:hover { opacity: 0.5; } ``` 在上述代码中,当鼠标悬停在div元素上,div元素的透明度会在1秒钟内从1逐渐变为0.5,实现了一个淡出的效果。 除了透明度,transition属性还可以用于过渡其他属性,如位置、大小、颜色等。通过设置不同的过渡属性和过渡间,可以实现更复杂和多样化的过渡效果。 需要注意的是,transition属性只能应用于可动画的CSS属性。同,为了应用过渡效果,元素的状态需要发生变化,例如通过鼠标悬停或JavaScript事件来触发过渡效果。 总而言之,HTML transition过渡页面是使用CSS的transition属性来实现页面元素平滑过渡的一种方式。通过定义不同的过渡属性和过渡间,可以实现元素的多种效果,提升页面的交互性和视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值