CSS深入(一) | 青训营笔记

80 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

前言

今天主要学习了CSS中关于布局与定位的一些相关知识,包括有:

  • 盒模型是是什么?
  • 布局是什么?有哪些布局?
  • 定位是什么?有哪些定位?

一. 盒模型

HTML 元素可以看作是一个盒子(矩形区域),它包括:外边距、边框、内边距、内容,如下图:

image.png

  • Content - 内容
  • Padding - 内边距(填充)
  • Border - 边框
  • Margin - 外边距(边距)
  1. 盒子的大小

    使用 CSS 设置元素的宽度和高度属性时,只需设置内容区域的宽高。
    要计算元素盒模型的完整大小,还必须添加内外边距和边框

    • 盒子的宽度 = 内容宽度 + 左填充 + 右填充 + 左边框 + 右边框 + 左边距 + 右边距
    • 盒子的高度 = 内容高度 + 上填充 + 下填充 + 上边框 + 下边框 + 上边距 + 下边距

    用公式来表示就是

    • 元素宽 = margin-right + border-right + padding-right + width + padding-left + border-left + margin-left
    • 元素高 = margin-top + border-top + padding-top + height + padding-bottom + border-bottom + margin-bottom
  2. 盒模型的调试

    浏览器的 DevTools 为所选元素的盒模型计算提供了可视化界面,选择一个元素调试:

    image.png

  3. 块级与行内

    与前面的块级元素和行内元素相联系

    image.png

    image.png

二. 布局

1. 了解display属性

主要是两件事:确定它所应用的盒子是块级(block)还是行内(inline),其次是多元素的布局

1.1 弹性布局 - display: flex

这会使盒子会将保持在同一轴上,并且在空间不足时不仅不会换行,反而会挤在同一条线上。可以使用align-items,justify-contentflex-wrap属性来修改

1.2 网格 display: grid

grid 在很多方面与 flex 相似,但它能控制多轴布局而不是像 flex 那样的单轴布局。
一个网格的单位是fr

1.3 也可以设置为none,如果这三者都不设置,则元素以常规流的形式显示

1.4 display的隐藏效果

display: none;visibility:hidden; 的不同之处在于,前者看不见也摸不到,后者虽然被隐藏,但仍然占据着与之前相同的空间,也就是看不见摸得着

2. 定位

position属性可以改变元素在文档的正常流中的行为方式,以及与其他元素的关系。可选项有relative、和absolute,默认值为。fixed | sticky | static

  • 静态定位 - static,默认值,不受 top、bottom、left 和 right 属性的影响
  • 相对定位 - relative,相对于原来位置移动,占原来空间
  • 绝对定位 - absolute,相对于最近定位的祖先位置移动,从常规流中移除,可以与元素重叠
  • 固定定位 - flxed,相对于视口(viewport)定位,即使页面滚动,它也始终停留在同一个位置