一、浮动 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>