CSS的相对定位和绝对定位(position)
什么是定位呢?
定位(position)
,故名思议,就是确定元素在页面中的位置。
CSS的常用定位有两种,一种是相对定位,一种是绝对定位。
下面我们看例子
<html>
<head>
<style>
#div0 {
/* 设置背景色为黄色 */
background-color:yellow;
/* 设置边框为1px的线条 */
border:1px solid;
/* 设置宽度为800px */
width:800px;
}
#div1, #div2 {
/* 设置宽度为300px */
width:300px;
/* 设置高度为300px */
height:300px;
/* 设置边框为1px的线条 */
border:1px solid;
}
#div1 {
/* 设置背景色为灰色 */
background-color:#888;
}
#div2 {
/* 设置背景色为蓝色 */
background-color:#08c;
}
</style>
</head>
<body>
<div id="div0">
<div id="div1"></div>
<div id="div2"></div>
</div>
</body>
</html>
有三个div,其中一个大的#div0
,里面含有两个子div
,#div1
和#div2
。
可以看到,大的黄色#div0
,嵌套了一个灰色的#div1
和一个蓝色的#div2
。
由于div
是块级元素
,所以灰色
和黄色
的div
不会在同一排显示。
测试1,相对定位
这个时候,我们给#div1
,设置相对定位
。
#div1 {
/* 设置背景色为灰色 */
background-color:#888;
/* 设置为相对定位 */
position:relative;
/* 设置相对于自己,上面向下移动20px,左侧向右移动30px */
top:100px;
left:150px;
}
当我们给灰色的#div1
做了相对定位之后,#div1
相对于自己原来的位置做了移动。
但是其他的元素#div0
、#div2
的位置都没有发生变化,也就是说,给元素做了相对定位之后,其他元素不受影响,还认为该元素,在其原来的位置。
测试2,一个子元素绝对定位,父元素无定位
我们再给#div1
改成绝对定位
#div1 {
/* 设置背景色为灰色 */
background-color:#888;
/* 设置为绝对定位 */
position:absolute;
/* 相对于页面html,上面向下移动20px,左侧向右移动30px */
top:100px;
left:150px;
}
这时发现,原来的黄色#div0
坍塌了,这是因为,绝对定位
,同样会产生类似于float的脱离文档流
,绝对定位
的元素,与其他元素不在同一层面,处于其他元素的上方。
当父元素#div0
无定位时候,绝对定位
是相对于html文档
来做的定位,与其父元素无关。
测试3,一个子元素绝对定位,父元素有定位
当我们给父div设置一个定位后(绝对定位/相对定位都可以),情况又发生了改变
#div0 {
position:relative;
}
从图上可以清楚的看到,#div1
的位置,相对于父元素#div0
发生了偏移。
也就是说,当父元素有定位,绝对定位
是相对于父元素
来做的定位。
测试4,两个子元素绝对定位,父元素无定位
现在我们给蓝色的#div2
也做一个绝对定位,再来看一下效果。
#div2 {
/* 设置背景色为蓝色 */
background-color:#08c;
/* 设置为绝对定位 */
position:absolute;
/* 相对于页面html,上面向下移动30px,左侧向右移动60px */
top:30px;
left:60px;
}
现在两个子元素都设置了绝对定位
,那么他们就都处于其他元素的上方,黄色的父div
,就在坍塌的只剩下一条线了。
那么两个子div,重叠在一起,到底怎样控制,谁在谁的上面呢?
可以用z-index
属性来控制。
我们给#div1
加上z-index
属性
#div1 {
/* ... 其他css代码 */
/* 设置层级为1 */
z-index:1;
}
在css
中,用z-index
来设置元素的层级
,默认是0
,谁的z-index
大,谁就在上面
。
当给#div1
设置z-index
为1
后,#div2
的z-index
是默认值0
,#div1
的z-index
比#div2
的大,那么#div1
就在#div2
的上方了。
同理,当你给一个元素的z-index
设置为-1
时,那么这个元素就会在文档下面,看不见
了。
总结:
相对定位
,是相对自己原来位置所做的定位,其他页面元素不受影响,还认为该元素,在其定位前的地方。- 如果父元素没有定位,那么
绝对定位
,是相对于页面html
做的定位。- 如果父元素有定位,那么
绝对定位
,是相对于其父元素
所做的定位。- 定位的层级由
z-index
属性控制,默认是0
,谁大谁在上方。
CSS的相对定位和绝对定位(position)的更多相关文章
- 详解CSS的相对定位和绝对定位
CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left,right,bottom,to ...
- Web—12-详解CSS的相对定位和绝对定位
CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left,right,bottom,to ...
- 详解CSS的相对定位和绝对定位(讲得很详细)
详解CSS的相对定位和绝对定位 CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left ...
- css定位:相对定位、绝对定位、固定定位的区别与特性
css定位:相对定位.绝对定位.固定定位的区别与特性 原文地址:http://www.qingzhouquanzi.com/106.html css定位常用的有以下三种: 使用了定位的共同特性: 这三 ...
- CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位
其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学习. 通过我们前面的学习,我们网页布局方法: ...
- CSS中相对定位与绝对定位
看了几个讲解定位的博客,觉得还不错,分享之: 博客一:http://blog.sina.com.cn/s/blog_4bcf4a5e010008o0.html 文章中,主要需要参考的有两点: 1,相对 ...
- h5整理--详解css的相对定位和绝对定位
浏览器默认状态下position的属性默认值是static也就是没有定位,元素出现在正常的文档流中,这个时候给元素设置的left,right.bottom.top这些偏移属性是没有效果的,不会生效: ...
- css 中相对定位和绝对定位
1. css中定位机制有三种: 标准文档流, 浮动, 绝对定位 2. 绝对定位就属于第三种定位, 用到position属性, 下面就是具体设置 相对定位: 相对于自身原有位置(就是普通流的时候)进行偏 ...
- css中相对定位和绝对定位
相对定位: #box_relative { position: relative; left: 30px; top: 20px; } 绝对定位: #box_relative { position: a ...
随机推荐
- 转载JAVA八大经典书籍,你看过几本?
一.Java从入门到精通*<Java从入门到精通(第3版)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识.<Java从入 ...
- 【51nod1847】奇怪的数学题(Min_25筛+杜教筛)
题面 传送门 题解 这题有毒--不知为啥的错误调了半天-- 令\(f(i)={sgcd(i)}\),那么容易看出\(f(i)\)就是\(i\)的次大质因子,用\(i\)除以它的最小质因子即可计算 于是 ...
- 洛谷P3724 [AH2017/HNOI2017]大佬(决策单调性)
传送门 这个思路很妙诶->这里 以下为了方便,我把自信说成血量好了 虽然表面上看起来每一天有很多种选择,然而我们首先要保证的是不死,然后考虑不死的情况下最多能拿出多少天来进行其他操作.不死可以d ...
- 微信Dat文件解码
最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛.偶然发现磁盘中某公司的文件夹占用空间简直不能再大,那可是我的C盘啊,合计才119GB的SSD空 ...
- luogu2513 逆序对数列
我们令\(f[i][j]\)表示\(i\)的全排列中,逆序数为\(j\)的个数. 我们考虑在\(i-1\)的排列中插入\(i\).\(k\)是这次更新会导致增加多少逆序数. 则\(\begin{ali ...
- [JavaScript]如何实现一个JS脚本能在browser和NodeJs里都是用
下面是一个Common的Solution 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Nod ...
- Hibernate JPA 如何使用SQL文直接查询
对于复杂SQL,可以直接调用native sql来是实现 public List<Partner> findPartners() { List<Partner> partner ...
- 解决哈希(HASH)冲突的主要方法
https://blog.csdn.net/xtzmm1215/article/details/47177701 虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的.当关键字值域远大于哈希 ...
- 1.3 IDAE 中使用GO开发项目
创建GO文件 在GO项目的文件夹上右键,选择Go file,Kind选择简单应用,这样创建一个具有main入口的Go file 点击这个按钮,即可运行代码
- 21-----BBS论坛
BBS论坛(二十一) 21.1.编辑轮播图功能完成 (1)cms_banners.html 把属性绑定到<tr>上面,方便找到各属性的值 <tbody> {% for bann ...