relative与absolute是position的两个值,本文对这两个值得关系进行了一个小实验

实验一:

首先定义了两个div元素,代码如下所示:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{
width: 300px;
height: 300px;
background-color: yellow;
} #div2{
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

效果如下所示:

现在我想实现把红色的小方块移动到右边,常规的想法就是将div1设置为position:relative,将div2的值设置为position:absolute,然后通过设置div2的top与left可以进行定位。代码如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{
position: relative;
width: 300px;
height: 300px;
background-color: yellow;
} #div2{
position: absolute;
top: 50px;
left: 200px;
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

如果div1不设置position:relative,会出现怎样的效果呢?代码如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{
/* position: relative; */
width: 300px;
height: 300px;
background-color: yellow;
} #div2{
position: absolute;
top: 50px;
left: 200px;
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

效果如下图所示:

效果基本没有变化,严格上讲,实际上是有一定的偏移的,这点可以通过margin进行调整,所以一般不建议过多的使用relative。

那设置div1的position为relative是不是就没有任何用处了呢?其实也不是这样的。

实验二:首先设置div1的position:relative,div2的position:absolute,并设置top与left(之所以设置top与left,是因为top与buttom同时出现的时候,top其决定作用,同理是left),代码如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{
position: relative;
width: 300px;
height: 300px;
background-color: yellow;
} #div2{
position: absolute;
top: 250px;
left: 200px;
width: 400px;
height: 400px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

效果如下图所示:

在这种情况下,正如实验一所示,div1的position几乎不起作用,div2是个自由的小天使,想到哪里就到哪里。但是如果给div1设置top与left之后呢?

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{
position: relative;
width: 300px;
height: 300px;
background-color: yellow;
top:50px;
left: 50px;
} #div2{
position: absolute;
top: 250px;
left: 200px;
width: 400px;
height: 400px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

效果如下图所示:

可以发现div2的位置就被div1限制住了,从此div2再也不是自由的小天使了,div2的偏移都是以div1位基准的了。

实验三:div1是包含div2的,可是如果div2定义了position:absolute,那个div2多余的部分就会在div1外部显示出来,即使div1设置了overflow: hidden也不会其作用,但是如果给div1加上position: relative;会怎样呢?代码如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{ width: 300px;
height: 300px;
background-color: yellow;
overflow: hidden;
} #div2{
position: absolute;
top: 20px;
left: 20px;
width: 400px;
height: 400px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

给div1加上position:relative,会出现什么样的效果呢?

代码如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#div1{
position: relative;
width: 300px;
height: 300px;
background-color: yellow;
overflow: hidden;
} #div2{
position: absolute;
top: 20px;
left: 20px;
width: 400px;
height: 400px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

这时div1元素会很好的限制div2的溢出部分。

css的relative与absolute(一)的更多相关文章

  1. css position: relative,absolute具体解释

    关于CSS中 position在布局中非常重要,查了非常多资料都说的非常难理解.以下说说个人的理解: 语法: position: relative | absolute relative: 对象遵循常 ...

  2. css position 应用(absolute和relative用法)

    1.absolute(绝对定位) absolute是生成觉对定位的元素,脱离了文本流(即在文档中已经不占据位置),参照浏览器的左上角通过top,right,bottom,left(简称TRBL) 定位 ...

  3. CSS+DIV布局中absolute和relative区别

    原文:http://developer.51cto.com/art/201009/225201.htm 这里向大家简单介绍一下CSS+DIV布局中absolute和relative属性的用法和区别,定 ...

  4. 怕忘记了CSS中position的absolute和relative用法

    CSS2.0中的定位确实有时会把人弄糊涂,所以今天给它记下来,同时供以后查阅.下面写的内容有一部分借鉴了w3cschool和divcss5这两个官方网站,在此处特别的说明一下 CSS2.0中posit ...

  5. CSS 定位 relative && absolute 问题?

    1 1 1 CSS 定位 relative && absolute 问题? 谁能解释一下,为什么div使用 relative是设置right,bottom 后,看不到div 呀,哪里多 ...

  6. CSS魔法堂:Absolute Positioning就这个样

    前言 当我们以position:absolute之名让元素脱离Normal flow的控制后,以为通过left和top属性值即可让元素得以无限的自由时,却发现还有各种神秘的力量左右着它的来去,于是我们 ...

  7. 细谈position属性:static、fixed、relative与absolute

    学习WEB有些时日了,对DOM中的定位概念有些模糊,特地花了一个下午的时间搜资料.整理写下这篇随笔. 首先,我们要清楚一个概念:文档流. 简单的讲,就是窗体自上而下分成一行一行,并在每行中按照从左到右 ...

  8. [转]Html position(static、relative、absolute、fixed)

    转自:http://blog.csdn.net/topviewers/article/details/21644305 讲解不错,转载备忘. position的四个属性值: 1.relative2.a ...

  9. div和span、relative和absolute、display和visibility的区别

    一.div和span的区别 div是一个块级元素,可以包含段落,表格等内容,用于放置不同的内容.一般我们在网页通过div来布局定位网页中的每个区块. span是一个内联元素,没有实际意义,它的存在纯粹 ...

随机推荐

  1. js中介者模式

    中介者模式(Mediator),用一个中介者对象来封装一系列对象交互.中介者使各对象不需要显示地相互引用,从而使其松散,而且可以独立地改变它们之间的交互. 从生活中例子自然知道,中介者模式设计两个具体 ...

  2. Androidstudio与unity交互踩坑(黑屏问题)

    unity打包好的apk运行出现黑屏,made with unity的界面都没有出现 原因是android项目中MainActivity没有继承UnityPlayerActivity

  3. css——被自己遗忘的css属性

    [属性选择器]顾名思义,属性选择器可以根据属性是否存在或属性的值来寻找元素,因此能实现某些效果.例如当鼠标停留在一个具有title属性的元素上的时候,大多数浏览器会显示一个工具提示,可以根据这个特性来 ...

  4. python中的列表和字典(一)

    一. 列表 1. 列表的定义 [] 2. 列表特征:有序列表,可以包含任意内容,可以重复 3. 列表的赋值(顺序赋值):listA = [A, B, C] 4. 列表的取值:list[index]  ...

  5. 51nod 1102 单调栈

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 1102 面积最大的矩形 基准时间限制:1 秒 空间限制:1310 ...

  6. 制作导航菜单分隔线的总结:用css3

    经过百度统计中国中使用谷歌浏览器比较多,我很奇怪,我身边的同事很少用谷歌,唯一我用谷歌的原因就是看上它调试能力和模拟手机. 下面是我个人制作的 预览用谷歌浏览器. <!doctype html& ...

  7. SQL使用指南(1)—— 数据定义语言(DDL)

    1.使用create 语句创建表 CREATE TABLE table_name (column_name datatype[null|not null], column_name datatype[ ...

  8. Spring通过XML方式实现定时任务

    package com.wisezone.service; import java.text.SimpleDateFormat; import java.util.Date; import org.s ...

  9. h5废弃的标签和属性及新增的标签和属性

    一.废弃的标签和属性 1.表现性元素 a) basefont b) big c) center d) font e) strike f) tt 2.框架类元素 a) frame b) frameset ...

  10. vue-router导航守卫

    导航守卫 译者注 “导航”表示路由正在发生改变. 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件 ...