簡體   English   中英

如果前一個未完成,我如何防止 css 轉換開始

[英]How to i prevent css transition from starting if the previous one isnt finished

所以我玩了一下 hover 剪輯路徑轉換。 https://codepen.io/caffeineggs/pen/MWajoeK Ofc 當您停止懸停該元素並將鼠標置於其 animation 路徑中時,它將進入完全癲癇模式或任何所謂的東西。 我猜是抖動。 我搜索了一下,找到了與轉換相關的 js eventListeners,但仍然不知道如何修復它。 就像有沒有辦法防止過渡開始,如果前一個沒有完成,或者我只是放棄並使其成為 onclick?

    <div class="try">
        <div class="play" id="play">
            <div class="h1">Hello</div>
        </div>
        <div class="play2">
            <div class="h2">Wow</div>
        </div>
        <div class="play3">
            <div class="h3">Epic</div>
        </div>
        <div class="play4">
            <div class="h4">Noice</div>
        </div>
    </div>

.try {
            margin-left: 600px;
            margin-top: 100px;
            font-family: geometria light;
        }
        .play,.play1,.play2,.play3,.play4,.play35{
            position: absolute;
        }
        .play {
            margin: -10px 0px 0px 50px;
            display: inline-block;
            width: 350px;
            height: 350px;
            background: #F54C2B;
            clip-path: polygon(0% 70%, 70% 0%, 100% 100%);
            transition: clip-path .3s ease-in-out;
            transition: .3s;

        }
        .h1,.h2,.h3,.h4{
            margin-top: 200px;
            margin-left: 100px;
            font-size: 32px;
            transition: .3s;
        }
        .h1,.h4 {
            color: white;
        }
        .h3,.h4 {
            margin-top: 100px;
            margin-left: 70px;
        }


        .play2 {
            margin: 50px 0px 0px 360px;
            display: inline-block;
            width: 350px;
            height: 350px;
            background: #FFD029;
            clip-path: polygon(30% 0%, 100% 70%, 0% 100%);
            transition: clip-path .3s ease-in-out;
            transition: .3s;

        }
        .play3 {
            margin: 300px 0px 0px 0px;
            display: inline-block;
            width: 350px;
            height: 350px;
            background: #F1F1F1;
            z-index: 10;
            clip-path: polygon(0% 30%, 70% 100%, 100% 0%);
            transition: clip-path .3s ease-in-out;
            transition: .3s;
        }
        .play4 {
            margin: 350px 0px 0px 300px;
            display: inline-block;
            width: 350px;
            height: 350px;
            background: #262626;
            clip-path: polygon(100% 30%, 30% 100%, 0% 0%);
            transition: clip-path .3s ease-in-out;
            transition: .3s;
        }
        .play:hover{
            background: #FFD029;
            clip-path: polygon(0% 100%, 0% 0%, 200% 200%);
            cursor: pointer;


        }
        .play2:hover {
            background: #262626;
            clip-path: polygon(0% 0%, 100% 0%, 0% 100%);
            cursor: pointer;
        }
        .play3:hover {
            background: #F54C2B;
            clip-path: polygon(0% 100%, 100% 100%, 100% 0%);
            cursor: pointer;
        }
        .play4:hover {
            background: #F1F1F1;
            clip-path: polygon(100% 0%, 100% 100%, 0% 0%);
            cursor: pointer;
        }
        .play:hover .h1 {
            color: black;
            margin-top: 250px;
            margin-left: 50px;
        }
        .play2:hover .h2 {
            margin-top: 100px;
            margin-left: 20px;
            color: white;
        }
        .play3:hover .h3 {
            margin-top: 250px;
            margin-left: 150px;
            color: white;
        }
        .play4:hover .h4 {
            margin-top: 20px;
            margin-left: 100px;
            color: black;
        }

我為兩種狀態都添加了轉換延遲,這有點幫助,但遺憾的是問題仍然存在

