JavaScript调整大小与CSS3问题

时间:2011-04-14 01:12:13

标签: javascript html css

我正在编写一个Firefox扩展,其中一个功能是能够在界面中添加额外的“行”图标。我这样做是使用CSS和JavaScript的组合,但我是如果我在“扩展”或“合同”按钮上点击太快,它会在高度上添加一个随机数量的像素,这会产生一个奇怪的问题。我认为这是因为它从css获得了高度,并且当它正在转换时,它具有“增长”的高度,因此它使JS方程的高度错误。

CSS:

#wrapper {
    background: rgba(0,0,0,.85);
    box-shadow: 0px 0px 5px #000;
    color: #fff;
    height: 100px;
    width: 250px;
            -moz-transition: height 1s;
}

JavaScript的:

function expand() {
            var orig = document.getElementById("wrapper").clientHeight;
            if (orig < 300) {
                var changed = orig + 100;
                document.getElementById("wrapper").style.height=changed;
                // debug
                document.getElementById("print").innerHTML="height: " + changed + "px";
                // end debug
            } else {
                // do nothing
            }
        }
        function contract() {
            var orig = document.getElementById("wrapper").clientHeight;
            if (orig > 100) {
                var changed = orig - 100;
                document.getElementById("wrapper").style.height=changed;
                // debug
                document.getElementById("print").innerHTML="height: " + changed + "px";
                // end debug
            } else {
                // do nothing
            }
        }

HTML:

<div id="wrapper">
    <a onclick="expand()">Exand Div</a> - <a onclick="contract()">Contract Div</a><br />
    <span id="print">height: 100px</span>
</div>

1 个答案:

答案 0 :(得分:1)

transitionend事件可能就是解决方案。

点击后,只需停用onclick处理程序,然后在transitionend触发时重新启用。