2012-01-19 50 views
10

我正在使用jQuery滑块来调整包含段落文本的DIV的填充。随着我在所有方面均匀地增加填充,它应该强制将封闭的段落放在页面中间的更窄的列中。jQuery的CSS渲染 - 在Firefox中,而不是在Chrome中运行

这可以在Firefox中使用,但在Chrome中,段落宽度保持不变(即DIV的填充不会变窄),因此将布局推向右侧。

我在这里重新创建了这个问题:jsfiddle.net/ms3Jd。您可以在Chrome和Firefox中尝试使用它来查看区别。

关于如何强制Chrome刷新封闭段落的任何想法?

+2

看起来像WebKit的bug对我来说。 – thirtydot

+0

可能 - 但我知道有些方法可以强制(或欺骗)Chrome来刷新/重绘/重新计算页面元素,但不知道如何去做。有任何想法吗? – Mateo

回答

13

我知道有方法可以强制(或特技)Chrome浏览器 刷新/重绘/ recalcuate页面元素,但不知道如何做 呢。有任何想法吗?

从这里摘自:How can I force WebKit to redraw/repaint to propagate style changes?

sel.style.display='none'; 
sel.offsetHeight; // no need to store this anywhere, the reference is enough 
sel.style.display='block'; 

我迅速应用在这里,但你应该把它做成功能:http://jsfiddle.net/thirtydot/ms3Jd/5/

+2

jQuery插件版本:http://jsfiddle.net/thirtydot/ms3Jd/7/。可能会过度。 – thirtydot

+0

它的工作原理 - 谢谢(和其他答复者) - 你是一个天才! – Mateo

0

您可以添加溢出和float属性:

#preview > div { 
    padding: 5%; 
    overflow: auto; 
    float: left; 
} 
+0

嗯......这是进步,并让我们在那里一半。谢谢。我在jsfiddle中尝试过 - 当我们增加填充时,段落会重新计算。但是如果我们再次减少填充量,它们不会再扩大。你可以提供什么进一步的改进? – Mateo

3

我使用fadeTo迫使铬刷新。
不知道,但我想这是fadeTo上的动画
尝试该线jsfiddle

$('#preview > div').css('padding', ui.value + '%').children('p').fadeTo(1, .99).fadeTo(1, 1); 
相关问题