css定位

定位的原理很简单,利用定位,可以准确的定义元素框对于其正常位置应该出现在哪里,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。

 作为提纲,先来看看postion都有哪些定位吧


 

 

 

使用position属性对元素进行定位: position属性

值:static |absolute | fixed | relative

初始值:static

运用范围:所有元素

继承值:无

计算值:根据指定确定

static

元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

relative

元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

absolute

元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素定位后生成一个块级框,而无论原来它在正常流中生成何种类型的框。

fixed:元素框表现类似于absolute,只是以浏览器窗体为基准,进行定位


 

绝对定位:


是以最近的父类为基准,并且已经从标准流中脱离了。意味着他们对其后的兄弟盒子的定位没有影响,其他盒子就像不存在一样。并且其后的元素会占据它原来的位置。

 

咱们先来看一个基本的没有默认的static定位

实例代码
<html>
<head>
<title>position属性</title>
<styletype="text/css">
<!--
body{
margin:10px;
font-family:Arial;
font-size:13px;
}
#father{
background-color:#a0c8ff;
border:1pxdashed #000000;
width:100%;height:100%;
padding:5px;
}
#block1{
background-color:#fff0ac;
border:1pxdashed #000000;
padding:10px;
//position:absolute;                /*relative相对定位 */
//left:15px;                                /*子块的左边框距离它原来的位置15px */
//top:10%;
}
#block2{
background-color:#ffc24c;
border:1pxdashed #000000;
padding:10px;
}
-->
</style>
   </head>
<body>
<divid="father">
<divid="block1">absolute</div>
<divid="block2">block2</div>
</div>
</body>
</html>

效果图,如下图

 

首先是一个大的div,而后是两个小的div,都是块级元素。

 


 

css样式代码



 

 

然后我们对第一个absoult进行一个绝对的定位。我们可以看到效果图,block1已经覆盖了block2,而block2现在的位置是原来block1的位置。




 

那么block1又是相对谁定位的呢。我们先来修改css的代码

 


 

再来看效果图,

 


 


 可发看出这里的基准是以浏览器窗体为基准的

 

下面我们在修改father的位置,进行查看

 

#father{
background-color:#a0c8ff;
border:1pxdashed #000000;
width:100%;height:100%;
padding:5px;
}
#block1{
background-color:#fff0ac;
border:1pxdashed #000000;
padding:10px;
position:absolute;                /*relative相对定位 */
left:0;                                /*子块的左边框距离它原来的位置15px */
top:0;
}


我们father也进行绝对定位,再将block1进行归零的定位,看看这次的基准是谁。

 


 

我们发现这次的基准是father

所以通过对比我们验证了刚才的

绝对定位中:哪个父类设置了定位(是最近的父类为基准),那么就以它为基准,

没有设定是以body为基准

 

相对定位:



元素仍保持其未定位前的形状,它原本所占的空间仍保留,然后相对于原来的位置进行移动。

注意这里的,原本的位置仍保留。

还以上面的例子为准



 

之后进行relative定位,进行移动

#block1{
background-color:#fff0ac;
border:1pxdashed #000000;
padding:10px;
position:relative;                /*relative相对定位 */
left:15px;                                /*子块的左边框距离它原来的位置15px */
top:10%;
}
 


 

 

我们发现block1的位置block2并没有占据,block1是先对原来自身移动了。

 

Fixed固定定位

元素框表现类似于absolute,只是以浏览器窗体为基准,进行定位的。

可以说是一种特殊的绝对定位。

static

是默认的属性值,是盒子按照标准流进行布局的


 小结: 


通过上面的实例,我们发现,定位如果以出现的形式划分,可以归纳为以下三种: 

绝对定位: 嵌套固定定位

哪个父类设置了定位(是最近的父类为基准),那么就以它为基准,

没有设定是以body为基准(这个是固定定位的标准),不再是标准流。

相对定位:

元素只是相对于原来的位置偏移。但仍保留原来的位置。仍然是标准流。

默认形式:

标准流,不移动

以上是定位的小结,欢迎大家指正。

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值