一、浮动 float
定义:使元素脱离文档流,按照指定的方向发生移动,遇到父级或相邻的浮动元素就会停下来。
值: left.right.none
特征:
1. 块元素可以在一行显示
2. 按照一个指定的方向移动,遇到父级或相邻的浮动元素就会停下来。
3. 行内元素支持宽高
4. 脱离文档流
浮动元素后面跟的元素(如果没有浮动)的位置是从前面浮动的元素开始的位置。
注意:非浮动元素里的内容会留出前面浮动元素的位置(盒模型位置)
5. 块元素默认宽度会被改变(包裹性)
块元素不设置宽度,那宽度会由自动变成内容所撑开的宽度
6. 父级高度塌陷(破坏性)
子元素有浮动后,那父级元素的不会由子元素的高度所撑开
7. 换行符不会被解析成空格(并行元素不会有间隙)
浮动后的元素会脱离文档流,那它就不属于文档流的结构,所以不会解析空格
脱离文档流:指的是元素不在页面中占位置
1. 定位是完全脱离文档流
2. 浮动不是完全脱离文档流
清除浮动
1、clear
clear定义: 元素的某个方向上不能有浮动的元素
both :元素的两边都不能有浮动元素
<style>.div1{float:left;}.div2{float:right;}.div3{clear:both;}</style>...<divclass="div1">kaivon1</div><divclass="div2">kaivon2</div><divclass="div3">kaivion3</div>
2、after伪类清楚浮动
现在最主流的方法,这个是给父级去消除子级浮动的影响
after 代表选择到的元素的内容的最后面(因为有些元素没有内容·所以after要配合content)
after伪类的内容默认是一个行内元素(所以需要它转化为块元素)
content 设置的内容
<style>.parent{border:1px solid #f00;}.box{width:100px;height:100px;background:green;float:left;}.clearfix{content:"";display:block;clear:both;}/* .clearfix{*zoom:1;}以上这个是满足低选择器*/</style><divclass="parent clearfix"><divclass="box"></div></div>
3、其他
1.给父级添加高度
有时候不能给父级添加高度的,所以这个方法用不了
2.inline-block
用了这个属性,这个元素就没办法居中了。
3.overflow:hidden;(溢出)
超出父级的东西直接隐藏,
如果子级有定位的话,并且这个定位超出了父级的范围,那样的话就看不到了,所以不能加这个命令
4.空标签
空标签是没有内容的,但是它的作用是用来清楚浮动的,不符合行为、样式、结构分离的标准
而且在ie6下标签是一个最小高度19px,解决后也会有2px偏差
5.br清楚浮动
与上面问题一样.
二、定位- 相对定位
position 定位
relative 相对定位
移动的方向 top、right、botto、left
特点
1.只加相对定位,不设置元素移动的位置,元素和之前没有变化。
2.根据自己原来的位置计算移动距离
3.不脱离文档流,元素移走以后,原来的位置还会被保留
4.加上相对定位后,原来的元素本身的特征没有发生变化
5.提升层级
div{100px;height:100px;color:#fff;}#div1{background:red;}#div2{background:green;position:relative;left:100px;top:100px;}#div3{background:blue;}<divid="div1">div1</div><divid="div2">div2</div><divid="div3">div3</div>div1div2div3
position 定位
absolute 绝对定位
移动的方向 top、right、botto、left
特点
1.完全脱离文档流。
2.行内元素支持所有样式(与加上浮动,或则inlin-block的效果是一样的)
3.如果父级有定位,那位置会根据父级移动。
如果父级没有定位,那位置根据可视区移动。
(用到绝对定位的话,都会给父级加一个相对定位)
4.提升层级
5.触发BFC
body{position:relative;}div{200px;height:200px;color:#fff;}#div1{background:red;}#div2{background:green;position:absolute;left:200px;top:400px;}#div3{background:blue;position:absolute;top:400px;}<divid="div1">div1</div><divid="div2">div2</div><divid="div3">div3</div>div1div2div3
二、定位- 固定定位
position 定位
fixed 固定定位
移动的方向 top、right、botto、left
特点
1.完全脱离文档流。
2.行内元素支持所有样式(与加上浮动,或则inlin-block的效果是一样的)
3.相对可视区来定位
4.提升层级
5.触发BFC
注意
IE6不支持
.div1{100px;height:100px;background:red;position:fixed;right:0;bottom:0;}<divclass="div1">div1</div>这样设定后的元素就会一直在在浏览器的右下角,无论如何拉动滚动条都不会改变位置
三、层级
四、居中显示层级大小由顺序来决定的,后面的元素要比前面的元素的层级要高
有定位的元素层级会比没有定位的元素层级高
在都有定位的情况下,层级还是取决于书写顺序(在同一个位置层级高得内容会将层级低的遮盖。)
z-index 层级
它的值是数字,数字越大层级越高(在同一个层里)
.box1{z-index:2;}.box2{150px;margin-top:-50px;background:green;z-index:5;}<divclass="box1">kaivon</div><divclass="box2">kaivon2</div>
div{300px;height:300px;background:green;position:absolute;left:50%;top:50%;margin-left:-150px;margin-top:-150px;/*因为是根据元素的边距计算,所以还需减去元素自身的宽高一半*//*方法二*//*left:0;right:0;top:0;bottom:0;margin:auto;*/}<div></div>
案例
div{border:1px solid red;300px;height:300px;position:relative;resize:both;overflow: hidden;/*resize:both; 设置元素的大小可以改变(可以拉动)必须配合overflow:auto使用overflow:auto;如果元素超出父级就出现滚动条*/}a{100px;height:100px;background:green;text-decoration:none;position:absolute;text-align:center;font:16px/100px "微软雅黑";}#a1{left:10px;top:10px;}#a2{right:10px;top:10px;}#a3{/* left:50%;top:50%;margin-left:-50px;margin-top:-50px;*/left:0;right:0;top:0;bottom:0;margin:auto;}#a4{left:10px;bottom:10px;}#a5{right:10px;bottom:10px;}<div><ahref="#"id="a1">a1</a><ahref="#"id="a2">a2</a><ahref="#"id="a3">a3</a><ahref="#"id="a4">a4</a><ahref="#"id="a5">a5</a></div>![]()
