CSS3動畫--木馬圖
阿新 • • 發佈:2020-12-17
前言:在學習了上一篇文章CSS3動畫之後,我們今天來做一個木馬圖來練習一下。
目錄:
一.Html
首先我們先進行具體的頁面設計,知道需要什麼元素來進行佈局:
` <div class="action"> <!--左邊的點選按鈕--> <button class="left"><</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">></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"><</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">></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>
效果圖: