css进阶----盒子模型,Reset CSS,css浮动,css定位,z-index属性
盒子模型
把页面上的每一个元素当成一个盒子
由内容,内边距,边框,外边距组成
盒子模型举例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> div{ width: 100px; height: 100px; background: yellowgreen; border: 5px solid red; padding: 50px; 内边距 margin: 50px; 外边距 } /* 盒子大小=样式宽 + 内边距 + 边框 盒子宽度=左border+右border+width+左padding+右padding 盒子高度=上border+下border+height+上padding+下padding */ </style> </head> <body> <div> </div> </body> </html>
padding
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /* padding 内边距,边框与内容之间的距离 一个值的时候: 代表四个方向值一样 上右下左(顺时针) 二个值的时候: 上下 右左 三个值的时候: 上 右左 下 四个值的时候: 上 右 下 左 */ div{ width: 200px; height: 200px; background: yellow; border: 1px solid red; padding: 50px 20px; 上下50px,左右20px } </style> </head> <body> <div>div</div> </body> </html>
border
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /* 盒子模型 盒子是由内容(content)、内边距(padding)、外边距(margin)、边框(border)组成的 */ /* border:边框 类型 颜色; border:width style color;复合样式 border-width border-style solid实线 dashed虚线 dotted点线 double双边框 border-color 一个值的时候: 代表四个方向值一样 上右下左(顺时针) 二个值的时候: 上下 右左 三个值的时候: 上 右左 下 四个值的时候: 上 右 下 左 border-width 边框大小 border-top-width 上边框大小 border-right-width 右边框大小 border-bottom-width 下边框大小 border-left-width 左边框大小 border-top-width:0 border-style 边框样式 border-top-style 顶部边框类型 border-right-style 右边边框类型 border-bottom-style 底部边框类型 border-left-style 左边边框类型 border-color 边框颜色 border-top-color 顶部边框颜色 border-right-color 右边边框颜色 border-bottom-color 底部边框颜色 border-left-color 左边边框颜色
#### border-top/right/bottom/left会增加宽度/高度,可以用box-sizing: border-box; 让边框放在布局的里面排布 #### */ div{ width: 200px; height: 200px; /*background: skyblue;*/ border: 10px dotted red; } p{ width: 200px; height: 200px; border-width: 10px 5px; border-style: dotted solid dashed; border-color: red blue yellowgreen black; } </style> </head> <body> <div></div> <p></p> </body> </html>
margin
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } /* margin 外边距 元素与其他元素的距离(边框以外的距离) 一个值的时候: 代表四个方向值一样 上右下左(顺时针) 二个值的时候: 上下 右左 三个值的时候: 上 右左 下 四个值的时候: 上 右 下 左 margin: auto; 快速左右居中 垂直方向: margin-bottom,margin-top 取两者之间的较大值 水平方向: margin-left,margin-right 取两者的和 overflow:hidden; 解决内边距重叠问题 border */ /*div{*/ /*width: 100px;*/ /*height: 100px;*/ /*background: yellow;*/ /*!*margin: 50px auto;*!*/ /*!*margin-left: auto;*!*/ /*!*margin-right: auto;*!*/ /*display: inline-block;*/ /*margin: 0 50px;*/ /*}*/ .box1{ /*margin-top: 100px;*/ } .wrap{ width: 500px; height: 500px; background: yellowgreen; /*border: 1px solid red;*/ overflow: hidden; } .box{ width: 50px; height: 50px; background: red; margin: 100px; } </style> </head> <body> <!--<div></div><div class="box1"></div>--> <div class="wrap"> <div class="box"></div> </div> </body> </html>
Reset CSS
重置css
浏览器在解析某些标签的时候,本身就自带了一些样式,导致写样式的时候就会效果不一致
浮动
B,C上移 B,C上移,B被覆盖
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } /* 浮动的定义:使元素脱离文档流,按照指定(左右)方向发生移动,遇到父级边界或者相邻的浮动元素停下来。 文档流:是文档中可显示对象在排列时所占用的位置/空间(在页面中占位置) 脱离文档流 :在页面中不占位置 清除浮动 1.给父级增加高度(不推荐使用) 2.给父级加overflow:hidden; 3.给父级加一个类 .clearfix::after{ content: ""; display: block; clear: both; } 浮动的特点 如果只给前面的元素浮动,后面的要占据他的位置 造成高度坍塌 */ li{ list-style: none; } ul{ width: 300px; /*height: 50px;*/ border: 1px solid blue; } li{ width: 50px; /*display: inline-block;*/ float: left; height: 50px; background: red; margin: 0 5px; border-radius: 50%; } .box{ width: 100px; height: 100px; background: yellow; float: left; } .wrap{ width: 200px; height: 200px; background: skyblue; } .box1{ width: 500px; border: 1px solid red; /*height: 50px; 清除浮动1*/ /*overflow: hidden; 清除浮动2*/ } .box1 li{ width: 100px; height: 50px; background: aqua; } li.left{ float: left; } li.right{ float: right; } .clearfix::after{ display: block; content: ""; clear: both; } </style> </head> <body> <ul class="clearfix"> <li></li> <li></li> <li></li> <li></li> </ul> <div class="box"></div> <div class="wrap"></div> <!--<ul class="box1 clearfix">--> <!--<li class="left"></li>--> <!--<li class="right"></li>--> <!--</ul>--> <!--<p style="width: 200px;height: 200px;background: red"></p>--> </body> </html>
定位
定位一定要找好参照物
1,静态定位static,默认值不会发生任何变化
2,相对定位relative不会脱离文档流,以自身元素为参考,可以给top,rigth,bottem,left
3,绝对定位absolute,脱离文档流,默认以整个文档为参考,有定位父级,则父级为参考,可以给top,rigth,bottem,left
4,固定定位fixed,相对于浏览器窗口进行定位,窗口滚动,依然不会变
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } /* position 定位 static 静态定位(没有定位),默认 relative 相对定位,相对于正常位置(原来没定位之前的位置)进行定位,还要占据位置 absolute 绝对定位,没有占据位置,使元素完全脱离文档流 没有定位父级,则相对于整个文档发生偏移 参考最近非static定位的父级进行定位 fixed 固定定位,相对于浏览器窗口进行定位 方向词 left right top bottom z-index 规定定位的层级(默认0) 值:number 值越大层级越高 */ .box{ width: 200px; height: 200px; background: yellowgreen; /*position: relative;*/ /*margin: auto;*/ /*top: 50px;*/ /*left: 100px;*/ position: absolute; /*margin: 50px;*/ bottom: 100px; } .wrap{ width: 300px; background: red; height: 300px; } .fix{ width: 200px; height: 200px; background: skyblue; position: fixed; bottom: 100px; left: 300px; } </style> </head> <body style="height: 2000px;"> <div class="box"></div> <div class="wrap"></div> <div class="fix"></div> </body> </html>
![](https://images2018.cnblogs.com/blog/1421031/201808/1421031-20180831114537323-659870131.png)
固定定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } .box{ width: 500px; height: 500px; background: red; margin: auto; position: relative; } .fix{ width: 400px; height: 300px; background: yellow; position: fixed; top: 50px; } .wrap{ width: 100px; height: 100px; background: yellowgreen; position: absolute; left: 300px; top: 50px; } </style> </head> <body> <div class="box"> <div class="fix"> <div class="wrap"></div> </div> </div> </body> </html>
![](https://images2018.cnblogs.com/blog/1421031/201808/1421031-20180831114737104-205842076.png)
定位涉及到z-index属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } ul{ position: relative; } li{ list-style: none; width: 50px; height: 50px; border: 1px solid red; position: absolute; } .box1{ background: yellowgreen; /*z-index: 10;*/ } .box2{ background: red; /*z-index: 1;*/ } .box3{ background: black; z-index: -2; } </style> </head> <body> <ul> <li class="box1"></li> <li class="box2"></li> <li class="box3"></li> </ul> </body> </html>