标签:
在下才疏学浅,不足之处,还请多多指教。
定位有这五种:

常用的是前三种,接下来上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
padding: 100px 100px;
position: relative;
width: 350px;
height:350px;
background: #cccccc;
}
.div1{
width: 300px;
height:300px;
position: relative;
background: red;
}
.div2{
position: absolute;
width: 180px;
height:100px;
background: greenyellow;
}
.div3{
position: fixed;
top: 500px;
left:500px;
width:300px;
height:100px;
border: 1px solid #00a8f3;
}
</style>
</head>
<body>
<div class="box">big-relative
<div class="div1">relative
<div class="div2">
absolute<br>
absolute是跟最近的relative进行定位的。
<div class="div3">
fixed<br>
fixed 是不受所在位置影响的,它就是死死定在距离顶500px,左边500px的位置
</div>
</div>
</div>
</div>
</body>
</html>
执行效果如下:

再看一个小demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
width: 100px;
height:100px;
}
.div1{
background: red;
}
.div2{
width:250px;
background: greenyellow;
position: absolute;
}
.div3{
background: burlywood;
height:100px;
padding-top: 100px;
}
.div4{
background: #1d7ad9;
}
</style>
</head>
<body>
<div class="div1">div1</div>
<div class="div2">
div2-absolute<br>
当为绝对定位时,会脱离文档流。
</div>
<div class="div3">
div3<br>
由于div2脱离文档流,所以div3占据之前div2的位置
</div>
<div class="div4">div4</div>
</body>
</html>
执行效果如下

接下来分析下浮动:

inherit是:元素从父级继承float属性的值;
left是:元素向左浮动;
none是:元素保持默认,在本该出现的位置;
right是:元素向右浮动。
看如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div1{
float: right;
width:200px;
height:200px;
background: #1d7ad9;
}
.div2{
float: inherit;
width:100px;
height:250px;
background: rebeccapurple;
}
.div3{
float:none;
width:90px;
height:100px;
background: red;
}
.div4{
float: left;
width:60px;
height:30px;
background: greenyellow;
}
</style>
</head>
<body>
<div class="div1">
right;<br>
此时容器为body,浮动到body的右边<br>
<div class="div2">
inherit<br>
1.父元素div1是右浮动,所以div2也是右浮动(inherit继承父元素的浮动)<br>
2.由于是浮动,所以自身比父元素高度大,也不会撑开父元素
</div>
<div class="div3">
none;<br>
出现在本该出现的位置
</div>
<div class="div4">
left;
</div>
</div>
</body>
</html>
执行效果如下:

这里,由于浮动,所以即便子元素高度超过父元素高度,也不会撑开。
但是我们如果想让子元素的高度撑开父元素怎么做呢?即我们需要清除浮动!
看如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div1{
width:200px;
background: #1d7ad9;
}
.clearfix:after{
clear:both;
display:block;
visibility:hidden;
height:0;
line-height:0;
content:‘‘;
}
.clearfix{
zoom:1;
}
.div2{
float: left;
width:100px;
height:250px;
background: rebeccapurple;
}
</style>
</head>
<body>
<div class="div1 clearfix">
给父元素div1,加上clearfix的类,使用伪对象after,控制浮动元素的影响。
<div class="div2">
浮动的元素
</div>
</div>
</body>
</html>
执行效果如下:

标签:
原文地址:http://www.cnblogs.com/wanghongde/p/5929176.html