javascript - CSS3 过渡/转换

标签 javascript jquery css css-transitions

我正在尝试仅使用 css 为某些元素设置动画,正如您在下面的代码中看到的那样,就动画而言,一切正常,问题出在由动画元素创建的空间中。理想情况下,当元素不在 View 中时,不应有空白。在我下面的尝试中 if ( x === true )工作正常,为元素创建了额外的空间,然后元素在创建的新空间中移动,但是当 if 语句的第二部分 else执行过程反转,元素的空间消失,然后元素被动画移出 View ,同时与它下面的元素重叠。

我希望我没有在上面搞砸太多...... :(

简而言之:

1. <div class="animateX_def">不应该在页面上占用任何空间

2。 <a id="animateMe">单击,为 <div class="animateX_def"> 创建空间

3。 <div class="animateX_def">将自身动画化到为它创建的新空间中。

  1. <a id="animateMe">再次点击,<div class="animateX_def">将自身动画化出 View 。

  2. 空间<div class="animateX_def">正在带走。

我该怎么做?我的代码有什么问题?

HTML

<a id="animateMe" href="#">Click me</a>

<div class="animateX_def" style="position: absolute;">

    <div class="child_element">
        ---
    </div>
    ---
    ---

</div>

CSS

.animateX_def {
    transition:All 600ms ease-in-out;
    -webkit-transition:All 600ms ease-in-out;
    -moz-transition:All 600ms ease-in-out;
    -o-transition:All 600ms ease-in-out;

    transform: scale(0) translate(-999px);
    -webkit-transform: scale(0) translate(-999px);
    -moz-transform: scale(0) translate(-999px);
    -o-transform: scale(0) translate(-999px);
    -ms-transform: scale(0) translate(-999px);
}

.animateX {
    transform: scale(1) translate(0px);
    -webkit-transform: scale(1) translate(0px);
    -moz-transform: scale(1) translate(0px);
    -o-transform: scale(1) translate(0px);
    -ms-transform: scale(1) translate(0px);
}

Javascript

var x = true;

$ ( '#animateMe' ).click ( function ( event ) { 

        if ( x === true )
        {
                $ ( '.animateX_def' ).css ( 'position', 'static' );
                $ ( '.animateX_def' ).toggleClass ( 'animateX' );
                x = false;
        }
        else
        {

                $ ( '.animateX_def' ).toggleClass ( 'animateX' );
                $ ( '.animateX_def' ).css ( 'position', 'absolute' );
                x = true;
        }

        event.preventDefault (  );
        event.stopPropagation (  );

} );

最佳答案

使用最大高度。这不是理想的解决方案,因为“打开”状态需要静态值。

示例:http://jsfiddle.net/daaym4ck/对于 only css 解决方案,我添加了 input[type="checkbox"] 用于打开/关闭状态控制。

更新:好的,height 工作,但只有固定值,max-height 对于未知或可变高度有点灵活.只需将其设置为可能的最大值。但请记住,如果您有真实元素 height: 20px,并在样式中指定 max-height: 200pxtransition-duration: 1000ms ,您的元素在 100 毫秒 (20px/200px * 1000ms) 内达到其高度。

关于javascript - CSS3 过渡/转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270193/

相关文章:

javascript - 在不同的屏幕尺寸上重新排序 DOM 元素

html - 仅将 div 的某些部分设为可滚动

javascript - nodejs - Mongoose 不会因 Uri 损坏而引发错误

javascript - 如何使用 "input propertychange"事件捕获鼠标复制粘贴

php - CKEditor 4 内联编辑保存按钮插件

javascript - 使用 ajax 的 Formspree 联系表单不起作用

javascript - jQuery.bind() 和 jQuery.on() 有什么区别?

html - 停止 flex 元素相互堆叠

javascript - 跨多个设备保存和加载复选框状态

javascript - 如何在控制台中保留消息? (JS函数)