Javascript 如何在动态设置(超时内)时使列表项尊重ul填充权限

Javascript 如何在动态设置(超时内)时使列表项尊重ul填充权限,javascript,html,css,html-lists,settimeout,Javascript,Html,Css,Html Lists,Settimeout,我面临的问题是,在setTimeout中运行的代码中,试图设置元素的padding right属性时,其中的li元素没有正确调整大小。 当我不在setTimeout内时,该问题不会发生,或者至少很少发生 有人能确认这是一个webkit错误或指向一个解决方案吗 我能够在Chrome和Safari中复制它 我已经创建了3个场景,请使用Chrome和Safari进行测试: ul在静态css中有正确的填充-显然有效 js代码中设置了ul和padding right,但不在setTimeout内-大多数情

我面临的问题是,在setTimeout中运行的代码中,试图设置元素的padding right属性时,其中的li元素没有正确调整大小。 当我不在setTimeout内时,该问题不会发生,或者至少很少发生

有人能确认这是一个webkit错误或指向一个解决方案吗

我能够在Chrome和Safari中复制它

我已经创建了3个场景,请使用Chrome和Safari进行测试:

ul在静态css中有正确的填充-显然有效 js代码中设置了ul和padding right,但不在setTimeout内-大多数情况下都有效请参见jsbin.com/ekazow/1/edit ul在js代码中设置了右填充,在setTimeout内-工作不正常 设置了右侧填充,但未正确重新绘制li元素。浏览器调整大小或几次调整大小可修复此问题

基本上代码是

setTimeout(function(){

    document.getElementById('container').style.paddingRight = '20px';

}, 2000);

这条规则的问题在于:

li {
   width: 100%;
}

它不在第一次工作测试中。拆下它,它应该可以正常工作。您可能还需要在li上设置display:block。

在safari 5.1中遇到同样的问题,但在IE9和FF16中工作是的,任何基于webkit的浏览器似乎都存在此问题。使用div而不是ul和li元素的行为完全相同。已尝试使用requestAnimationFrame API,但问题仍然存在。异步DOM更新似乎有问题。我在webkit bugtracker中填充了一个bug。你测试过吗?这绝对不是问题所在。