博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详解 CSS 绝对定位
阅读量:6171 次
发布时间:2019-06-21

本文共 3382 字,大约阅读时间需要 11 分钟。

基本定义和用法

在 CSS 中,position 属性指定一个元素(静态的,相对的,绝对或固定,以及粘性定位)的定位方法的类型。

当设置 position 属性的值为 absolute 时,生成绝对定位的元素,将该元素从文档流中删除,原来的占位不再存在,并相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

如果这个父元素是块级元素,包含块则设置为该元素的 border-box。

如果这个父元素是行内元素,包含块则设置为该父元素元素的内容边界。
如果元素没有已定位的父元素,那么它的位置相对于 <html>。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.box {
position: relative;
margin: 0 auto;
padding: 10px;
width: 300px;
height: 200px;
background: rgb(66, 98, 104);
}
.box-item {
position: absolute;
top: 50px;
left: 50px;
width: 100px;
height: 100px;
background: rgb(65, 116, 126);
}
我是块级元素。

您可以打开开发者工具对我进行调试。比如取消父元素内边界,查看绝对定位元素的位置变化。

有无定位值的区别

position 为 absolute 的元素如果没有设置 left, top 等值与 left:0; top:0; 的的效果一样吗?

答案是不一样的,一个没有设置 left 和 right 值的绝对定位的元素就像是一个行内块元素,其表现得依旧在 DOM tree 中,对 margin 等属性敏感,但是其实际宽高已经丢失,如果没有设置高度,则其高度由其中的内容决定。

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.box {
position: relative;
margin: 0 auto;
width: 200px;
height: 200px;
background: rgb(66, 98, 104);
}
.container {
margin: 0 auto;
width: 100px;
height: 100px;
background: rgb(68, 155, 172);
}
.box-item {
position: absolute;
width: 20%;
height:20%;
background: rgb(65, 116, 126);
}
对于设置了 left:0; top:0; 的绝对定位的元素,这个元素将会从 DOM 树中脱离,独立于文档流,然后会根据相对于 static 定位以外的第一个父元素进行定位。

所以没有定位值的 absolute 元素可以说是个更加变态(没有实际宽度)的 float 元素(实际占据高度为 0),所以浮动元素干的某些事情绝对定位元素也能做到。

绝对定位元素的百分比定位

CSS 设置绝对定位后 top,bottom 设置百分比定位是按父元素的高度来计算的,同样 left,right 设置百分比定位是按父元素的宽度度来计算的。

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
.box {
position: relative;
margin: 0 auto;
width: 300px;
height: 200px;
background: rgb(66, 98, 104);
}
.box-item {
position: absolute;
top: 10%;
left: 10%;
width: 100px;
height: 100px;
background: rgb(65, 116, 126);
}
您可以打开开发者工具对我进行查看。
父元素有内边界

如果父元素设置有 padding 值,则子元素定位 top,bottom 设置百分比定位是按父元素的高度 + 垂直内边界来计算的,同样 left,right 设置百分比定位是按父元素的宽度 + 水平内边界来计算的。

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/ box-sizing: content-box; /
.box {
position: relative;
margin: 0 auto;
padding: 10px 20px;
width: 200px;
height: 200px;
background: rgb(66, 98, 104);
}
.box-item {
position: absolute;
top: 10%;
left: 10%;
width: 100px;
height: 100px;
background: rgb(65, 116, 126);
}
您可以打开开发者工具对我进行查看。
当 box-sizing: border-box; 时,其计算与内边界无关。

父元素有边框

如果父元素设置有 border 值,则子元素定位设置的百分比定位值的计算与边框无关。

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/ box-sizing: content-box; /
.box {
position: relative;
margin: 0 auto;
width: 200px;
height: 200px;
background: rgb(66, 98, 104);
border: 10px solid rgb(117, 141, 145);
}
.box-item {
position: absolute;
top: 10%;
left: 10%;
width: 100px;
height: 100px;
background: rgb(65, 116, 126);
}
您可以打开开发者工具对我进行查看。
当 box-sizing: border-box; 时,如果父元素设置有 border 值,则子元素定位 top,bottom 设置百分比定位是按父元素的高度 - 垂直边框来计算的,同样 left,right 设置百分比定位是按父元素的宽度 - 水平边框来计算的。

绝对定位元素的百分比宽高

绝对定位元素的百分比宽高是相对于其最近的父级别定位元素的 padding-box 的大小来计算的。

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/ box-sizing: content-box; /
.box {
position: relative;
margin: 0 auto;
padding: 20px;
width: 200px;
height: 200px;
background: rgb(66, 98, 104);
border: 10px solid rgb(117, 141, 145);
}
.container {
margin: 0 auto;
width: 100px;
height: 100px;
background: rgb(68, 155, 172);
}
.box-item {
position: absolute;
top: 0;
left: 0;
width: 20%;
height:20%;
background: rgb(65, 116, 126);
}
当 box-sizing: border-box; 时,依然遵循上面的原则,所以计算绝对定位元素的百分比宽高时,应由 height - border 作为基础
转载于https://www.javazhiyin.com/11891.html

转载于:https://blog.51cto.com/14237164/2373648

你可能感兴趣的文章
Win10大丰收的节奏 微软收编iOS全部150万应用
查看>>
智慧城市要除“城市病” 中兴通讯开辟新增长极
查看>>
Opera已确认解散iOS开发团队
查看>>
DevOps:新的业务浪潮
查看>>
CERT:启用EMET的Windows 7比Windows 10更加安全
查看>>
LINE上市:一场迟到、勇敢又无奈的IPO
查看>>
OA选型:OA系统工作流是核心
查看>>
如何发现“利用DNS放大攻击”的服务器
查看>>
《Arduino开发实战指南:LabVIEW卷》——第2章 Arduino软件
查看>>
京津冀大数据走廊起笔谋篇
查看>>
WIFI连网一“吻”通 黑科技让无线路由器更智能
查看>>
Ovum光器件首席分析师:硅光子不是唯一解决方案
查看>>
大数据发展进入快车道 未来会呈现高速增长
查看>>
JVM基础:JVM内存组成及分配
查看>>
数据库锁和数据库隔离级别
查看>>
Linux下的内核测试工具——perf使用简介
查看>>
《从问题到程序:用Python学编程和计算》——2.3 内置函数和数学函数包
查看>>
《Photoshop修饰与合成专业技法》目录—导读
查看>>
《Metasploit渗透测试手册》—第1章1.10节分析数据库中存储的渗透测试结果
查看>>
《Adobe Acrobat XI经典教程》—第2课减小文件大小
查看>>