0

0

关于css中的position属性

小云云

小云云

发布时间:2017-12-06 16:06:34

|

2463人浏览过

|

来源于php中文网

原创

position 属性规定元素的定位类型。这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。本文我们就来谈谈关于css中的position属性。

标准

根据MDN文档,CSS属性 position 用于指定一个元素在文档中的定位方式。另外还需要偏移属性top, right, bottom 和 left来决定了该元素的最终位置。适用于所有元素,没有继承性,会创建层叠上下文。而定位的值一共有5种(?):

  1. position:static 默认值

  2. position:relative 相对定位

  3. position:absolute 绝对定位

    立即学习前端免费学习笔记(深入)”;

  4. position:fixed 固定定位

  5. position:sticky 粘性定位

因为position属性是非常基础的知识,所以在接下来的篇幅中我不会用很多图片或demo演示效果。毕竟这些内容应该是查阅文档或教程就能知道的。

默认值static

当元素的position属性没有设置或者值为static时,元素处于文档流中,且left等偏移属性是不起作用的。文档中还说z-index值无效。我想了一下,如果元素是处于正常文档流中,一般是不会有其他元素与他在层叠上有上下的冲突,所以z-index的应用场景基本是没有的。也许有我漏考虑的地方?除了这些,static也没有什么特殊的地方了。

相对定位relative

设置相对定位的元素仍然处于文档流中,其占据的空间仍然保留。但是如果设置了上下左右偏移属性,它会相对于原位置向相应的方向移动,此时元素空间仍存在,周围元素不会重新排列。也就是说,该元素原有的位置上被放置了一块透明的砖块,看不见但摸得着。另外,相对定位元素会创建一个包含块,用于作为内部子元素定位的基点。

包含块的定义:由最近的块级祖先框,表单元格或行内块inline-block祖先框的内容边界(content edge)构成。

包含块的判定:

关于css中的position属性

绝对定位absolute

绝对定位元素会脱离文档流(normal flow),此时其原有空间为0,也就是不存在透明砖块占位。附近元素也会重新排列。同时,该元素会产生格式化上下文(BFC),上下外边距不会合并,不会因为内部浮动元素产生高度塌陷。

之所以要解释一下包含块的定义和判断,是因为绝对定位元素的定位点就是最近的包含块,设置的上下左右偏移属性都是以包含块的左上角为原点(这个跟文字方向有关)。从上图中可以看出,如果绝对定位的祖先元素position属性都是static,那么会相对于初始包含块————body定位。如果存在position属性为其他值的祖先元素,则相对于其创建的包含块定位。

这里其实想跟浮动元素做个对比,看到张鑫旭博客里提到过浮动元素可以看作有宽无高的inline-block元素,而绝对定位则是无宽无高的inline-block元素。至于为什么看成inline-block元素,我也不太记得了~

固定定位fixed

固定定位元素,相对于屏幕视口定位,这种情况下不会因为滚动而改变位置。如果是打印网页,该元素会出现在每个页面中的固定位置。另外,固定定位元素也会创建格式化上下文。  
文档中还提到,有一种特殊情况会影响fixed定位。就是当父级元素的transform属性不会none时,固定定位的容器改为该父级元素,而不是视口。这种意外情况是需要注意和避免的。  
最后,如果你是个移动端web开发者,还会遇到ios系统webview下fixed布局的一些bug。这些bug可能无法找到完美的解决方案,所以遇到的话就考虑js动态判断修改样式或者直接就重新布局吧。

粘性定位sticky

这个定位方式相信很多人都没见过,因为它是一个试验属性,文档建议尽量不要在生产环境中使用。不过它的功能还是很好用的,可以了解一下。

通达CMS蓝色中英双语企业网站1.4.2
通达CMS蓝色中英双语企业网站1.4.2

通达CMS是采用PHP+MYSQL进行开发的。支持伪静态设置,可生成google和百度地图,支持自定义url、关键字和描述,利于收录...后台简单明了,代码简洁,采用DIV+CSS 利于SEO,企业建站系统是一套专门用于中小企业网站建设的网站管理系统。

下载

粘性定位是相对定位和固定定位的结合体。根据上下左右的偏移属性设置阈值。若相对定位时超过阈值会转变为固定定位。

由于是新属性,所以去这个demo看看吧。

demo中,代码主要是

dt{
position: -webkit-sticky;
position: sticky;
top: -1px;
}

首先,从粘性定位在浏览器中的支持情况可以看到基本都支持了,除了ie。不过在火狐中不支持table相关元素,chrome中不支持thead和tr等元素。因此想要正常使用,可能需要加上-webkit等前缀。
其次,设置top:-1px作为阈值。当元素作为相对定位元素时,如果其顶部相对于包容块的距离>=-1px,就会转变为固定定位。所以要使用粘性定位,阈值的设置是关键。

除了demo中展示的功能,粘性定位的应用场景还可以用在所谓的sticky footer中。相信有很多时候产品都会要求这样的布局吧~

宽度受限的定位元素

很多时候,我们将绝对定位的元素垂直水平居中使用的是

position:absolute;
top:0;
bottom:0;
right:0;
left:0;
width:50%;
height:50%;
margin:auto;

这种情况下,由于margin设置为auto值,而根据等式:  
margin+border+padding+width=元素宽度/高度  
所以会设置margin为相应方向上空余部分的一半,实现居中的情况。

但是,绝对定位元素不是脱离文档流了吗?为什么margin还会起作用呢?原来是因为我们还设置了上下左右偏移属性。一般我们只需设置上或下、左或右,如果同时设置了上下或左右,也就是说,对立定位方向属性同时有具体定位数值的时候,流体特性就发生了。此时,绝对定位元素的宽度就会随着包含块的宽度进行适应。这种情况下的绝对定位元素就和正常文档流的元素一样,可以使用margin:auto进行居中了。

display/float/position之间的三角关系

  1. 当元素设置成绝对定位或固定定位时,浮动属性无效,display也被改为block值。也就是说此时的元素都是块级元素。

  2. 如果display设置为none,此时元素消失,设置的position和float属性自然没有意义。

以上内容就是关于css中的position属性,希望能帮助到大家。

相关推荐:

css中的position属性

CSS position属性实例详解

CSS Position属性怎么使用的

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号