您的位置:首页 > Web前端 > JavaScript

盖房子优化2

2016-07-13 08:37 330 查看
<!DOCTYPE html>
<html>

<head>
<meta
charset="utf-8"
/>
<title></title>
<style
type="text/css">
.wrap
{
width:
800px;
height:
500px;
border:
1px solid black;
margin:
0 auto;
position:
relative;
}

.row
{
position:
absolute;
bottom:
0;
left:
0;
}

.row>div
{
width:
20px;
height:
20px;
border:
1px solid deeppink;
background-color: mediumspringgreen;
float:
left;
box-sizing:
border-box;
}
</style>
</head>

<body>
<div
class="wrap">

</div>
<script
type="text/javascript">
var
wrap = document.querySelector(".wrap");
var
bottom = 0;
// 用于定位新生成的row的bottom值
var
time = 300;

function
createRow() {
// 使用js创建row和20个小div
var
row = document.createElement("div");
row.className
= "row";
row.style.bottom
= bottom + "px";

// 创建20个小方格
for
(var i = 0; i
< 20; i++) {
var
box = document.createElement("div");
row.appendChild(box);
}
// 将row添加为wrap的孩子节点
wrap.appendChild(row);

// 碰壁动画
var
speed = 20;
//做动画,过去的碰壁反弹
row.timer
= setInterval(function() {
var
maxWidth = wrap.clientWidth -
row.offsetWidth;
row.style.left
= row.offsetLeft + speed
+ "px";
//碰壁判断
if
(row.offsetLeft >= maxWidth) {
speed
*= -1;
}
else if (row.offsetLeft <= 0) {
speed
*= -1;
}
}, time);

// 返回新创建row节点
return
row;
}
// 调用createRow()函数,页面一加载,就有一行并且有动画了
createRow();
wrap.onclick
= function() {
// bottom每次增加20
bottom
+= 20;
// 点击后动画变快
time
-= 20;
// 时间不能减成负值
if
(time <= 50) {
time
= 50;
}
// 每点击一次,就创建新的row
var
newRow = createRow();
// 让前一个row停止计时器,找到新添加的row的上一个兄弟节点
clearInterval(newRow.previousSibling.timer);
}
</script>
</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  盖房子 js