1. position属性

1.1 相对定位

1.1.1 块级元素

相对定位的元素并没有脱离文档流,只是在原有的位置上进行了视觉上的偏移

*{margin: 0;padding:0;
}
body{position: relative;
}
.box1,.box2,.box3{width: 200px;height: 100px;position: relative;
}
.box1{background: red;
}
.box2{background: black;/*对box2增加left和top,使其偏移原位置*/left: 20px;top: 20px;
}
.box3{background: gray;
}
/*html*/
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
复制代码

没有添加left和top:

给box2添加left和top:可以看到第三个元素并没有变化,说明第二个元素是占据文档流的

给box3添加cssleft: 20px;top: 20px;

因此可以总结为,元素仍在原文档流中保留有位置,只是发生了视觉上的偏移

1.1.2 行内元素

同理

行内元素在原文档流的基础上进行偏移

1.1.3 单位值与百分比

1.1.1中代码的left和top改为left:50%;top50%;,首先是块级元素:

box2向右偏移的距离为网页可视区的一半,行内元素同理

然而top的50%并没有起作用,按道理应该向下偏移300px的一半,控制台也显示150

暂时不明白原因,望大神告知

给三个box加上一个框:

/*定义框高度为300px*/
<div style="height: 300px;"><div class="box1">xgfdiv</div><div class="box2">dytjk</div><div class="box3">dtyk</div>
</div>
/*css*/
left: 50%;
top: 50%;
复制代码

box2向下偏移150px

1.2 绝对定位

1.2.1 定义

与相对定位不同,绝对定位是脱离原文档流的,绝对定位的元素会寻找有定位的父(祖)元素作为参照物,然后相对这个参照物来偏移。如果所有父(祖)元素都没有设置position属性值为relative或者absolute则该元素最终将对body进行位置偏移

1.2.2 块级元素

*{margin: 0;padding:0;
}body{position: relative;
}.box1,.box2,.box3{/*没有设置宽度*/height: 100px;
}.box1{background: red;
}
.box2{background: orange;position: absolute;left: 100px;top: 100px;
}
.box3{background: gray;
}
/*html*/
<div class="box1">dtyjkrtyj</div>
<div class="box2">good morning</div>
<div class="box3">rytjsdrty</div>
复制代码

给第二个box添加了绝对定位,这个box只能根据body进行定位偏移,并且box3出现在原本box2的位置上。css中都没有给box添加宽度,而没有添加绝对定位的box长度为100%(相对定位的元素也是100%),而box2宽度为auto,在这里随着标签里的文字长度而变化

1.2.3 行内元素

*{margin: 0;padding:0;
}
body{position: relative;
}
.box1,.box2,.box3{width: 100px;height: 100px;
}.box1{background: red;
}
.box2{background: orange;position: absolute;left: 100px;top: 100px;
}
.box3{background: gray;
}
/*html*/
<span class="box1">dtyjkrtyj</span>
<span class="box2">good morning</span>
<span class="box3">rytjsdrty</span>
复制代码

在添加绝对定位之前,宽度和高度对行内元素不起作用,而box2添加了绝对定位,则box2由行内元素变成块级元素,并进行偏移

1.2.4 单位值和百分比

*{margin: 0;padding:0;
}
body{position: relative;
}
.box1,.box2,.box3{width: 100px;height: 100px;
}.box1{background: red;
}
.box2{background: orange;position: absolute;left: 50%;top: 50%;
}
.box3{background: gray;
}
/*html*/
<div class="box1">dtyjkrtyj</div>
<div class="box2">good morning</div>
<div class="box3">rytjsdrty</div>
复制代码

对于块级元素,left的百分比值根据父元素宽度计算,top值,根据父元素高度计算,这里父元素高度为200px,一半就是100px

对于行内元素同理

1.2.5 padding和margin对绝对定位的影响

*{margin: 0;padding:0;
}
body{position: relative;
}
.main{width: 100px;position: relative;background: black;padding: 100px;}
.box1,.box2,.box3{width: 100px;height: 100px;
}
.box1{background: red;
}
.box2{background: orange;}
.box3{background: gray;
}
/*html*/
<div class="main"><div class="box1">dtyjkrtyj</div><div class="box2">good morning</div><div class="box3">rytjsdrty</div>
</div>
复制代码

三个box外面嵌套的父元素有10px的padding

给box2添加定位position: absolute;left: 50%;top: 50%;box2的left为父元素宽度的一半,top为200px,说明父元素有内边距时,绝对定位将内边距的距离也算进来了

但父元素增加margin后对box2绝对定位不影响,box2还是相对父元素的content进行绝对定位

1.3 fixed

1.3.1 定义

与absolute相同,fixed脱离原文档流,并以浏览器窗口进行定位,因而它的百分比值是固定的,不随页面滚动而移动,并会覆盖非定位、相对定位、绝对定位元素上,并且与绝对定位一样,设置的宽高对行内元素起作用

1.3.2

页面中可以设置多个fixed,并且在html中靠后的元素会覆盖在靠前的元素上

2. float

2.1

与1.2.5代码相同,仅做如下修改:

