CSS转换取决于样式分配的顺序
CSS transition depends on order of style assignments
为了使一个包含文本的容器在添加新文本后逐渐扩展,我使用了css transition
属性。准确地说,我固定了当前宽度,添加文本,然后释放宽度。JS代码如下:
footer.style['max-width'] = footer.offsetWidth + 'px'
footer.innerHTML += ' additional text'
footer.style['max-width'] = '500px'
用这个css为footer
:
overflow: hidden;
text-overflow: clip;
white-space: nowrap;
这不起作用。为了找到解决方法,我添加了另一行代码:
footer.style['height'] = footer.offsetHeight + 'px'
现在,由于这一行被放在max-width
的赋值之前(所以在代码段的开头(,它不起作用。但把它放在那一行之后(使它成为第二行(——确实如此。问题是为什么?处理转换的正确方法是什么?(但主要是为什么?(
Fiddle在firefox 40.0和chrome 39.0中测试:http://jsfiddle.net/53dbm6vz/
问题可能是两个footer.style['max-width']
赋值都发生在同一同步操作中。浏览器可能会完全忽略中间值。
如果将操作拆分为两部分,则可以解决此问题:
- 设置初始化宽度和
- 使用
setTimeout
触发实际分配
尝试如下:
footer.style['max-width'] = footer.offsetWidth + 'px'
window.setTimeout(function() {
footer.innerHTML += ' additional text'
footer.style['max-width'] = '500px'
}, 0)
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何在jQuery中将函数的输出分配给变量
- 为集合分配大量的模型弹药
- 按顺序添加和删除类
- onclick函数需要双击,因为类分配延迟
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript 将变量分配给警报
- Javascript-根据赋值顺序,按键合并对象数组
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- querySelector/getElementByClassName嵌套项的顺序
- 对象属性的分配顺序是否与声明顺序相同
- jQuery/CSS:将类分配给表取决于它们的顺序
- Javascript对象属性是按顺序分配的吗?
- CSS转换取决于样式分配的顺序