CSS学习笔记:定位属性position
参考资料:https://www.bilibili.com/video/BV18J411S7tZ?p=4
一、定位属性简介
position属性是用于指定一个元素的定位方法类型的属性,它的取值有:static(默认类型)、relative、absolute、fixed。当position属性的值不为static(即不为默认)时,我们可以添加:top、bottom、left和right属性对当前元素进行具体的定位,并且可以使用z-index来设置层级的上下关系。
二、各属性值的具体功能
1. relative
首先先搭建出测试框架:
<div id="box1"></div>
<div id="box2"></div>
<div id="box3"></div>
对应的css:
div {
width: 200px;
height: 200px;
}
#box1 {
background: #df637a;
}
#box2 {
background: #6ad281;
}
#box3 {
background: #72d0f6;
}
当前的效果为:

此时我们将#box2(绿色div)的position值改为relative,并为其设置top和left属性:
#box2 {
...
position: relative;
top: 200px;
left: 200px;
}
此时的效果为:

可以发现,当定位属性值为relative时,元素发生偏移的参考点为该元素自身。此外虽然元素移动到了新的位置,但是元素仍然会占有原有的位置,这也是为什么蓝色div没有排到上面。
2. absolute
我们的测试框架仍与上面相同,初始的效果如下:

此时为#box2开启绝对定位(position: absolute):
#box2 {
background: #6ad281;
/*使用绝对定位*/
position: absolute;
}
效果如下:

可以发现蓝色div不见了,此时检查元素:

可以发现原来蓝色方块还在,只是放置到了绿色方块的下面。这是因为当元素启用绝对定位是,该元素就和浮动类似,不会占用原有的空间了,因此后面蓝色的方块就会排列在了红色方块的下面。
此时我们再设置对应的偏移:
#box2 {
...
/*移动元素位置*/
top: 200px;
left: 200px;
}
效果如下:

可以发现此时绿色方块偏移的参照点为浏览器的(0,0)点,也可以理解为body元素的最左上角。
但absolute定位并不是什么情况下参照点都为浏览器的(0,0)点的,先编写以下场景:
<div id="box1"></div>
<div id="box2">
<div id="father">
<div id="son"></div>
</div>
</div>
<div id="box3"></div>
添加css:
#box2 {
width: 300px;
height: 300px;
background: #6ad281;
}
#father {
width: 200px;
height: 200px;
background-color: plum;
}
#son {
width: 100px;
height: 100px;
background-color: pink;
}
当前效果:

此时为son添加absolute定位,并且设置一定的偏移量:
#son {
width: 100px;
height: 100px;
background-color: pink;
position: absolute;
top: 100px;
left: 100px;
}

显然,它当前的参照点还是浏览器页面的(0,0)点。
此时为#father元素也添加一个定位(除了static的定位都可以):
#father {
...
position: relative;
}

此时可以发现#son元素的参考点变成#father元素了。
因此,当使用absolute定位时,元素的参考点为:该元素向外层寻找最近的有添加定位的父级元素:
- 找到了则参考点为该父级元素的左上角
- 否则参考点设置为body元素的左上角(即浏览器页面的(0,0)点)。
3. fixed
当设置了fixed后元素将固定在窗口的一个位置,即相对整个窗口的位置不再发生变化。
具体例子:
<div id="big">
<div id="left-bar">侧边条</div>
</div>
#big {
height: 2000px;
background-color: pink;
}
#left-bar {
height: 300px;
width: 100px;
background-color: plum;
position: fixed;
top: 200px;
right: 0;
}
测试效果:

