一、static定位

没有定位,遵循正常的文档流对象,不会受到 top, bottom, left, right影响。

.static {position: static;/*默认*/width: 100px;height: 100px;border: 3px solid #73AD21;}

二、相对定位

相对该元素原本文档流的位置进行定位,且原本的位置保留。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style>.box1,.box2,.box3{display: flex;align-items: center;justify-content: center;}.box1 {width: 100px;height: 100px;border: 1px solid #73AD21;}.box2{position: relative;/*相对定位*/width: 100px;height: 100px;   border: 1px solid yellow;top: 100px;left: 100px;}.box3{width: 100px;height: 100px;  border: 1px solid green;}</style></head><body><div class="box1">盒子一</div><div class="box2">盒子二</div><div class="box3">盒子三</div></body>
</html>


如果说:将盒子二的定位模式改为默认

很明显,相对定位是相对于原本文档流的位置进行定位的,且原有位置是保留的,其他元素无法占用。至于具体定位规则在下面会具体解释。

三、绝对定位

绝对定位是相对于父组件(前提是该组件是相对、绝对、固定定位的),如果父组件不是相对定位的,则继续向上找,直到找到顶级组件(浏览器)进行定位。且父组件位于那一层,则子组件就位于那一层

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>绝对定位</title><style>.box1{width: 400px;height: 400px;border: 1px solid red;}.box2{position: relative;/*相对定位*/width: 300px;height: 300px;border: 1px solid yellow;top: 50px;left: 50px;}.box3{position: absolute;/*绝对定位*/width: 200px;height: 200px;border: 1px solid green;top: 50px;left: 50px;background-color: green;}</style></head><body><div class="box1"><div class="box2">//父组件<div class="box3">//子组件</div></div></div></body>
</html>

根据规则,box2是box3的父组件,所以定位是相对于box2进行定位的。

如果说:把box1作为box3的父组件时(box1为相对定位,box3为绝对定位,box2为默认)。 为了效果更明显,box2设置外边框为50px,其他条件不变

很明显:是相对于box1进行定位的。

如果说找不到对应的父组件时,父组件为浏览器

解释:父组件位于那一层,则子组件就位于那一层

     <style>.box1{width: 400px;height: 400px;background-color: red;}.box2{position: relative;width: 300px;height: 300px;background-color: yellow;top: 50px;left: 50px;z-index: -1;/*层数*/}.box3{position: absolute;width: 200px;height: 200px;top: 50px;left: 50px;background-color: green; }</style><div class="box1"><div class="box2"><div class="box3"></div></div></div>


box3的背景颜色很明显没有显示出来,因为其父组件在-1层。而box1默认在第0层所以显示不了。改变子组件的层数也是一样的。

此时应该修改父组件的层数使其超过上一个盒子的层数

四、固定定位

参照物是浏览器,且原有位置(文档流位置)被消除,其他元素会忽略它的存在。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style>.box{position: fixed;width: 100%;height: 20px;background-color: yellowgreen;top: 100px;left: 10px;}</style></head><body><div class="box"></div> </body>
</html>

五、sticky定位

该定位是介于相对定位和绝对定位之间

元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>div.sticky {position: sticky;top: 0;/*阈值*/padding: 5px;background-color: #cae8ca;border: 2px solid #4CAF50;}</style></head><body><p>顶部</p><div class="sticky">我是粘性定位!</div><div style="padding-bottom:2000px"><p>滚动我</p><p>来回滚动我</p><p>滚动我</p><p>来回滚动我</p><p>滚动我</p><p>来回滚动我</p></div></body></html>

超过阈值时

六、定位规则

步骤一:选定参照物

  • 相对定位:文档流
  • 绝对定位:处在浮游层的父组件
  • 固定定位:浏览器

步骤二:选取参考点(一般通过本身元素查找)

举例(绝对定位):

<head><meta charset="utf-8" /><title>绝对定位</title><style>.box1{/*父组件*/position: relative;width: 400px;height: 400px;border: 1px solid red;}.box2{width: 300px;height: 300px;border: 1px solid yellow;margin: 50px;   }.box3{/*子组件*/position: absolute;width: 200px;height: 200px;border: 1px solid green;/** 通过下面可得参照点是父组件的左上角* 找到父组件的左上角后,* 如果值是负的,则沿父组件对应边的反方向运动对应距离,正则相反。* (比如top:50px;left: 50px;)* 已知参照点为左上角,因为是top,且该值为正,故沿边方向移动(向下)移动50px* left,向右移动50px。* 此时,做延长线,相交点即为子组件的左上角,然后通过子组件的width,height绘制。*/top: 50px;/*上*/left: 50px;/*左*/}</style></head><body><div class="box1"><div class="box2"><div class="box3"></div></div></div></body>
</html>


其他的定位方法都一样的,只要找对参照物及参照点及可。

注意:
        上面的第二部分相对定位中,看图片很明显,第二个盒子的一条边与第三个盒子的边右重叠,这是因为盒子我定义了有边框为1px,所以实际的盒子长度要加上边框的长度。

欢迎访问我的个人博客

CSS五种定位(相对定位、绝对定位、固定定位、static定位、sticky 定位)模式学习笔记相关推荐

  1. 相对定位 绝对定位 固定定位 粘性定位 居中的三种方法 calc函数标签的使用方法

    相对定位 绝对定位 固定定位 粘性定位 居中的三种方法 calc函数标签的使用方法 一.相对定位:position:relative; 二.绝对定位:position:absolute; 1.找参照物 ...

  2. 相对定位绝对定位固定定位元素的层级

    相对定位&绝对定位&固定定位&元素的层级&opacity元素的透明背景 相对定位 <!DOCTYPE html> <html lang="e ...

  3. CSS 五种方式实现 Footer 置底

    CSS 五种方式实现 Footer 置底 页脚置底(Sticky footer) 就是让网页的footer部分始终在浏览器窗口的底部. 当网页内容足够长以至超出浏览器可视高度时,页脚会随着内容被推到网 ...

  4. Windows保护模式学习笔记(五)—— 任务段任务门

    Windows保护模式学习笔记(五)-- 任务段&任务门 要点回顾 任务段 TSS (Task-state segment ) TR段寄存器 TR段寄存器的读写 TSS段描述符 实验:加载自定 ...

  5. HTML+CSS---定位(相对定位--绝对定位--固定定位--设置元素的层叠顺序)---表单---设置光标样式---透明度(opacity属性定义元素的不透明度--IE的半透明滤镜)---外边线

    文章目录 定位 静态定位(static) 相对定位(relative) 绝对定位(absolute) 固定定位(fixed) 设置元素的层叠顺序 表单 设置光标样式 透明度 opacity属性定义元素 ...

  6. 定位的坐标原点HTML,css固定定位_CSS绝对定位固定定位详解

    摘要 腾兴网为您分享:CSS绝对定位固定定位详解,智学网,鱼乐贝贝,优酷,瑞易生活等软件知识,以及安卓微信多开,特效视频,微贷网app,勿忘我3dm,有为学堂,火力牛,手机知网,移动小秘书,快学堂,p ...

  7. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  8. CSS五种水平居中:text-align margin incline-block flex relative

    方法一text-align:针对于文字 <!DOCTYPE html> <html lang="en"> <head><meta char ...

  9. HTML+CSS 五种布局方式

    已知布局元素的高度,写出三栏布局,要求左栏.右栏宽度各为300px,中间自适应. 一.浮动布局 <!DOCTYPE html> <html> <head><m ...

  10. footer.php置底,CSS五种方式实现Footer置底

    页脚置底(Sticky footer)就是让网页的footer部分始终在浏览器窗口的底部. 当网页内容足够长以至超出浏览器可视高度时,页脚会随着内容被推到网页底部: 但如果网页内容不够长,置底的页脚就 ...

最新文章

  1. redis 计数器 java_Redis 实践汇总和使用建议。
  2. VC 编译器的C++关键字 __super
  3. XDJM的情意比山高,比海深!!
  4. java冒泡排序_冒泡排序不会写,怎么当程序员?细说经典java算法——冒泡排序...
  5. js设计模式之Constructor(构造器)
  6. 解决phpcms模版设置中不能显示栏目首页模板,栏目列表页模板,内容页模板等下拉菜单选项的问题!...
  7. Springboot项目搭建(前端到数据库,超详细,附详细步骤截图)
  8. 高斯分布matlab程序,生成高斯分布的matlab程序
  9. 不用媒体查询做web响应式设计-遁地龙卷风
  10. JavaScript简单计算器
  11. Flash cs4 for mac 序列号。
  12. java 围棋_围棋冠军都输了?用Java编写的智能围棋战力惊人?
  13. html网页综合项目实战
  14. (转)宅男程序员福利:来自纽约的28位智慧与美貌并存的IT女神
  15. Frosty the snowman(圣诞英文歌曲)铃声 Frosty the snowman...
  16. Oracle SQL
  17. C4D快速入门教程——软件界面介绍
  18. Kubernetes如何被应用在华为
  19. 网络安全工程师(渗透运维)难学吗?
  20. 信捷PLC中Y0用C语言怎么表示,信捷PLC

热门文章

  1. 谈谈Linux下动态库查找路径的问题
  2. %99的C语言初学者都会犯的错误——奇妙的数组(玄学)
  3. 全国自然保护区生态功能区分布数据
  4. 计算机在经济管理中的应用,现代经济管理中计算机技术的运用
  5. java mybatis配置,mybatis配置——Java版
  6. 河南省第九届省赛信道安全--Dijkstra最长路
  7. Redraiment猜想----米勒拉宾+分块打表
  8. php百度地图api的geocoder,百度地图API提供Geocoder类
  9. mysql client 升级_解决consider upgrading MySQL client问题
  10. dbml mysql_深度好文:全方位了解MLDB数据库