我有一个包含四行的表,其行高我想用jQuery制作动画。我使用以下代码来缩小和隐藏行:
$("table tr").animate({ 'line-height': 'hide' }, 5000);
但是,不是开始从当前高度缩小行,而是首先使它们非常巨大,然后开始缩小。按下此小提琴中的“隐藏”按钮可查看其中的操作: http://jsfiddle.net/YzCzd/1/
它发生在Chrome和Firefox中。
这是jQuery中的错误,还是我做错了什么?
答案 0 :(得分:2)
回答我自己的问题:问题是jQuery认为line-height是无单位数字属性,因此设置其值不含单位,浏览器将其解释为em
。见https://github.com/jquery/api.jquery.com/issues/164
解决方法是强制jQuery将line-height视为普通属性:
$.cssNumber['lineHeight'] = false;
答案 1 :(得分:0)
答案 2 :(得分:0)
我用列表项修改你的代码。 结果如下:http://jsfiddle.net/CtGmH/1/
<强> CSS 强>
#table {
width: 100%;
}
#table ul {
height: 30px;
background: green;
list-style-type: none;
padding: 0;
margin: 10px;
}
#table ul.odd {
background: red;
}
table li{position: relative; }
<强> HTML 强>
<div id="table">
<ul class="odd"><li>A</li></ul>
<ul><li>B</li></ul>
<ul class="odd"><li>C</li></ul>
<ul><li>E</li></ul>
</div>
<button onclick="window.show()">Show</button>
<button onclick="window.hide()">Hide</button>
<强> JS 强>
window.show = function() {
$("ul").animate({ 'height': 30 }, 5000);
$("ul li").css({'visibility':'visible'}).animate({ 'height': 30 }, 5000);
}
window.hide = function() {
$("ul").animate({ 'height': 0 }, 5000);
$("ul li").animate({ 'height': 0 }, 5000, function(){$("ul li").css({'visibility':'hidden'});});
}