css布局模型

一、流动模型(默认布局)

  1.特征:

    第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。

    第二点,在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。

 

二、浮动模型

div{float:right/left;}

 

三、层模型(定位)

1、绝对定位(position: absolute)

  这条语句的作用将元素从文档中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口

代码:

div{
    width:200px;
    height:200px;
    border:2px red solid;
    position:absolute;
    left:100px;
    top:50px;
}
<div id="div1">块1</div>

效果:

 

2、相对定位(position: relative)

元素在正常文档流中的偏移位置。(即不脱离默认文件流)

相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动。

代码:

#div1{
    width:200px;
    height:200px;
    border:2px red solid;
    position:relative;
    left:100px;
    top:50px;
}

<div id="div1">块2</div>

效果:

 

3、固定定位(position: fixed)

与absolute定位类型类似;(脱离默认文件流?)

不随浏览器窗口的滚动条滚动而变化;

固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed;属性功能相同。

 

四、Relative与Absolute混合应用

关键点在于是否脱离默认文件流;只有position: relative不脱离。

必须遵守下面规范:

1、参照定位的元素必须是相对定位元素的前辈元素:

<div id="box1"><!--参照定位的元素-->
    <div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>

从上面代码可以看出box1是box2的父元素(父元素当然也是前辈元素了)。

2、参照定位的元素必须加入position:relative;

#box1{
    width:200px;
    height:200px;
    position:relative;        
}

3、定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。

#box2{
    position:absolute;
    top:20px;
    left:30px;         
}

这样box2就可以相对于父元素box1定位了(这里注意参照物就可以不是浏览器了,而可以自由设置了)。

 

例子:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>相对参照元素进行定位</title>
<style type="text/css">
div{border:2px red solid;}
#box1{
    width:200px;
    height:200px;
    position:relative;
          
}
#box2{
     position:absolute;
    top:20px;
    left:30px;
          
}
/*下面是任务部分*/
#box3{
    width:200px;
    height:200px;
    position:relative;       
}
#box4{
    width:99%;
     position:absolute;
    bottom:0;
    
}
</style>
</head>

<body>
<div id="box1">
    <div id="box2">相对参照元素进行定位</div>
</div>

<h1>下面是任务部分</h1>
<div id="box3">
    <img src="http://img.mukewang.com/541a7d8a00018cf102000200.jpg">
    <div id="box4">当我还是三年级的学生时是一个害羞的小女生。</div>
</div>
</body>
</html>

效果:

posted @ 2017-09-09 14:14  shiweiqianju  阅读(179)  评论(0)    收藏  举报