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搜索相关解决方案。

感谢:

相关链接:

ZT FROM HP:http://ued.taobao.com/blog/2012/01/06/chrome%E6%B8%B2%E6%9F%93transition%E6%97%B6%E9%A1%B5%E9%9D%A2%E9%97%AA%E5%8A%A8bug/

时间: 2024-11-09 18:02:24

Chrome渲染Transition时页面闪动Bug的相关文章

safari渲染Transition动画不流畅问题

用css3的transition过渡来做页面动画的时候,发现在chrome和ff流畅,在safari 不流畅: 度娘找到了淘宝UED的一个类似解决方案,动画就流畅了. 测试环境: win7 32bit; safari; 问题代码: #site-nav .menu-hd b { … -webkit-transition: -webkit-transform .2s ease-in; … } .product-main s { … -webkit-transition: all .2s ease-i

【转】链接伪类(:hover)CSS背景图片有闪动BUG

来源:http://www.css88.com/archives/744 ------------------------------------------------------------------------------------------------- IE6下链接伪类(:hover)CSS背景图片有闪动BUG,主要原因ie会再一次请求这张图片,或者说图片没被缓存. 例如: CSS代码 a:hover{background:url(imagepath)} 常用的解决方案: 在页面

Serverless 实战——使用 Rendertron 搭建 Headless Chrome 渲染

为什么需要 Rendertron? 传统的 Web 页面,通常是服务端渲染的,而随着 SPA(Single-Page Application) 尤其是 React.Vue.Angular 为代表的前端框架的流行,越来越多的 Web App 使用的是客户端渲染. 使用客户端渲染有着诸多优势,比如节省后端资源.局部刷新.前后端分离等等,但也带来了一些挑战,比如本文要解决的 SEO 问题. 对于服务端渲染的页面,服务端可以直接将内容通过 HTML 的形式返回,搜索引擎爬虫可以轻易的获取页面内容,而对于

关于 Chrome 浏览器中 onresize 事件的 Bug

我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 bug 吧,估计他们的工程师认为浏览器打开时也算窗口发生了变化.解决问题之前我搜索了相关内容,确实有关于 Chrome 的 onresize 的问题,但跟我遇到的问题还有很大不同.我把这个问题抽象为以下函数: function init() { alert('a'); window.onresiz

td设置虚线dotted框,在chrome下有时会出现实线bug

chrome浏览器中,为td设置border:1px dotted #eee;时,有些地方会出现实线. 这是因为Chrome在border合并时,有点碰运气的感觉,两条虚线正好交错在一起时会合成一条实线.Demo中table的宽度是886px,增加1px或者减少1px都可以解决这个问题.有兴趣的童鞋还可以试着不断增加宽度,观察border交错时的变化,你会发现它6个像素为一个周期. 可参考 Chrome下的Border合并BUGhttp://ued.ctrip.com/blog/?p=2484

Chrome渲染分析之Timeline工具的使用

Posted on 2014年6月27日 by admin | Leave a reply 概述 这个工具真的很强大,Timeline工具栏提供了对于在装载你的Web应用的过程中,时间花费情况的概览,这些应用包括处理DOM事件, 页面布局渲染或者向屏幕绘制元素.Timeline可以通过事件,框架,和实时内存用量3个方面的数据来监测网页,通过这些数据,我们可以方便的找出页面中存在问题的地方. Timeline面板 打开chrome开发者工具,切换到Timeline选项卡,界面如下: 功能很多,非常

利用Chrome插件向指定页面植入js,劫持 XSS

资源来自:http://www.2cto.com/Article/201307/225986.html 首页 > 安全 > 网站安全 > 正文 利用Chrome插件向指定页面植入js,劫持 XSS,一些猥琐的想法与实践 2013-07-08      0个评论       收藏    我要投稿 0x00 Chrome插件--------------------------这个想法是昨天看到@紫梦芊 的帖子想起来的.想法如下:Chrome插件是可以通过manifest.json的控制,向指

Bootstrap浏览器支持下载页面 判断当前IE浏览器小于等于IE8时页面自动跳转到浏览器支持下载页面

Bootstrap浏览器支持下载HTML页面 : <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta chars

通过chrome浏览器调试手机页面(IOS和Android)

开发PC页面的时候使用chrome浏览器的开发者工具,可以很容易的捕获到页面的dom元素,并且可以修改样式,方便调试,但是手机上却很麻烦,因为手机上没有办法直接打开开发者工具查看元素.其实可以通过将设备连接到PC,使用PC的开发者工具检测 一.针对android设备 1.在android设备上开始开发者模式 2.将设备连接到PC,在chrome浏览器地址栏输入:chrome://inspect/#devices 3.在手机上打开网页的时候,chrome就会检测到网页,可以直接调试 二.针对IOS