1.原来在一行中的两个块,会因为浏览器窗口的大小改变而改变其原来的位置(变成多行),浏览器窗口宽度不够容纳
解决方法:加个父div,并且设置宽度
.father {
width:500px;
height:300px;
}
<div class="father">
<div class="left">左</div>
<div class="right">右</div>
</div>
2.清除浮动clear
当元素有浮动属性时,会对其父元素或后面的元素产生影响,出现一个布局错乱的现象。
none:默认值。允许两边有浮动对象
left:不允许左边有浮动对象
right:不允许左边有浮动对象
both:左右两侧不允许有浮动对象
当父元素没有指定高度时,并且它的子元素有浮动,这时这个父元素的高度不会自适应
(1)额外标签法(末尾加个空盒子)
W3C建议在容器的末尾增加一个“clear:both”的元素,强迫容器适应它的高度以便装下所有的float元素
.father {
width:500px;
clear:both;
}
<div class="father">
<div class="left">左</div>
<div class="right">右</div>
<div class="clear"></div> 增加一个空div
</div>
(2)溢出的使用(overflow)
给父盒子加个 overflow:hidden属性,最简单的清除浮动方法,如果子元素使用了定位布局,超出的内容看不到
(3)绝对定位和相对定位
position:absolute;relative;fixed(固定在页面某个位置)
绝对定位:将对象从文档流中分离出来,通过设置left,right,top,bottom四个方向相对于父级对象进行绝对定位。如果不存在这样的父对象,则依据body对象
相对定位与绝对定位
绝对定位是父元素为基准点,进行定位---会脱离文档流
相对定位是根据其自身为基准点,进行定位---离开原位置,但还占着原来空间
当我们想要使用绝对定位时:必须要有两个条件
1.必须给父元素加定位属性,一般建议使用position:relative;
2.给子元素加绝对定位position:absolute;同时要加方向属性
#main {
width:700px;
margin:0 auto;
background:pink;
overflow:hidden;
position:relative;
}
#left {
width:200px;
height:200px;
background:red;
position:absolute;
top:100px;
left:-100px;
}
(4)伪对象after清除浮动,网上最流行(相当于在父盒子尾部加个隐藏的div)
.clearFix:after{
clear:both;
display:block;
visibility:hidden;
height:0;
line-height:0;
content:"";
}
<div class="father clearFix">
<div class="left">左</div>
<div class="right">右</div>
<div class="clear"></div> 增加一个空div
</div>
cursor:pointer;
本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1708308