我剛剛使用了去抖 function,所以轉換不會每 200 毫秒觸發一次以上。 使用 javascript 通過添加 class hover 來掛鈎懸停。
rAF 和 ontransitionend 可能有一種更平滑的方式,但這是最直接的。
您還可以添加一個更寬的鈎子 onmousemove,這樣除非鼠標移動,否則不會處理新的過渡,然后檢測指針是否在形狀的邊界內。

 function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; clearTimeout(timeout); timeout = setTimeout(function() { timeout = null; if (.immediate) func,apply(context; args), }; wait). if (immediate &&,timeout) func;apply(context; args). }; } const fn = clas => { clas = '.play'+clas; const el=document.querySelector(clas). el.onmouseover = debounce(()=>{ el;classList,add('hover'); }.200). el.onmouseout = debounce(()=>{ el;classList,remove('hover'); };200), }, ['',2.3,4].forEach(fn)
 body { margin: 0; background-color: #1d1d1e; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1235' height='617.5' viewBox='0 0 1600 800'%3E%3Cpath fill='%23FF7' d='M1102.5 734.8c2.5-1.2 24.8-8.6 25.6-7.5.5.7-3.9 23.8-4.6 24.5C1123.3 752.1 1107.5 739.5 1102.5 734.8zM1226.3 229.1c0-.1-4.9-9.4-7-14.2-.1-.3-.3-1.1-.4-1.6-.1-.4-.3-.7-.6-.9-.3-.2-.6-.1-.8.1l-13.1 12.3c0 0 0 0 0 0-.2.2-.3.5-.4.8 0.3 0.7.2 1.1.1 1.4 2.5 2.1 3.6 2.4 3.7 6.5 12.1 6.5 12.2.2.3.4.5.7.6.3 0.5-.1.7-.3 0 0 1.8-2.5 2.7-3.6 1.5-1.6 3-3.2 4.6-4.7 1.2-1.2 1.6-1.4 2.1-1.6.5-.3 1.1-.5 2.5-1.9C1226.5 230.4 1226.6 229.6 1226.3 229.1zM33 770.3C33 770.3 33 770.3 33 770.3c0-.7-.5-1.2-1.2-1.2-.1 0-.3 0-.4.1-1.6.2-14.3.1-22.2 0-.3 0-.6.1-.9.4-.2.2-.4.5-.4.9 0.2 0 4.9.1 5.9l.4 13.6c0.3.2.6.4.9.2.2.5.3.8.3 0 0.1 0.1 0 7.3-.7 14.7-.9 22-.6.3 0.7-.1.9-.3.2-.2.4-.6.4-.9C32.9 783.3 32.9 776.2 33 770.3z'/%3E%3Cpath fill='%235ff' d='M171.1 383.4c1.3-2.5 14.3-22 15.6-21.6.8.3 11.5 21.2 11.5 22.1C198.1 384.2 177.9 384 171.1 383.4zM596.4 711.8c-.1-.1-6.7-8.2-9.7-12.5-.2-.3-.5-1-.7-1.5-.2-.4-.4-.7-.7-.8-.3-.1-.6 0-.8.3L574 712c0 0 0 0 0 0-.2.2-.2.5-.2.9 0.3.2.7.4.9.1.1 1.8 2.2 2.8 3.1 3.1 3.1 8.8 10.5 8.9 10.6.2.3.5.4.8.4.3 0.5-.2.6-.5 0 0 1.2-2.8 2-4.1 1.1-1.9 2.3-3.7 3.5-5.5.9-1.4 1.3-1.7 1.7-2.5-.4 1-.7 2.1-2.4C596.9 713.1 596.8 712.3 596.4 711.8zM727.5 179.9C727.5 179.9 727.5 179.9 727.5 179.9c.6.2 1.3-.2 1.4-.8 0-.1 0-.2 0-.4.2-1.4 2.8-12.6 4.5-19.5.1-.3 0-.6-.2-.8-.2-.3-.5-.4-.8-.5-.2 0-4.7-1.1-5.7-1.3l-13.4-2.7c-.3-.1-.7 0-.9.2-.2.2-.4.4-.5.6 0 0 0.1 0.1-.8 6.5-2.2 13.1-3.9 19.4-.1.3 0.6.2.9.2.3.5.4.8.5C714.8 176.9 721.7 178.5 727.5 179.9zM728.5 178.1c-.1-.1-.2-.2-.4-.2C728.3 177.9 728.4 178 728.5 178.1z'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M699.6 472.7c-1.5 0-2.8-.8-3.5-2.3-.8-1.9 0-4.2 1.9-5 3.7-1.6 6.8-4.7 8.4-8.5 1.6-3.8 1.7-8.1.2-11.9-.3-.9-.8-1.8-1.2-2.8-.8-1.7-1.8-3.7-2.3-5.9-.9-4.1-.2-8.6 2-12.8 1.7-3.1 4.1-6.1 7.6-9.1 1.6-1.4 4-1.2 5.3.4 1.4 1.6 1.2 4-.4 5.3-2.8 2.5-4.7 4.7-5.9 7-1.4 2.6-1.9 5.3-1.3 7.6.3 1.4 1 2.8 1.7 4.3.5 1.1 1 2.2 1.5 3.3 2.1 5.6 2 12-.3 17.6-2.3 5.5-6.8 10.1-12.3 12.5C700.6 472.6 700.1 472.7 699.6 472.7zM740.4 421.4c1.5-.2 3.5 3.8 1.9 1.1 1.8.4 4.2-1.4 5.3-3.7 2.1-6.4 5.6-7.6 9.5-1.2 4-.8 8.4 1.1 12.1.4.9 1 1.7 1.6 2.7 1 1.7 2.2 3.5 3 5.7 1.4 4 1.2 8.7-.6 13.2-1.4 3.4-3.5 6.6-6.8 10.1-1.5 1.6-3.9 1.7-5.5.2-1.6-1.4-1.7-3.9-.2-5.4 2.6-2.8 4.3-5.3 5.3-7.7 1.1-2.8 1.3-5.6.5-7.9-.5-1.3-1.3-2.7-2.2-4.1-.6-1-1.3-2.1-1.9-3.2-2.8-5.4-3.4-11.9-1.7-17.8 1.8-5.9 5.8-11 11.2-14C739.4 421.6 739.9 421.4 740.4 421.4zM261.3 590.9c5.7 6.8 9 15.7 9.4 22.4.5 7.3-2.4 16.4-10.2 20.4-3 1.5-6.7 2.2-11.2 2.2-7.9-.1-12.9-2.9-15.4-8.4-2.1-4.7-2.3-11.4 1.8-15.9 3.2-3.5 7.8-4.1 11.2-1.6 1.2.9 1.5 2.7.6 3.9-.9 1.2-2.7 1.5-3.9.6-1.8-1.3-3.6.6-3.8.8-2.4 2.6-2.1 7-.8 9.9 1.5 3.4 4.7 5 10.4 5.1 3.6 0 6.4-.5 8.6-1.6 4.7-2.4 7.7-8.6 7.2-15-.5-7.3-5.3-18.2-13-23.9-4.2-3.1-8.5-4.1-12.9-3.1-3.1.7-6.2 2.4-9.7 5-6.6 5.1-11.7 11.8-14.2 19-2.7 7.7-2.1 15.8 1.9 23.9.7 1.4.1 3.1-1.3 3.7-1.4.7-3.1.1-3.7-1.3-4.6-9.4-5.4-19.2-2.2-28.2 2.9-8.2 8.6-15.9 16.1-21.6 4.1-3.1 8-5.1 11.8-6 6-1.4 12 0 17.5 4C257.6 586.9 259.6 588.8 261.3 590.9z'/%3E%3Ccircle cx='1013.7' cy='153.9' r='7.1'/%3E%3Ccircle cx='1024.3' cy='132.1' r='7.1'/%3E%3Ccircle cx='1037.3' cy='148.9' r='7.1'/%3E%3Cpath d='M1508.7 297.2c-4.8-5.4-9.7-10.8-14.8-16.2 5.6-5.6 11.1-11.5 15.6-18.2 1.2-1.7.7-4.1-1-5.2-1.7-1.2-4.1-.7-5.2 1-4.2 6.2-9.1 11.6-14.5 16.9-4.8-5-9.7-10-14.7-14.9-1.5-1.5-3.9-1.5-5.3 0-1.5 1.5-1.5 3.9 0 5.3 4.9 4.8 9.7 9.8 14.5 14.8-1.1 1.1-2.3 2.2-3.5 3.2-4.1 3.8-8.4 7.8-12.4 12-1.4 1.5-1.4 3.8 0 5.3 0 0 0 0 0 0 1.5 1.4 3.9 1.4 5.3-.1 3.9-4 8.1-7.9 12.1-11.7 1.2-1.1 2.3-2.2 3.5-3.3 4.9 5.3 9.8 10.6 14.6 15.9.1.1.1.1.2.2 1.4 1.4 3.7 1.5 5.2.2C1510 301.2 1510.1 298.8 1508.7 297.2zM327.6 248.6l-.4-2.6c-1.5-11.1-2.2-23.2-2.3-37 0-5.5 0-11.5.2-18.5 0-.7 0-1.5 0-2.3 0-5 0-11.2 3.9-13.5 2.2-1.3 5.1-1 8.5.9 5.7 3.1 13.2 8.7 17.5 14.9 5.5 7.8 7.3 16.9 5 25.7-3.2 12.3-15 31-30 32.1L327.6 248.6zM332.1 179.2c-.2 0-.3 0-.4.1-.1.1-.7.5-1.1 2.7-.3 1.9-.3 4.2-.3 6.3 0.8 0 1.7 0 2.4-.2 6.9-.2 12.8-.2 18.3.1 12.5.7 23.5 2 33.7 11-2.7 20.4-18.1 23-27.8 1.9-7.2.4-14.8-4.2-21.3l0 0C347 188.1 340 183 335 180.3 333.6 179.5 332.6 179.2 332.1 179.2zM516.3 60.8c-.1 0-.2 0-.4-.1-2.4-.7-4-.9-6.7-.7-.7 0-1.3-.5-1.4-1.2 0-.7.5-1.3 1.2-1.4 3.1-.2 4.9 0 7.6.8.7.2 1.1.9.9 1.6C517.3 60.4 516.8 60.8 516.3 60.8zM506.1 70.5c-.5 0-1-.3-1.2-.8-.8-2.1-1.2-4.3-1.3-6.6 0-.7.5-1.3 1.2-1.3.7 0 1.3.5 1.3 1.2.1 2.5 3.9 1.1 5.8.2.7-.1 1.4-.8 1.6C506.4 70.5 506.2 70.5 506.1 70.5zM494.1 64.4c-.4 0-.8-.2-1-.5-.4-.6-.3-1.4.2-1.8 1.8-1.4 3.7-2.6 5.8-3.6.6-.3 1.4 0 1.7.6.3.6 0 1.4-.6 1.7-1.9.9-3.7 2-5.3 3.3C494.7 64.3 494.4 64.4 494.1 64.4zM500.5 55.3c-.5 0-.9-.3-1.2-.7-.5-1-1.2-1.9-2.4-3.4-.3-.4-.7-.9-1.1-1.4-.4-.6-.3-1.4.2-1.8.6-.4 1.4-.3 1.8.2.4.5.8 1 1.1 1.4 1.3 1.6 2.1 2.6 2.7 3.9.3.6 0 1.4-.6 1.7C500.9 55.3 500.7 55.3 500.5 55.3zM506.7 55c-.3 0-.5-.1-.8-.2-.6-.4-.7-1.2-.3-1.8 1.2-1.7 2.3-3.4 3.3-5.2.3-.6 1.1-.9 1.7-.5.6.3.9 1.1.5 1.7-1 1.9-2.2 3.8-3.5 5.6C507.4 54.8 507.1 55 506.7 55zM1029.3 382.8c-.1 0-.2 0-.4-.1-2.4-.7-4-.9-6.7-.7-.7 0-1.3-.5-1.4-1.2 0-.7.5-1.3 1.2-1.4 3.1-.2 4.9 0 7.6.8.7.2 1.1.9.9 1.6C1030.3 382.4 1029.8 382.8 1029.3 382.8zM1019.1 392.5c-.5 0-1-.3-1.2-.8-.8-2.1-1.2-4.3-1.3-6.6 0-.7.5-1.3 1.2-1.3.7 0 1.3.5 1.3 1.2.1 2.5 3.9 1.1 5.8.2.7-.1 1.4-.8 1.6C1019.4 392.5 1019.2 392.5 1019.1 392.5zM1007.1 386.4c-.4 0-.8-.2-1-.5-.4-.6-.3-1.4.2-1.8 1.8-1.4 3.7-2.6 5.8-3.6.6-.3 1.4 0 1.7.6.3.6 0 1.4-.6 1.7-1.9.9-3.7 2-5.3 3.3C1007.7 386.3 1007.4 386.4 1007.1 386.4zM1013.5 377.3c-.5 0-.9-.3-1.2-.7-.5-1-1.2-1.9-2.4-3.4-.3-.4-.7-.9-1.1-1.4-.4-.6-.3-1.4.2-1.8.6-.4 1.4-.3 1.8.2.4.5.8 1 1.1 1.4 1.3 1.6 2.1 2.6 2.7 3.9.3.6 0 1.4-.6 1.7C1013.9 377.3 1013.7 377.3 1013.5 377.3zM1019.7 377c-.3 0-.5-.1-.8-.2-.6-.4-.7-1.2-.3-1.8 1.2-1.7 2.3-3.4 3.3-5.2.3-.6 1.1-.9 1.7-.5.6.3.9 1.1.5 1.7-1 1.9-2.2 3.8-3.5 5.6C1020.4 376.8 1020.1 377 1019.7 377zM1329.7 573.4c-1.4 0-2.9-.2-4.5-.7-8.4-2.7-16.6-12.7-18.7-20-.4-1.4-.7-2.9-.9-4.4-8.1 3.3-15.5 10.6-15.4 21 0 1.5-1.2 2.7-2.7 2.8 0 0 0 0 0 0-1.5 0-2.7-1.2-2.7-2.7-.1-6.7 2.4-12.9 7-18 3.6-4 8.4-7.1 13.7-8.8.5-6.5 3.1-12.9 7.4-17.4 7-7.4 18.2-8.9 27.3-10.1l.7-.1c1.5-.2 2.9.9 3.1 2.3.2 1.5-.9 2.9-2.3 3.1l-.7.1c-8.6 1.2-18.4 2.5-24 8.4-3 3.2-5 7.7-5.7 12.4 7.9-1 17.7 1.3 24.3 5.7 4.3 2.9 7.1 7.8 7.2 12.7.2 4.3-1.7 8.3-5.2 11.1C1335.2 572.4 1332.6 573.4 1329.7 573.4zM1311 546.7c.1 1.5.4 3.8 4.4 1.7 5.8 8.7 14.2 15.1 16.3 2.8.9 5.1.5 7.2-1.1 2.7-2.1 3.2-4.8 3.1-6.6-.1-3.2-2-6.4-4.8-8.3C1326.7 547.5 1317.7 545.6 1311 546.7z'/%3E%3C/g%3E%3C/svg%3E"); background-attachment: fixed;}.try { margin-left: 600px; margin-top: 100px; font-family: geometria light; }.play,.play1,.play2,.play3,.play4,.play35{ position: absolute; }.play { margin: -10px 0px 0px 50px; display: inline-block; width: 350px; height: 350px; background: #F54C2B; clip-path: polygon(0% 70%, 70% 0%, 100% 100%); transition: clip-path.3s ease-in-out; transition: .3s; }.h1,.h2,.h3,.h4{ margin-top: 200px; margin-left: 100px; font-size: 32px; transition: .3s; }.h1,.h4 { color: white; }.h3,.h4 { margin-top: 100px; margin-left: 70px; }.play2 { margin: 50px 0px 0px 360px; display: inline-block; width: 350px; height: 350px; background: #FFD029; clip-path: polygon(30% 0%, 100% 70%, 0% 100%); transition: clip-path.3s ease-in-out; transition: .3s; }.play3 { margin: 300px 0px 0px 0px; display: inline-block; width: 350px; height: 350px; background: #F1F1F1; z-index: 10; clip-path: polygon(0% 30%, 70% 100%, 100% 0%); transition: clip-path.3s ease-in-out; transition: .3s; }.play4 { margin: 350px 0px 0px 300px; display: inline-block; width: 350px; height: 350px; background: #262626; clip-path: polygon(100% 30%, 30% 100%, 0% 0%); transition: clip-path.3s ease-in-out; transition: .3s; }.play.hover{ background: #FFD029; clip-path: polygon(0% 100%, 0% 0%, 200% 200%); cursor: pointer; }.play2.hover { background: #262626; clip-path: polygon(0% 0%, 100% 0%, 0% 100%); cursor: pointer; }.play3.hover { background: #F54C2B; clip-path: polygon(0% 100%, 100% 100%, 100% 0%); cursor: pointer; }.play4.hover { background: #F1F1F1; clip-path: polygon(100% 0%, 100% 100%, 0% 0%); cursor: pointer; }.play.hover.h1 { color: black; margin-top: 250px; margin-left: 50px; }.play2.hover.h2 { margin-top: 100px; margin-left: 20px; color: white; }.play3.hover.h3 { margin-top: 250px; margin-left: 150px; color: white; }.play4.hover.h4 { margin-top: 20px; margin-left: 100px; color: black; }
 <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div class="try"> <div class="play" id="play"> <div class="h1">Hello</div> </div> <div class="play2"> <div class="h2">Wow</div> </div> <div class="play3"> <div class="h3">Epic</div> </div> <div class="play4"> <div class="h4">Noice</div> </div> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM