当前位置: 首页 > news >正文

Position定位

Position定位

CSSposition属性是比较常用的元素定位方案,position常用的取值有staticrelativeabsolutefixedstickyinherit

static

static属性是HTML元素的默认值,即没有定位,遵循正常的文档流对象,对于topbottomleftrightz-index属性的设置都被忽略。
文档流,指的是盒子元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。
文本流,指的是文字元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。
脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位。

<div class="t1">static</div>
<style type="text/css">div{border: 1px solid #eee;}.t1{position: static;}
</style>

relative

relative是相对定位,元素的位置是相对其原本位置进行偏移,其不脱离文档流,对于topbottomleftrightz-index属性的设置有效,设置偏移属性后会移动相对定位元素,但它原本所占的空间不会改变,相对定位元素经常被用来作为绝对定位元素的容器块。

<div class="t2">relative</div>
<div>对比查看效果 元素原本占据空间没有变化 但relative会有偏移</div>
<style type="text/css">div{border: 1px solid #eee;}.t2{position: relative;bottom: -10px;}
</style>

absolute

absolute是绝对定位,元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>,通常的使用方案是在外层嵌套一层relative相对定位元素作为父元素,再设置绝对定位元素的偏移将会相对于外层的relative元素进行偏移,绝对定位完全脱离文档流与文本流,不占据文档空间,对于topbottomleftrightz-index属性的设置有效。

<div class="t3"><div class="t4">absolute</div>
</div>
<style type="text/css">div{border: 1px solid #eee;}.t3{height: 300px;position: relative;}.t4{position: absolute;top: 100px;}
</style>

fixed

fixed是固定定位,元素的位置相对于浏览器窗口是固定位置,即使是窗口滚动元素也不会移动,注意在<iframe>中的元素使用fixed是相对于<iframe>进行定位的,<iframe>类似于在页面中创建了一个新的浏览器窗口,固定定位完全脱离文档流与文本流,不占据文档空间,对于topbottomleftrightz-index属性的设置有效。

<div class="t5">fixed</div>
<style type="text/css">div{border: 1px solid #eee;}.t5{position: fixed;top: 300px;}
</style>

sticky

sticky是粘性定位,元素的位置是基于用户的滚动位置来定位,粘性定位的元素是依赖于用户的滚动,在position: relativeposition: fixed定位之间切换,在页面显示时sticky的表现类似于position: relative,而当页面滚动超出目标区域时sticky的表现类似于position: fixed,它会固定在目标位置,元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位,这个特定阈值指的是toprightbottomleft其中之一,必须通过指定toprightbottomleft四个阈值其中之一,才可使粘性定位生效,否则其行为与相对定位相同。

<div class="t6">sticky</div>
<style type="text/css">div{border: 1px solid #eee;}.t6{position: sticky;top: 0;}
</style>

inherit

inherit是通过继承父元素的position值来进行定位。

<div class="t7"><div class="t8">inherit</div>
</div>
<style type="text/css">div{border: 1px solid #eee;}.t7{position: relative;}.t8{position: inherit;bottom: -10px;}
</style>

代码示例

<!DOCTYPE html>
<html>
<head><title>position</title><style type="text/css">div{border: 1px solid #eee;margin: 5px 0;}.t1{position: static;}.t2{position: relative;bottom: -10px;}.t3{height: 300px;position: relative;}.t4{position: absolute;top: 100px;}.t5{position: fixed;top: 300px;}.t6{position: sticky;top: 0;}.t7{position: relative;}.t8{position: inherit;bottom: -10px;}</style>
</head>
<body><div class="t1">static</div><div class="t2">relative</div><div>对比查看效果 元素原本占据空间没有变化 但relative会有偏移</div><div class="t3"><div class="t4">absolute</div></div><div class="t5">fixed</div><div class="t6">sticky</div><div class="t7"><div class="t8">inherit</div></div><div style="height: 1000px">让浏览器出现滚动条</div>
</body>
</html>

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.zhihu.com/question/21911352
https://www.runoob.com/css/css-positioning.html
https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Normal_Flow

相关文章:

  • 深度学习之文本分类模型-基于transformer
  • Spring Web MVC入门
  • AI服务器相关知识
  • 有趣的数学 为什么绝对值和模都用两个竖线表示?
  • Python with语句
  • 大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路
  • AI作画工具介绍
  • 容器是什么?
  • 【linux】(6)文本处理sed
  • 《软件定义安全》之一:SDN和NFV:下一代网络的变革
  • Python Flask实现蓝图Blueprint配置和模块渲染
  • 【Python报错】已解决FileNotFoundError: [Errno 2] No such file or directory: ‘xxx‘
  • Golang Context详解
  • 风能远程管理ARMxy嵌入式系统深度解析
  • 软件游戏steam_api.dll丢失的解决方法,总结5种有效的方法
  • [iOS]Core Data浅析一 -- 启用Core Data
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES6--对象的扩展
  • ES6简单总结(搭配简单的讲解和小案例)
  • java2019面试题北京
  • Java反射-动态类加载和重新加载
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • mysql innodb 索引使用指南
  • Next.js之基础概念(二)
  • node 版本过低
  • Vue ES6 Jade Scss Webpack Gulp
  • 前端
  • 前端自动化解决方案
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 详解移动APP与web APP的区别
  • 一些css基础学习笔记
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 在Mac OS X上安装 Ruby运行环境
  • 走向全栈之MongoDB的使用
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #pragma pack(1)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (三) diretfbrc详解
  • (十五)使用Nexus创建Maven私服