美文网首页
css实现一个弹框的动画(animation)

css实现一个弹框的动画(animation)

作者: 苏苏哇哈哈 | 来源:发表于2021-10-18 21:44 被阅读0次

    1.实现效果

    1213.gif

    2.实现代码

    <div class="box" id="box">展示苏苏的二维码</div>
    <div class="codeBox" id="code_box">
        <div id="hide">
            <img src="./susu.png" />
        </div>
    </div>
    
    body {
        padding: 0;
        margin: 0;
        display: flex;
        height: 100vh;
        justify-content: center;
        align-items: center;
        background-color: #222;
        min-width: 1200px;
    }
    
    .box {
        width: 199px;
        text-align: center;
        border: 1px solid #DCDCDC;
        background: no-repeat center center;
        background-color: rgba(204, 217, 220, .1);
        background-size: 45px;
        transition: all .3s;
        cursor: pointer;
        overflow: hidden;
        height: 28px;
        line-height: 28px;
        opacity: .5;
        border-radius: 14px;
        color: #fff;
    }
    
    .box:hover {
        border: 1px solid #008000;
        background-color: rgba(177, 211, 220, 0.5);
    }
    
    @keyframes show {
        0% {
            transform: rotateX(90deg);
        }
    
        8% {
            opacity: 1;
            transform: rotateX(-60deg);
        }
    
        18% {
            opacity: 1;
            transform: rotateX(40deg);
        }
    
        34% {
            opacity: 1;
            transform: rotateX(-28deg);
        }
    
        44% {
            opacity: 1;
            transform: rotateX(18deg);
        }
    
        58% {
            opacity: 1;
            transform: rotateX(-12deg);
        }
    
        72% {
            opacity: 1;
            transform: rotateX(9deg);
        }
    
        88% {
            opacity: 1;
            transform: rotateX(-5deg);
        }
    
        96% {
            opacity: 1;
            transform: rotateX(2deg);
        }
    
        100% {
            opacity: 1;
        }
    }
    
    .codeBox {
        z-index: 1;
        display: none;
        perspective: 400px;
        position: absolute;
        margin: auto;
        width: 200px;
        height: 200px;
    }
    
    .codeBox div {
        cursor: pointer;
        background: #fff no-repeat center center;
        background-size: 190px;
        border-radius: 6px;
        box-shadow: 0 2px 7px rgb(0 0 0 / 30%);
        opacity: 0;
        transition: all 1s ease-in-out;
        transform-style: preserve-3d;
        transform-origin: center center;
        overflow: hidden;
        opacity: 1;
        -webkit-animation: show 3s ease-in-out 0s 1 normal forwards;
    }
    
    img {
        width: 100%;
        height: 100%;
    }
    
    .hide {
        -webkit-animation: hide .5s ease-in-out 0s 1 normal forwards;
    }
    
    @keyframes hide {
    
        20%,
        50% {
            transform: scale(1.08, 1.08);
            opacity: 1;
        }
    
        100% {
            opacity: 0;
            transform: rotateZ(40deg) scale(0.6);
        }
    }
    
    let btn = document.getElementById('box');
    let hbtn = document.getElementById('hide');
    btn.onclick = function() {
        document.getElementById('code_box').classList.remove('hide');
        document.getElementById('code_box').style.display = "block";
    }
    
    hbtn.onclick = function() {
        document.getElementById('code_box').classList.add('hide');
        setTimeout(() => {
            document.getElementById('code_box').style.display = "none";
        }, 500)
    }
    

    3.完整代码

    苏苏的codepen

    相关文章

      网友评论

          本文标题:css实现一个弹框的动画(animation)

          本文链接:https://www.haomeiwen.com/subject/grfooltx.html