欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CSS3动画--木马图

程序员文章站 2022-03-19 15:49:02
...

前言:在学习了上一篇文章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>

效果图:
CSS3动画--木马图