📔
饥人谷前端体系课程笔记
黑马程序员笔记前端面试押题前端精进
  • 课程大纲
  • Git入门
    • 3. 软件安装详解
    • 4. Mac环境搭建
    • 5. 命令行入门
    • 6. 本地仓库
    • 7. Git远程仓库-GitHub
  • HTML全解
    • 8. HTML概览
    • 9. HTML标签
    • 10. HTML重难点
    • 11. HTML实践 & 手机调试
  • CSS全解
    • 12. CSS基础
    • 13. CSS布局(上)
    • 14. CSS布局(下)
    • 15. CSS定位
    • 16. CSS动画
  • HTTP全解
    • 17. URL 是什么
    • 18. 请求和响应 & Node.js Server
  • JS全解
    • 19. JavaScript概览
    • 20. 内存图与JS世界(精品课)
    • 21. Canvas 实践—画图板
    • 22. JS语法
    • 23. JS数据类型
    • 24. JS 对象
    • 25. JS 对象分类
    • 26. JS 数组
    • 27. JS 函数
    • 28. JS 实战,会动的代码
    • 29. JS运算符
    • 30. JS总结
  • JS编程接口
    • 31. DOM编程
    • 32. 手写DOM库
    • 33. JQuery中的设计模式(上)
    • 34. JQuery中的设计模式(下)
    • 35. DOM事件与事件委托
  • 项目 前端导航站点
    • 前端导航项目笔记
  • 前后分离
    • 40. AJAX的原理
    • 41. 异步与Promise
    • 42. 跨域、CORS、JSONP
    • 43. 静态服务器
    • 44. AJAX实战:Cookie、Session
  • JS进阶MVC
    • 48. MVC(上)
    • 49. MVC(中)
    • 50. MVC(下)
  • 项目构建
    • 51. Webpack(上)
    • 52. Webpack(下)
  • 算法与数据结构
    • 62. 伪代码与流程图
  • React全解
    • 75. React起手式
    • 76. React类组件和函数组件
    • 77. Class组件详解
    • 78. 函数组件
    • 79. Hooks原理解析
    • 80. Hooks各个击破
    • 81. 精通Redux
  • Node.js
    • 84. Node.js技术架构
    • 85. 文件模块
    • 86. 单元测试之文件模块
    • 87. 调试 Node.js 程序
    • 88. 静态服务器
    • 89. 命令行翻译工具
    • 90. 操作数据库
    • 91. 数据库基础知识
    • 92. Stream 流
    • 93. child_process
    • 94. 总结
  • TypeScript
    • 112. 基础
    • 113. 泛型
  • Next.js全解
    • Next.js 上
    • Next.js 下
  • ES6精讲
    • Promise,async/await
  • 大屏可视化笔记
    • 大屏可视化项目
  • SCSS全解
    • SCSS全解
  • 拓展
    • 一次性弄懂性能优化
    • Web性能优化
由 GitBook 提供支持
在本页
  • 15. CSS定位
  • 一个div的分层
  • 布局和定位有啥区别?
  • 背景的范围是从哪儿到哪儿?
  • 从左边看一个div,是什么样子?
  • position的五个取值
  • 新属性-position
  • position:relative
  • 使用场景
  • 配合z-index
  • 经验
  • position:absolute
  • 使用场景
  • 配合z-index
  • 经验
  • position:fixed
  • 使用场景
  • 配合z-index
  • 经验
  • 层叠上下文
  • 问题:z-index:10和z-index:5哪个高?
  • 比喻
  • 哪些不正交的属性可以创建它

这有帮助吗?

  1. CSS全解

15. CSS定位

15. CSS定位

一个div的分层

布局和定位有啥区别?

  • 布局是屏幕平面上的

  • 定位是垂直于屏幕的

还得从文档流和盒模型说起,这两个概念很重要

背景的范围是从哪儿到哪儿?

A.border内边沿围成的区域

B.border外边沿围成的区域 ✅

如何验证自己的猜想?border半透明试试

.demo{
  box-sizing:border-box;
  margin: 12px;
  border:5px solid rgba(255,0,0,1);<========
  padding: 22px;
  width:100px;
  height:100px;
  background:blue;
}

从左边看一个div,是什么样子?

background在文字后面

然后呢?文字在最上层,border在第二层,背景在最后一层

如何验证自己的猜想?用代码证明即可。

