前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转
运行效果:
![image.png 从植物大战僵尸谈谈CSS定位布局_前端](//dev-img.mos.moduyun.com/20231022/53a676f4-2ebb-446c-8d97-1d3bd90f522b.png)
![image.png 从植物大战僵尸谈谈CSS定位布局_前端_02](//dev-img.mos.moduyun.com/20231022/484a5099-2f91-4b2e-b457-2ea73f044911.png)
步骤1:先把页面搞一搞
首先,我们需要创建一个HTML页面,把场地图片引入进来。
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
body {
/*设置溢出隐藏,为了没有滚动条*/
overflow: hidden;
}
.bg {
/*设置背景为一张图片,不重复*/
background: url(img/background1.jpg) no-repeat;
/*设置背景图片的尺寸占满div*/
background-size: 100%;
width: 1200px;
height: 500px;
}
</style>
</head>
<body>
<div class="bg">
</div>
</body>
</html>
效果:
![image.png 从植物大战僵尸谈谈CSS定位布局_绝对定位_03](//dev-img.mos.moduyun.com/20231022/17598657-12da-4d8a-9f7f-fe04afbba4d1.png)
注释已经写得很清楚了,读者自己看下css的含义即可,不必去深究。
步骤2:相对定位
相对定位就是移动一个标签,根据什么来移动呢?对了,就是根据它原来的位置移动,就这么简单。比如,我现在要移动这块场地,就这样做:
.bg {
/*设置背景为一张图片,不重复*/
background: url(img/background1.jpg) no-repeat;
/*设置背景图片的尺寸占满div*/
background-size: 100%;
width: 1200px;
height: 500px;
position: relative;/*设置相对定位*/
top: 80px;
}
可以看到场地被往下移动了80px,top代表顶部距离原来位置的长度,类似的属性还有left,bottom,left。这个步骤只是为了展示,现在请把这一行代码删除吧。
步骤3:绝对定位
绝对定位的意思,可以简单地这样理解,就是根据某一个相对定位(relative)的标签,从它的左上角顶点开始移动。我们来看案例:
<div class="bg">
<img class="Peashooter" src="img/Peashooter.gif">
</div>
.bg .Peashooter {
position: absolute;
top: 0;
left: 0;
}
![image.png 从植物大战僵尸谈谈CSS定位布局_绝对定位_04](//dev-img.mos.moduyun.com/20231022/a59afe97-cf8c-49c4-a3e7-9de6b9dbd8fe.png)
如图所示,豌豆射手设置了
因为外层div是相对定位,因此豌豆射手就相对于外层div做绝对定位。然后我们只需要调整top和left,就可以将豌豆射手放到它该去的地方。
![image.png 从植物大战僵尸谈谈CSS定位布局_前端_05](//dev-img.mos.moduyun.com/20231022/b1d88485-e790-4efe-81f8-290e0daaab71.png)
大概是这个位置:
![image.png 从植物大战僵尸谈谈CSS定位布局_相对定位_06](//dev-img.mos.moduyun.com/20231022/6db9f9e9-ab37-40fd-9a45-d84ab3849037.png)
代码:
.bg .Peashooter {
position: absolute;
top: 58px;
left: 218px;
}
成功啦,好简单哦鼓掌,吧唧吧唧。哈哈哈,学会了吗,这就是绝对定位!
步骤4:浮动布局
所谓浮动布局,就是让一个标签要么左浮动,要么右浮动。让我们重新开一个页面吧。
.wrap {
width: 300px;
height: 100px;
border:1px solid #666;
}
放入一个豌豆
<div class="wrap">
<img class="Peashooter" src="img/Peashooter.gif">
</div>
![image.png 从植物大战僵尸谈谈CSS定位布局_相对定位_07](//dev-img.mos.moduyun.com/20231022/db9d40f2-b01f-40b2-9003-20b002207559.png)
这种就叫做标准的文档流,img是行内标签,那么放置多个的时候,img也会从左往右依次排序。如果我要让豌豆以浮动的方式靠右浮动,看一下该怎么做?
.Peashooter {
float: right;
}
![image.png 从植物大战僵尸谈谈CSS定位布局_相对定位_08](//dev-img.mos.moduyun.com/20231022/2d031257-9794-4f3b-a748-116fac2e5bfc.png)
可以看到,豌豆靠右边了。接下来,我们再放一个太阳,不加浮动。
<div class="wrap">
<img class="Peashooter" src="img/Peashooter.gif">
<img src="img/Sun.gif">
</div>
![image.png 从植物大战僵尸谈谈CSS定位布局_html_09](//dev-img.mos.moduyun.com/20231022/a3e83bd3-7862-4ebe-86e9-952689e17293.png)
可以看到,太阳是在豌豆的左边的,这就是浮动的好处,不管其他元素怎么排列,右浮动的豌豆就是漂浮在右边。再来说下什么叫做清除浮动?首先,我们把豌豆设置为左浮动,太阳设置为右浮动。
<div class="wrap">
<img class="Peashooter" src="img/Peashooter.gif">
<img class="Sun" src="img/Sun.gif">
</div>
.Peashooter {
float: left;
}
.Sun {
float: right;
}
![image.png 从植物大战僵尸谈谈CSS定位布局_相对定位_10](//dev-img.mos.moduyun.com/20231022/b622c794-b02f-4da2-bbfd-676eaa9a9f2a.png)
然后,我们再把外层div的高度注释掉:
![image.png 从植物大战僵尸谈谈CSS定位布局_前端_11](//dev-img.mos.moduyun.com/20231022/29d4e4c8-2dcb-4520-93b7-4639d8563201.png)
![image.png 从植物大战僵尸谈谈CSS定位布局_css_12](//dev-img.mos.moduyun.com/20231022/98a4d85b-314b-49fd-95d4-8bedbf000630.png)
发现,div变成了一条线,这是因为,当一个容器里面所有的元素都浮动了,那么容器的高度就会发生塌陷,解决办法是清除浮动。在最后一个浮动元素后面加上这个:
<div style="clear: both;"></div>
![image.png 从植物大战僵尸谈谈CSS定位布局_前端_13](//dev-img.mos.moduyun.com/20231022/f29cecfb-4ccb-419d-a45c-47dd5efdd3ab.png)
我们看到,div的高度被里面的元素重新撑起来啦!一般我们会有一个叫做clearfix的类,专门做这个事情的。清除浮动的办法有很多,但是我建议学这个就足够了。我们学的是技术,不是背一本字典。
<div class="clearfix"></div>
.clearfix {
clear: both;
}