css 定位详解介绍带实例demo

2016-03-02    编辑:tiger     点击(
在css中定位分类普通定位相对定位与绝对定位了,下面我来给大家介绍一下什么是相对定位与绝对定位区别及实现代码。

CSS 相对定位

相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。

如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。

 代码如下 复制代码
#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

如下图所示:

 CSS 相对定位实例

注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。

CSS 绝对定位

绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

普通流中其它元素的布局就像绝对定位的元素不存在一样:

 代码如下 复制代码
#box_relative {
  position: absolute;
  left: 30px;
  top: 20px;
}

如下图所示:

 CSS 绝对定位实例

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。


通过这个demo可以快速地帮助理解css的各种定位的问题.闲话不说,直接上代码吧

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title><style>
body
{margin: 30px; font-size:9pt;}
  
.a, .b, .c, .d, .e
{
width: 100px;
height: 100px;
margin: 5 auto;
color: #fff;
background: #000;
}
.aa, .bb, .cc, .dd, .ee
{
top: 10px;
left: 10px;
width: 10px;
height: 10px;
overflow: hidden;
background: #F90;
}
.b, .d, .e
{position: relative;}
.cc, .dd, .ee
{position: absolute;}
</style>
</head>
  
<body>
  
  
<div class="a">
<div class="aa"></div>
A:均不设置postion,一般嵌套关系
</div>
  
<div class="b">
<div class="bb"></div>
B:仅外div设置relative,一般嵌套关系
</div>
  
<div class="c">
<div class="cc"></div>
C:仅内div设置absolute,文档中为嵌套关系,页面中内div浮起[非float],相对于页面定位,与外div无关。
</div>
  
<div class="d" style="background:#ff0000">
<div class="dd" ></div>
D:外div设置relative,内div设置absolute,内div浮起来并相对于外div定位
</div>
  
<div class="d" style="background:#ff0000">
<div class="dd" style="position:relative"></div>
D:外div设置relative,内div设置relative,内div浮起来并相对于外div定位
</div>
  
<div class="e">
<div class="ee" style="left: -10px;"></div>
E:这个是说明边界问题。-10 != 反向10px间距
</div>
  
</body>
</html>