👨‍💻
Hong's 前端笔记
  • 🌈About
  • JavaScript
    • 作用域
    • 闭包
    • this
      • bind()
    • 原型
      • Object.create()
      • 模拟“类”
      • ES6 Class
      • Function
    • 对象
    • 类型 & 值
      • 原生函数
      • 数组
      • 字符串
    • 异步
    • JavaScript 相关概念
      • Event Loop 事件循环
      • Prototype 原型
      • Context 执行上下文
      • this
      • Promise
    • JavaScript 常见问题
      • 手写实现
      • 看代码输出
  • React
    • 核心概念
    • 深入理解
      • State
      • 如何管理 State
      • React 渲染过程
      • 处理 DOM 事件
      • Pure 组件
      • Context
      • Key 属性
      • React.lazy()
      • Render Props
    • Hooks
      • useState
      • useRef
      • useEffect
        • Some details
      • 相关概念
      • 自定义 Hook
      • useEffect vs useLayoutEffect
    • React 相关问题
      • Class vs Function
  • React Libraries
    • Redux
      • Quick Start
      • 如何持久化 Redux 数据
      • 异步操作
      • 性能优化
      • Dive into immutability
    • Route v6
      • Quick Start
  • Reactivity
    • Immer
  • Vue
    • 深入理解
      • Composition vs Options
      • Reactivity
  • Network
    • Cookies
    • HTTP
    • HTTPS
    • CORS 跨域资源共享
    • 认证手段
    • 安全相关
    • 网络相关知识
  • Browser
    • DOM 操作
    • Events 事件
    • XHR & Fetch
    • 性能优化
    • HTML 相关概念
    • 浏览器相关概念
  • CSS
    • 盒模型
    • Layout 布局
    • Styles 样式
    • CSS 相关概念
    • CSS 相关技巧
      • 移动端适配
      • Flex
      • 动画
  • TypeScript
    • Quick Peek
    • Types in TypeScript
    • Narrowing
    • Functions in TypeScript
  • Workflow
    • Webpack
      • Webpack 概念
      • 资源管理
      • 管理输出
      • 开发环境配置
      • 生产环境配置
      • 优化代码运行性能
  • Others
    • 小程序与原生 Web 的区别
  • SSO
    • About
    • API Doc
    • 接入指南
Powered by GitBook
On this page
  • position 属性
  • 浮动 float
Edit on GitHub
  1. CSS

Layout 布局

Last updated 3 years ago

position 属性

static

static 是默认样式。

relative

元素不会被移除文档流,仍然会占据原始空间。发生偏移时,是相对原始位置的偏移。

absolute

元素被拿出文档流,其余元素重新定位。发生偏移时,是根据其包含块(即最近的非 static 祖先元素,若不存在,即根据 html 元素)进行偏移。

fixed

与 absolute 类似,偏移根据浏览器窗口本身。

sticky

是 relative 和 fixed 的结合。当元素滚动到特定偏移位置时(相对浏览器窗口,就保持不动)。

浮动 float

盒子向左 / 右移动,直到其外边沿接触包含块的边缘,或接触到另一个浮动元素的边缘。

浮动的元素也会脱离正常文档流,其他元素**几乎**当它不存在。

之所以说其他元素会几乎当浮动元素不存在是因为,文字并不会忽略 float 的元素。

clear 属性

控制元素是否移动到他之前浮动元素的下方。

当元素应用了 clear 属性后,实际上浏览器给这个元素应用了一个 margin-top 来让他被推倒 float 元素的下方。因此,你想要自行添加一个额外的 margin-top,这个 margin-top 的值是相对于前一个元素,而不是被 float 的元素。

#container p:nth-of-type(2) {
    clear: left;
    margin-top: 100px;
}

此外,如果一个元素里只有一个 float 元素,父元素的高度会是 0 ,因此可以通过 ::after 伪元素,在父元素末尾添加一个空内容,并且设置 clear 为 both。

#container::after {
    content: "";
    display: block;
    clear: both;
}