CSS 缩放比例打破

标签 css animation transform css-animations

我有一个 DIV,我想在单击按钮时缩小该 DIV,并在单击 DIV 本身时缩小。我的比例部分工作得很好,但是当我尝试删除 fadeIn 类时,当我扩展动画时 fadeOut 会中断。

Here is my fiddle

HTML

<button id="myBtn">Click Me</button>
<div id="animateBox" class="box"><div>

CSS

.box {
    width: 200px;
    height: 200px;
    background-color:red;
    visibility: hidden;
    border-radius: 200px;
}
.fadeIn {
    animation-name: fadeIn;
    -webkit-animation-name: fadeIn;
    animation-duration: 0.25s;
    -webkit-animation-duration: 0.25s;
    animation-timing-function: ease-in-out;
    -webkit-animation-timing-function: ease-in-out;
    visibility: visible !important;
}
@keyframes fadeIn {
    0% {
        transform: scale(0);
        opacity: 0.0;
    }
    /* 60% {
        transform: scale(0.4);  
    }
    80% {
        transform: scale(0.8);
        opacity: 1; 
    }    */
    100% {
        transform: scale(1);
        opacity: 1;
    }
}
@-webkit-keyframes fadeIn {
    0% {
        -webkit-transform: scale(0);
        opacity: 0.0;
    }
    /* 60% {
        -webkit-transform: scale(0.4);
    }
    80% {
        -webkit-transform: scale(0.8);
        opacity: 1; 
    } */
    100% {
        -webkit-transform: scale(1);
        opacity: 1;
    }
}
.fadeOut {
    animation-name: fadeOut;
    -webkit-animation-name: fadeOut;
    animation-duration: 0.25s;
    -webkit-animation-duration: 0.25s;
    animation-timing-function: ease-in-out;
    -webkit-animation-timing-function: ease-in-out;
    visibility: hidden;
}
@keyframes fadeOut {
    0% {
        transform: scale(1);
        opacity: 1;
    }
    100% {
        transform: scale(0);
        opacity: 0;
    }
}
@-webkit-keyframes fadeOut {
    0% {
        -webkit-transform: scale(1);
        opacity: 1;
    }
    100% {
        -webkit-transform: scale(0);
        opacity: 0;
    }
}

jQuery

$('#myBtn').click(function() {
    $('#animateBox').addClass("fadeIn");
});

$('#animateBox').click(function() {
    $( this ).addClass( "fadeOut" );
    $( this ).removeClass( "fadeIn" );  
});

最佳答案

刚刚修改了纳西尔的答案并引用了这个answer使动画流畅。

CSS

.box {
    width: 200px;
    height: 200px;
    background-color:red;
    visibility: hidden;
    border-radius: 200px;
}
.fadeIn {
    animation-name: fadeIn;
    -webkit-animation-name: fadeIn;
    animation-duration: 0.25s;
    -webkit-animation-duration: 0.25s;
    animation-timing-function: ease-in-out;
    -webkit-animation-timing-function: ease-in-out;
    visibility: visible !important;
}
@keyframes fadeIn {
    0% {
        transform: scale(0);
        opacity: 0.0;
    }

    100% {
        transform: scale(1);
        opacity: 1;
    }
}
@-webkit-keyframes fadeIn {
    0% {
        -webkit-transform: scale(0);
        opacity: 0.0;
    }
    /* 60% {
        -webkit-transform: scale(0.4);
    }
    80% {
        -webkit-transform: scale(0.8);
        opacity: 1; 
    } */
    100% {
        -webkit-transform: scale(1);
        opacity: 1;
    }
}
.fadeOut {
    animation-name: fadeOut;
    -webkit-animation-name: fadeOut;
    animation-duration: 0.25s;
    -webkit-animation-duration: 0.25s;
    animation-timing-function: ease-in-out;
    -webkit-animation-timing-function: ease-in-out;
    -webkit-animation-fill-mode:forwards;
    /*Chrome 16+, Safari 4+*/
    -moz-animation-fill-mode:forwards;
    /*FF 5+*/
    -o-animation-fill-mode:forwards;
    /*Not implemented yet*/
    -ms-animation-fill-mode:forwards;
    /*IE 10+*/
    animation-fill-mode:forwards;
    /*when the spec is finished*/
    visibility:visible;
}
@keyframes fadeOut {
    0% {
        transform: scale(1);
    }
    100% {
        transform: scale(0.5);
    }
}
@-webkit-keyframes fadeOut {
    0% {
        -webkit-transform: scale(1);
    }
    100% {
        -webkit-transform: scale(0);
    }
}

<强> Working Fiddle

关于CSS 缩放比例打破,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062130/

相关文章:

html - 我需要 Logo 与导航栏重叠

javascript - 使用背景覆盖 react 添加/删除和切换侧边栏类

jquery - 如何在 FF3 中刷新 div 后重置持久滚动条位置?

javascript - 使用 jquery 错开 css 动画

javascript - 在首次加载时运行快速 Javascript 基准测试

html - 如何在左对齐的按钮中添加图标并使其为黑色或白色?

javascript - 在 react 中改变值时使文本变成白色? react Spring ?

javascript - 非 webkit 浏览器,旋转 div 中相邻图像之间的间隙

transform - 形状更改器(mutator)和接口(interface) OpenCV3.0

c++ - 如何在DirectShow中水平镜像视频?