0

クリック時に 3D カード フリップ アニメーションが表示されますが、トリガーに時間がかかりすぎて、その理由がわかりません。

ここで例を参照してください (下にスクロールして、任意の白黒写真をクリックしてください)。

http://www.grancomunicaciones.com/nueva/

ここに私のコードがあります:

CSS

.flip-container {
-webkit-perspective: 1000;
            -moz-perspective: 1000;
            perspective: 1000;

            border: 0px solid #ccc;
        }


            .flip-container:hover .flipper, .flip-container.hover .flipper, #flip-toggle.flip .flipper {
                -webkit-transform: rotateY(180deg);
                -moz-transform: rotateY(180deg);
                transform: rotateY(180deg);
                filter: FlipH;
                -ms-filter: "FlipH";
            }

        .flip-container, .front, .back {
            width: 320px;
            height: 427px;
        }

        .flipper {
            -webkit-transition: 0.6s;
            -webkit-transform-style: preserve-3d;

            -moz-transition: 0.6s;
            -moz-transform-style: preserve-3d;

            transition: 0.6s;
            transform-style: preserve-3d;

            position: relative;
        }

        .front, .back {
            -webkit-backface-visibility: hidden;
            -moz-backface-visibility: hidden;
            backface-visibility: hidden;

            position: absolute;
            top: 0;
            left: 0;
        }

        .front {
            background: lightgreen;
            z-index: 2;
        }

        .back {
            -webkit-transform: rotateY(180deg);
            -moz-transform: rotateY(180deg);
            transform: rotateY(180deg);
        }

        .front .name {
            font-size: 2em;
            display: inline-block;
            background: rgba(33, 33, 33, 0.9);
            color: #f8f8f8;
            font-family: Courier;
            padding: 5px 10px;
            border-radius: 5px;
            bottom: 60px;
            left: 25%;
            position: absolute;
            text-shadow: 0.1em 0.1em 0.05em #333;

            -webkit-transform: rotate(-20deg);
            -moz-transform: rotate(-20deg);
            transform: rotate(-20deg);
        }

        .back-logo {
            position: absolute;
            top: 40px;
            left: 90px;
            width: 160px;
            height: 117px;
            background: url(logo.png) 0 0 no-repeat;
        }

        .back-title {
            font-weight: bold;
            color: #00304a;
            position: absolute;
            top: 180px;
            left: 0;
            right: 0;
            text-align: center;
            text-shadow: 0.1em 0.1em 0.05em #acd7e5;
            font-family: Courier;
            font-size: 2em;
        }

        .back p {
            position: absolute;
            bottom: 40px;
            left: 0;
            right: 0;
            text-align: center;
            padding: 0 20px;
        }

        /* vertical */
        .vertical.flip-container {
            position: relative;
        }

            .vertical .back {
                -webkit-transform: rotateX(180deg);
                -moz-transform: rotateX(180deg);
                transform: rotateX(180deg);
            }

            .vertical.flip-container .flipper {
                -webkit-transform-origin: 100% 213.5px;
                -moz-transform-origin: 100% 213.5px;
                transform-origin: 100% 213.5px;
            }

            .vertical.flip-container:hover .flipper {
                -webkit-transform: rotateX(-180deg);
                -moz-transform: rotateX(-180deg);
                transform: rotateX(-180deg);
            }
    body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
}

ザ・JS

function rotate(id) {
    $("#behind").load("person.php?id="+id,function(){
    document.querySelector('#flip-toggle').classList.toggle('flip');
    });
}

HTML

<div class="flip-container" id="flip-toggle">
    <div class="flipper"> 
        <div class="front" id="front" style="background: url(imagenes/fotos.jpg); background-size:100%; overflow:hidden">
            Front content
        </div> 
        <div class="back" id="atras">
            Back content
        </div> 
    </div> 
</div> 
<div id="bot1" style="visibility:visible; position:relative; z-index:5; cursor:pointer; float:left;" onClick="rotate('1');"></div>

多分もっと簡単な方法がありますか?ポリフィルの代わりに実際の 3D 回転が必要です。これは、それをシミュレートするだけです (アニメーション中にコンテンツを表示できるようにする必要があります)。

あなたの助けは大歓迎です、ありがとう!

4

2 に答える 2

0

ロード完了時にトグル関数を呼び出しているため、遅延が発生する可能性があります。

「バック カード」要素があまりないので、それらをプリロードして遅延を完全に回避することをお勧めします。

于 2013-10-24T18:29:49.923 に答える
0

ほんの少しの HTML が必要なときに、すべてのアセット (javascript と CSS) を含むページ全体を読み込んでいます。

アニメーション自体はそれほど時間はかかりませんが、時間がかかるのはリクエストですperson.php(私のブラウザでは、person.php がすべてのアセットとともに読み込まれるのに約 1.7 秒かかりました)。

余談ですが、なぜjQueryと をdocument.querySelector一緒に使用しているのですか? そのようなものは、一緒にいるという目的を無効jQueryにします。

読み込みたいのは HTML だけで、すべてのアセットではない可能性があります。person.phpからアセットを削除できれば、はるかに高速になります(私の推測では約10倍です)

于 2013-10-24T18:35:19.913 に答える