<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>盖房子</title>
<style>
@keyframes diaoluo {
from {
opacity: 1;
margin-top: 0;
transform: rotate(0);
}
to {
opacity: 0;
margin-top: 100px;
transform: rotate(720deg);
}
}
* {
margin: 0;
padding: 0;
list-style: none;
}
.wrap {
width: 800px;
height: 500px;
border: 1px solid red;
margin: 0 auto;
position: relative;
}
ul {
width: 400px;
height: 20px;
position: absolute;
}
li {
width: 20px;
height: 20px;
box-sizing: border-box;
background-color: cyan;
border: 1px solid darkcyan;
float: left;
}
.remove {
animation: diaoluo 2s linear infinite;
}
</style>
</head>
<body>
<div class="wrap"></div>
</body>
<script>
var wrap = document.querySelector(".wrap");
var timer = null;
var gap = 500; //间隔时间
var speed = 20;
var row = 0; //行数
var lisNum = 20;
//创建ul
function createUl() {
var ul = document.createElement("ul");
ul.style.bottom = 20 * row + 'px';
ul.style.width = 20 * lisNum + 'px';
for(var i = 0; i < lisNum; i++) {
ul.innerHTML += "<li>" + (i + 1) + "</li>";
}
wrap.appendChild(ul);
}
createUl();
function begin() {
clearInterval(timer);
timer = setInterval(function() {
//获取wrap中最后一个ul
var ul = wrap.lastElementChild || wrap.lastChild;
ul.style.left = ul.offsetLeft + speed + 'px';
if(ul.offsetLeft + ul.offsetWidth >= wrap.offsetWidth - 2 || ul.offsetLeft <= 1) {
speed *= -1;
}
}, gap);
}
begin();
// 给wrap添加点击事件
wrap.onclick = function() {
speed = Math.abs(speed);
if(wrap.children.length > 1) {
jstj()
}
row++;
createUl();
gap -= 50;
begin();
}
//计算是否向下掉落多余的li
function jstj() {
// 当前运动的ul
var ul1 = wrap.lastElementChild || wrap.lastChild;
// 获取上一个ul
var ul2 = ul1.previousElementSibling || ul1.previousSibling;
var cha = ul1.offsetLeft - ul2.offsetLeft;
var n = Math.abs(cha / 20);
console.log(n);
lisNum -= n;
if(lisNum <= 0) {
clearInterval(timer);
alert("gameOver");
} else if(cha > 0) {
// 右边多出
var lis = ul1.children;
for(var i = lis.length - n; i < lis.length; i++) {
var li = lis[i];
li.className = "remove";
}
//2秒后执行删除操作
setTimeout(function(){
for (var i=0; i<n; i++) {
var li = ul1.lastElementChild || ul1.lastChild;
ul1.removeChild(li);
}
},2000)
} else if(cha < 0) { // 左边多出
var lis = ul1.children;
for (var i=0; i<n; i++) {
var li = lis[i];
li.className = "remove";
}
setTimeout(function(){
for(var i = 0; i < n; i++) {
var li = ul1.firstElementChild || ul1.firstChild
ul1.removeChild(li);
//修改ul1的位置
ul1.style.left = ul2.offsetLeft + 'px';
}
},2000)
}
}
</script>
</html>
原生javascript制作盖房子小游戏
最新推荐文章于 2022-05-01 22:42:35 发布