1. 程式人生 > 其它 >CSS3動畫--木馬圖

CSS3動畫--木馬圖

技術標籤:cssjscss3前端html

前言:在學習了上一篇文章CSS3動畫之後,我們今天來做一個木馬圖來練習一下。

目錄:

一.Html

首先我們先進行具體的頁面設計,知道需要什麼元素來進行佈局:

` <div class="action">
<!--左邊的點選按鈕-->
     	<button class="left">&lt;</button>
     <!--主要的圖片-->
   		<div id="
menu-1"
class="menu menu-1">
</div> <div id="menu-2" class="menu menu-2"></div> <div id="menu-3" class="menu menu-3"></div> <!-- 右邊的點選按鈕 --> <button class="right">&gt;</button> </
div
>
`

二.CSS

我們需要對其初始的css樣式進行設計,進行修飾樣式:

<style>
 div[class^="act"] {
     width: 800px;
     height: 400px;
     margin: 100px auto;
     position: relative;
     transform-style: preserve-3d;
     perspective: 1000px;
   }
       
       button {
           width: 20px;
           height
: 100px; position: absolute; top: 50%; margin-top: -50px; } button:first-child { left: 0; } button:last-child { right: 0; } .menu { width: 400px; height: 250px; position: absolute; transition: all 0.8s; filter: blur(3px); background-size: 400px 250px; } .menu-1 { background-image: url(img/貓和老鼠2.jpg); } .menu-2 { background-image: url(img/4.jpg); } .menu-3 { background-image: url(img/貓和老鼠.jpg); } #menu-1 { transform: translateZ(-300px) translateY(50px) translateX(500px) rotateY(-50deg); } #menu-2 { transform: translateZ(-300px) translateY(50px) translateX(-100px) rotateY(50deg); } #menu-3 { transform: translateY(50px) translateX(200px); filter: blur(0); }
</style>

三.JS

主要的邏輯由JS來進行實現,大概就是換置每一個圖片的ID屬性。

<script>
       window.onload = function() {
           var menu_1 = document.querySelector("#menu-1");
           var menu_2 = document.querySelector("#menu-2");
           var menu_3 = document.querySelector("#menu-3");
           var left = document.querySelector(".left");
           var right = document.querySelector(".right");
           // 封裝左邊的事件
           var run = function() {
               const ret = menu_1.id;
               menu_1.id = menu_3.id;
               menu_3.id = menu_2.id;
               menu_2.id = ret;
           };
           // 點選左邊按鈕執行的事件
           left.addEventListener("click", run);
           // 計時器自動執行事件
           setInterval(run, 1200);
           // 點選右邊按鈕執行的事件
           right.addEventListener("click", function() {
               const ret = menu_1.id;
               menu_1.id = menu_2.id;
               menu_2.id = menu_3.id;
               menu_3.id = ret;
           });
       }
   </script>

全部程式碼如下:

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div[class^="act"] {
            width: 800px;
            height: 400px;
            margin: 100px auto;
            position: relative;
            transform-style: preserve-3d;
            perspective: 1000px;
        }
        
        button {
            width: 20px;
            height: 100px;
            position: absolute;
            top: 50%;
            margin-top: -50px;
        }
        
        button:first-child {
            left: 0;
        }
        
        button:last-child {
            right: 0;
        }
        
        .menu {
            width: 400px;
            height: 250px;
            position: absolute;
            transition: all 0.8s;
            filter: blur(3px);
            background-size: 400px 250px;
        }
        
        .menu-1 {
            background-image: url(img/貓和老鼠2.jpg);
        }
        
        .menu-2 {
            background-image: url(img/4.jpg);
        }
        
        .menu-3 {
            background-image: url(img/貓和老鼠.jpg);
        }
        
        #menu-1 {
            transform: translateZ(-300px) translateY(50px) translateX(500px) rotateY(-50deg);
        }
        
        #menu-2 {
            transform: translateZ(-300px) translateY(50px) translateX(-100px) rotateY(50deg);
        }
        
        #menu-3 {
            transform: translateY(50px) translateX(200px);
            filter: blur(0);
        }
    </style>
</head>

<body>
    <div class="action">
        <button class="left">&lt;</button>
        <div id="menu-1" class="menu menu-1"></div>
        <div id="menu-2" class="menu menu-2"></div>
        <div id="menu-3" class="menu menu-3"></div>
        <button class="right">&gt;</button>
    </div>
    <script>
        window.onload = function() {
            var menu_1 = document.querySelector("#menu-1");
            var menu_2 = document.querySelector("#menu-2");
            var menu_3 = document.querySelector("#menu-3");
            var left = document.querySelector(".left");
            var right = document.querySelector(".right");
            // 封裝左邊的事件
            var run = function() {
                const ret = menu_1.id;
                menu_1.id = menu_3.id;
                menu_3.id = menu_2.id;
                menu_2.id = ret;
            };
            // 點選左邊按鈕執行的事件
            left.addEventListener("click", run);
            // 計時器自動執行事件
            setInterval(run, 1200);
            // 點選右邊按鈕執行的事件
            right.addEventListener("click", function() {
                const ret = menu_1.id;
                menu_1.id = menu_2.id;
                menu_2.id = menu_3.id;
                menu_3.id = ret;
            });
        }
    </script>
</body>

</html>

效果圖:
在這裡插入圖片描述