【问题标题】:jQuery animating 2 independent div widths causing pixel jerkynessjQuery 动画 2 个独立的 div 宽度导致像素抖动
【发布时间】:2012-07-12 20:54:51
【问题描述】:

通过浮动 CSS 参数使用两个并排对齐的 div。

jQuery 同时改变它们的宽度。这引起了生涩的像素化激动。我设置了一个小提琴,但 jsfiddle 已关闭。

我们如何使每个 div 宽度同时滑动而不发生这种抖动。

<div class="container">
    <div class="div d1">DIV 1</div>
    <div class="div d2">DIV 2</div>
</div>

<div style="clear:both;"></div>
</br></br>
<input class="s1" type="button" value="shift"/>
<input class="s2" type="button" value="shift back"/>
​
$(document).ready(function(){
    $('.s1').click(function(){
        $('.d1').animate({width:100},{duration:300,queue:false});
        $('.d2').animate({width:300},{duration:300,queue:false});
    });
     $('.s2').click(function(){
        $('.d1').animate({width:100},{duration:300,queue:false});
        $('.d2').animate({width:300},{duration:300,queue:false});
    });
});​
.div { display:block; width:200px; height:90px; background:#666; colour:#FFF; float:left; }

.container { border:1px solid #000; background:#EEE; width:400px; }
input { clear:both;}

​ 这是一个将正确的 div 浮点数更改为正确的版本,因此您可以确切地看到我的意思。查看动画期间您可以在它们之间看到的白线。

http://jsfiddle.net/74zNU/1/

【问题讨论】:

  • 这是你的小提琴jsfiddle.net/74zNU 我稍微修改了 s2 动画,因为你的代码没有向后移动。我也没有看到任何奇怪的东西。你能把你看到的截图贴出来吗?
  • @barts 制作动画时,您仍然可以看到右侧边距减少了 1 或 2 个像素。
  • 确实……很奇怪。动画中的宽度或左侧位置似乎存在一些偏移问题
  • 不是,这是因为两个动画同时在每个像素的基础上运行造成的。问题是如何解决它
  • 我以为我找到了解决方案,但它再次显示右侧的像素。看起来它与 jquery 中的这个错误有关(bugs.jquery.com/ticket/7109

标签: jquery css-float width jquery-animate


【解决方案1】:

对于这个 Chrome 问题,我有两种不同的解决方案供您考虑。

参考:jsFiddle 1

这个 jsFiddle 使用你的方法和一个 workaround Chrome 浏览器的白色 元素之间的线,因为它动画同时尊重 元素必须具有唯一的尺寸。 position:absolute 的使用 Div2 与 1z-index 一起使用。投入一个 1 像素的填充,它 “覆盖”就像创可贴一样,白色的缝隙。



参考:jsFiddle 2

这个 jsFiddle 完全使用了一种不同的方法。代替 改变两个 div 的大小,只有 Div2 接收 位置 change 模拟自 overflow 属性以来的宽度大小变化 在 container div 上设置。幻觉类似于 以前的 jsFiddle 除了 div 总是保持他们的 400px 宽度。

【讨论】:

  • 都不可能。两个 div 都包含 100% 宽度的内容以及边框和其他细节,这只是一个基本示例。
  • 在您的问题中,两个 div 都包含 200 像素宽度的内容以及此答案所基于的 400 像素容器。
  • 同意并感谢您的回答,但如果就这么简单,我就不会问这个问题了。用于所有密集的目的,但你会得到一个绿色的勾号。
  • 感谢您的接受。可以肯定的是,您当前的问题确实很简单和基本。但是您的消息 cmets 不反映您正在使用的代码。话虽如此,请更新您的问题和 jsFiddle 以显示您如何使用 100% div width 遇到此 Chrome 问题,以便我可以为您提供值得支持的更新答案。干杯!
猜你喜欢
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多