此时无论如何拖动页面,这个侧边条依然会保持在窗口的左边不动,因此使用这个定位可以制作悬停效果。
三、三种定位属性的效果总结
| 定位属性值 | 效果 |
|---|---|
| relative | 元素发生偏移的参考点为该元素自身,虽然元素发生了移动,但是元素仍然会占有原有的物理位置 |
| absolute | 元素不会占用原有的物理空间,且偏移参考点为最近的有添加定位的父级元素 |
| fixed | 元素将固定在窗口的一个位置,即相对整个窗口的位置不再发生变化 |
tips:只有添加了定位的元素中添加top、bottom、left、right和z-index这些定位属性才会生效。
CSS学习笔记:定位属性position的更多相关文章
- css中的定位属性position(转)
css中的定位属性position 同样的也是上课的时候发现学生难以理解的一些问题拿出来记录一下,希望帮助初学者. 在css中定位属性position的运用在页面中是很常用的,特别是一些结合js来 ...
- CSS学习笔记——定位position属性的学习
今天学习之前剩下的一个问题:CSS的position属性.首先归纳出和position相关的问题: position作为一个属性,它一共有哪几个属性值? position常用的属性值有哪几个?分别有什 ...
- CSS学习笔记-背景属性
一.背景尺寸属性: 1.含义: 背景尺寸属性是CSS3中新增的一个属性,专门用于设置背景图片大小 2.格式: 1.1具体像素: backgro ...
- CSS学习笔记10 相对定位,绝对定位与固定定位
文档流中的元素的位置由元素在 (X)HTML 中的位置决定,这就是最原始的普通流,前面讲到的浮动CSS学习笔记08 浮动可以改变元素在文档流中的位置,除了这个我们还可以通过使用CSS的position ...
- Html CSS学习(五)position定位 原
Html CSS学习(五)position定位 position用来对元素进行定位,其值有以下几种: static:无特殊定位,对象遵循正常文档流,top,right,bottom,left等属性不会 ...
- CSS定位属性Position详解
CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position. 1. position:static 所有元素的默认定位都是:position ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- CSS学习笔记09 简单理解BFC
引子 在讲BFC之前,先来看看一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 2022-07-10 第五小组 pan小堂 css学习笔记
css学习笔记 什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets) CSS 描述了如何在屏幕.纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作. ...
- CSS学习摘要-定位实例
CSS学习摘要-定位实例 注:全文摘自MDN-CSS定位实例 列表消息盒子 我们研究的第一个例子是一个经典的选项卡消息框,你想用一块小区域包括大量信息时,一个非常常用的特征.这包括含有大信息量的应用, ...
随机推荐
- mysql将数据导入到另外一张操作
insert into ydcq_member_class (ClassId,signcount,UserId) select 64,2,`员工编号` from `学员名单`
- Docker系列(16)- 容器数据卷
什么是容器数据卷 docker的理念回顾 将应用和环境打包成一个镜像 数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!新增一个需求:数据可以持久化 MySQL,容器删了等于删库跑路!新增一个 ...
- 关于web桌面应用的集成解决方案
背景 毫无疑问,面对一个新的项目需求,我们首先想到的就是web. 确实,web太方便了,基于浏览器对OS的适配,我们可以很快速的实现某个需求的页面UI,而无需考虑OS的兼容差异. 再经过jq.boot ...
- Probius+Kubernetes任务系统如虎添翼
Probius是一款自定义任务引擎,可以灵活方便的处理日常运维中的各种任务,我们所有的CI/CD任务都通过Probius来完成的,这篇文章Probius:一个功能强大的自定义任务系统对其有详细的介绍, ...
- delete,drop,truncate 区别
今天看到一篇关于delete.drop.truncate区别的文章,认为写得非常好,转过来. 打比方很形象. delete,drop,truncate 都有删除表的作用,区别在于: 1.delete ...
- Redis核心原理与实践--散列类型与字典结构实现原理
Redis散列类型可以存储一组无序的键值对,它特别适用于存储一个对象数据. > HSET fruit name apple price 7.6 origin china 3 > HGET ...
- 缓冲区溢出利用与ShellCode编写
一.实验目的 熟悉编写shellCode的流程 掌握缓冲区溢出的利用 二.实验环境 系统环境:Windows环境 软件环境:C++ ,缓冲区溢出文件链接 三.实验原理 要实施一次有效的缓冲区溢出攻击, ...
- 专访阿里云 Serverless 负责人:无服务器不会让后端失业
2012 年,云基础设施服务提供商 Iron.io 的副总裁 Ken 谈到软件开发行业的未来,首次提出了 Serverless 的概念,为云中运行的应用程序描述了一种全新的系统体系架构.此后,以 AW ...
- linux主机互信操作
一.主机互信原理两个主机之间ssh登录需要提示输入对方的密码,当频繁需要登录操作时,可以通过linux公钥和秘钥,建立双机信任关系.把你源主机的公钥文件内容追加到目的主机对应用户下的authorize ...
- 题解 [SHOI2012]随机树
题目传送门 Description \(n\le 100\) Solution Problem 1 不难看出,答案就是: \[1+\sum_{i=1}^{n-1} 2/(i+1) \] Problem ...