.main{width: 400px;height: 900px;position: relative;background: black;margin-left: 50px;
}
.box2{background: orange;float: left;
}
复制代码

给父元素增加外边距50px,box2没有浮动到父元素外边距上

2.2

将上述代码的外边距改为内边距padding-left:50px;

box2也没有浮动到父元素的内边距上

3. float与position

定位元素会覆盖在浮动元素上

3.1 float与相对定位共用时,

*{margin: 0;padding:0;
}
body{position: relative;
}
.main{width: 400px;height: 900px;position: relative;background: black;
}
.box1,.box2,.box3{width: 200px;height: 100px;
}
.box1{background: red;
}
.box2{background: orange;position: relative;left: 10px;top: 20px;float: left;
}
.box3{background: gray;
}
/*html*/
<div class="main"><div class="box1">dtyjkrtyj</div><div class="box2">good morning</div><div class="box3">rytjsdrty</div>
</div>
复制代码

给box2加上浮动和相对定位

加上浮动之后,box2脱离文档流,所以box3上移原box2的位置,而box2的相对定位属性依然起作用

3.2 浮动与绝对定位

3.2.1 两个共用时,float失效

3.2.2

与3.1代码相同,仅修改box2和box3的代码

.box2{background: orange;float: left;
}
.box3{background: gray;position: absolute;left: 10px;top: 20px;
}
复制代码

box3定义了绝对定位,在最上层,覆盖了浮动的box2

3.3 浮动与fixed共用时,浮动失效

关于position定位的总结相关推荐

  1. 元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是 一样的,说到底还是对z-index的理解比较模糊,可以解决问 ...

  2. 浅析CSS——元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  3. css - Position定位属性与层级关系

    今天同事发现一个有意思的问题,关于position的层级关系的,他要不说我也没注意过 测试后果然有趣,有待深入研究: 1 <!DOCTYPE html> 2 <html> 3 ...

  4. Bootstrap4+MySQL前后端综合实训-Day01-PM【position定位的四种方式、Flex布局语法教程及案例(概念、容器属性、项目属性)、双飞翼布局复习、Bootstrap4 教程】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 HTML中的三种元素(块元素.内联元素.内联块元素) position定位的四种方式 ...

  5. css 定位连线_CSS Position(定位)

    CSS Position(定位) CSS position属性用来指定元素如何在页面上定位,CSS Position(定位)的方式有以下几种:静态定位(static),绝对定位(absolute),相 ...

  6. (转)浅析CSS——元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  7. 教你玩转CSS Position(定位)

    目录 CSS Position(定位) static 定位 fixed 定位 relative 定位 absolute 定位 sticky 定位 重叠的元素 所有的CSS定位属性

  8. position定位——让人又爱又恨的属性

    关于css中的position这个属性,在使用的时候,有时很强大,有时又让人很无奈. 强大的时候,对于div中的一些小物件不方便使用margin或者padding的时候,给与position:abso ...

  9. 关于position定位下的各种属性说明!-softbar

    在这里详细讲解一下,希望能让更多的新手理解能够合理去理解position定位! 代码如下: .box2:"我"一直没有找到依靠.所以"我"会停靠在浏览器的左上方 ...

  10. Position定位

    Position定位 CSS中position属性是比较常用的元素定位方案,position常用的取值有static.relative.absolute.fixed.sticky.inherit. s ...

最新文章

  1. git stash 拉去_git操作命令符
  2. CF1526 D. Kill Anton
  3. .net中使用XPath语言在xml中判断是否存在节点值的方法
  4. 更好也更快!最先进的图像去模糊算法DeblurGAN-v2
  5. Ubuntu10.04中间Leach协议一键安装
  6. 修改ubuntu默认的Python版本号
  7. ASP.NET Core——身份验证UI安装
  8. 人脸识别+检索项目记录
  9. Android的activity的title设定内容
  10. 【java基础 3】树形结构数据呈现的递归算法实现
  11. hadoop之MapReducer作业的提交执行过程
  12. python导入自己写的py_10万行代码10万年薪,利用python查看自己写了多少代码!
  13. python换证件照底色
  14. plc中int数据类型范围_AB的PLC中,这些数据类型:INT、DINT、SINT、REAL和BOOL,分别代表什么意思?...
  15. 服务器怎么用ftp传文件夹吗,ftp服务器怎么传文件夹吗
  16. 刨根究底字符编码之七——ANSI编码与代码页(Code Page)
  17. sicp in python 资源
  18. python中IP处理模块IPy
  19. GB/T 20272-2006与GB/T 20008-2005
  20. 一篇浅显易懂的 TS 入门指南

热门文章

  1. Leetcode796.Rotate String旋转字符串
  2. linux 安装 PHP fileinfo 扩展
  3. 内存cgroup---CGroup中参数由来篇
  4. const的理解、const指针、指向const的指针
  5. Newton Raphson算法
  6. 动态加载js文件 document.createElement
  7. 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
  8. ai模仿声音软件_你准备好跟AI机器成为同事了吗?
  9. typora html代码无效,Typora优化-适合不懂CSS代码的小白
  10. android 链式结构,Android 架构师之路10 设计模式之责任链模式