Webkit 浏览器中的 CSS 过渡填充故障

Posted

技术标签:

【中文标题】Webkit 浏览器中的 CSS 过渡填充故障【英文标题】:CSS transition padding glitch in webkit browsers 【发布时间】:2013-12-19 10:51:05 【问题描述】:

当我在 css 过渡中使用填充时,webkit 浏览器(safari osx、Chrome osx 和 Chrome 窗口)在每个过渡的开始和结束时都会出现小故障,导致放置在动画元素之后的元素移动 1px .

http://jsfiddle.net/QG4QV/19/

html

test test test <span class="test">Hover me</span> test test test test

CSS

.test
  color:#FFF;
  background:#000;
  padding:4px 4px 4px 30px;
  transition: padding 0.5s linear;


.test:hover
  padding:4px 30px 4px 4px;

我已经搜索并尝试了各种解决方案,但没有解决这个例子?! CSS transition glitch CSS transition effect makes image blurry / moves image 1px, in Chrome?

(充满可能解决方案的示例:http://jsfiddle.net/QG4QV/18/,但没有任何效果)

【问题讨论】:

【参考方案1】:

我不知道这个故障是否有其他解释。我猜想填充值的动画在过渡期间会导致舍入不一致,这会影响.test 元素的整体宽度。

我发现下面的 CSS 在 Chrome33 中为我修复了它。

test 
    display:inline-block;

Demo

编辑:所以看看Chrome DevTools中的元素,没有display:inline-block“Hover Me”文本本身有一个height=auto计算样式。

使用inline-block,文本具有width=60height=20 的计算样式。我认为正是这种 hard 计算样式阻止了过渡故障。

【讨论】:

遗憾的是,在 Safari 中问题仍然存在 啊,抱歉,这里没有 Safari 可供测试。稍后我会尝试另一台机器。

以上是关于Webkit 浏览器中的 CSS 过渡填充故障的主要内容,如果未能解决你的问题,请参考以下文章

CSS过渡回调

webkit 过渡在 Mozilla 和 Opera 中结束?

模仿 IE 中的 CSS3 过渡?

如何规范跨浏览器的 CSS3 过渡结束事件?

CSS 3 - 过渡前缀 - 使用哪些?

css如何实现颜色的过渡效果