.demo{
  box-sizing:border-box;
  margin: 12px;
  border:5px solid rgba(255,0,0,1);
  padding: 22px;
  width:100px;
  height:100px;
  background:blue;
}
.text{
  font-size:100px;
}

https://jsbin.com/xubugun/edit?html,css,output

浮动div要比正常的div高,因为脱离了正常的文档流,文字总是在最高层。

文字按照出现顺序,后来的会盖住前面的

浮动元素脱离文档流,其实就是浮起来一点点

position的五个取值

新属性-position

position

  • static默认值,待在文档流里

  • relative相对定位,升起来,但不脱离文档流

  • absolute绝对定位,定位基准是祖先里的非static

  • fixed固定定位,定位基准是viewport(有诈)

  • sticky粘滞键,不好描述直接举例

经验

  • 如果你写了absolute,一般都得补一个relative

  • 如果你写了absolute或fixed,一定要补top和left

  • sticky兼容性很差,主要用于面试装逼

position:relative

使用场景

  • 用于做位移(很少用)

    https://jsbin.com/nobetah/edit?html,css,output

  • 用于做absolute元素做爸爸

配合z-index

  • z-index:auto默认值,auto计算出来的值是0,但是auto和0是不一样的。不创建新层叠上下文

  • z-index: 0 / 1 / 2

  • z-index: -1 / -2

经验

  • 写z-index: 9999的都是彩笔

  • 学会管理z-index

https://jsbin.com/nobetah/3/edit?html,css,output

position:absolute

使用场景

  • 脱离原来的位置,另起一层,比如对话框的关闭按钮。

  • absolute的元素会找爸爸元素(relative),相对爸爸元素来定位。

https://jsbin.com/nobetah/4/edit?html,css,output

  • 鼠标提示

https://jsbin.com/nobetah/5/edit?html,css,output

配合z-index

经验

  • 很多彩笔都以为absolute是相对于relative定位的

absolute相对于祖先元素中最近的一个定位元素(只要不是static就是定位元素)

  • 某些浏览器如果不写top/left会位置错乱

  • 善用left:100%

  • 善用left:50%;加负margin(居中)

  • transform:translateX(-50%)

position:fixed

相对于视口来定位,也就是用户可以看到的区域,但是如果使用transform:scale(0.9),就可以打破这条规定(很蛋疼还坑)。所以不要把fixed放到有transform的元素里面,容易影响

使用场景

  • 烦人的广告

  • 回到顶部按钮

https://jsbin.com/pusupem/1/edit?html,css,output

配合z-index

经验

  • 手机上尽量不要用这个属性,坑很多

  • 不信你搜索一下“移动端fixed”

sticky粘滞定位,不好描述直接举例

https://jsbin.com/pusupem/2/edit?html,css,output

层叠上下文

如果z-index是-1,直接跑到最下面一层,比背景还要下面。z-index如果是正的,数值越大越上面

问题:z-index:10和z-index:5哪个高?

1.前者高 2. 后者高 3. 一样高 4. 看情况

要看情况,如果z-index:10在一个z-index:1的元素中,那么z-index:5高

https://jsbin.com/vacesud/1/edit?html,css,output

position:relative
z-index:0

上面这段代码就可以创建层叠上下文

比喻

每个层叠上下文就是一个新的小世界(作用域)

这个小世界里面的z-index跟外界无关

处在同一个小世界的z-index才能比较

哪些不正交的属性可以创建它

MDN文档有写

https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context

需要记忆的有z-index/flex/opacity/transform

知道这些知识的面试官也不太多,不用花时间背

忘了就搜“层叠上下文MDN”

你说CSS为什么不单独创建一个属性做这个事

opacity:0.5<========会影响所有的元素
background:rgba(255,0,0,0.5)<=========只会影响背景色
上一页14. CSS布局(下)下一页16. CSS动画

最后更新于3年前

这有帮助吗?

Screen Shot 2021-12-21 at 11.00.55 AM
Screen Shot 2021-12-21 at 12.25.56 PM
Screen Shot 2021-12-21 at 12.26.14 PM
Screen Shot 2021-12-21 at 12.56.12 PM
Screen Shot 2021-12-21 at 1.02.38 PM
Screen Shot 2021-12-21 at 1.10.50 PM
Screen Shot 2021-12-26 at 4.41.53 AM
Screen Shot 2021-12-21 at 12.48.12 PM