网站首页 > 技术文章 正文
定义
CSS position属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置,z-index属性则决定了该元素所在的层级。
定位类型
1. static: 静态定位(默认值),元素出现在正常的文档流中(元素的top,left,bottom,right以及z-index声明无效)。
2. relative:相对定位,即元素相对于自身的位置进行定位,可以理解为元素相对自身的位置设置相应的偏移量(top, lefft等值)。
.element {
position: relative;
top: 100px;
left: 50px;
}
在上述例子中,元素element 会相对于自身位置发生向下100px,向右50px的偏移。
3. absolute:绝对定位,即元素的位置相对于祖先元素中第一个非静态定位的元素的位置定位。绝对定位元素会被移出正常文档流。
.parent {
position: relative;
width: 100%;
height: 500px;
.element {
position: absolute;
top: 100px;
left: 0;
}
}
在上述例子中,元素element 始终固定在父元素的top:100px, left: 0的位置。
4. fixed: 固定定位,即元素的位置相对于浏览器的窗口进行定位。但是,当父级元素追踪设置了transform属性并且值不为none时,子元素的position: fixed就会失效。这是因为,**当元素祖先的 transform 属性非 none 时,定位容器由视口改为该祖先**。固定定位元素会被移出正常文档流。
.element {
position: fixed;
top: 100px;
left: 100px;
}
在上述例子中,元素element 始终固定在相对于浏览器视口的top: 100px, left: 100px位置。
5. inherit: 规定应该从父元素继承 position 属性的值。
6. sticky: 粘性定位,即元素相对于父元素的定位定位。一个sticky元素会“固定”在离它最近的一个拥有“滚动机制”的祖先上。必须指定 top, right, bottom 或 left 四个属性中的其中一个,粘性定位才会生效。否则其行为与相对定位相同。且元素不会脱离文档流,该值总是创建一个新的层叠上下文(stacking context)。
.parent {
width: 100%;
height: 500px;
overflow: auto;
.element {
position: sticky;
position: -webkit-sticky;
top: 100px;
left: 0;
}
}
在上述例子中,元素element 始终会固定在父元素的top为100px,left为0px的位置,直到 viewport 视口回滚到阈值以下。
兼容性

Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix 。目前在sticky属性对各大浏览器都都比较友好的支持,但是在table(thead, tr)中仍然存在一下bug。
已知bugs:
- 在safari中,父元素设置 `overflow: auto`, 将会使sticky失效
- Firefox 58及以下版本,Chrome 63及以下版本和Safari 7及以下版本似乎不支持粘性表格标题。
并且,在小程序中,你仍然可以使用sticky属性,这在封装导航组件时非常有用
本为已同步到个人博客网站, 更好的阅读体验,请打开https://www.gogoing.site/index.html
- 上一篇: Playwright入门
- 下一篇: Python BS4解析库用法详解
猜你喜欢
- 2025-01-06 CSS实现常见元素水平、垂直居中
- 2025-01-06 采用后端代码方式实现对Html元素封装与输出
- 2025-01-06 HTML页面基本结构和加载过程
- 2025-01-06 带你了解用5个div让你闯进弹性布局
- 2025-01-06 前端入门——浮动float
- 2025-01-06 简析JS中Document与CSS
- 2025-01-06 CSS样式优先级怎样划分?【CSS优先级规则】
- 2025-01-06 谷歌F12开发者工具面板解析操作
- 2025-01-06 这8个卡片设计方法,你还真不一定知道
- 2025-01-06 「CSS三种居中方案全解」CSS垂直居中常用方法集结
- 05-16在实际操作过程中如何避免出现SQL注入漏洞
- 05-16MySQL中 in数量限制
- 05-16一文讲懂SQL筛选子句HAVING子句
- 05-16性能调优实战:Spring Boot 多线程处理SQL IN语句大量值的优化方案
- 05-16sqlserver数据库中的模糊查询like和通配符的使用
- 05-16SQL必备 和 表关联
- 05-16SQL Server优化50法
- 05-16他们一直都在!最新强军大片来了
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- js数组插入 (83)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)