技术,只需要一分钟就能学会,却要用一辈子去精通

79 阅读4分钟

css 基础回顾

  • 盒模型
    • 外边距+边框+内边距+内容
  • 层叠
  • 相对单位

理解浏览器如何解析样式规则?

层叠规则: 1.样式表来源 2.选择器优先级 3.源码顺序

继承:1.文本相关属性 2. 列表属性 3. 表格边框属性

属性简写:font、background、flex、border、padding、margin、

相对单位

px 绝对单位 em 、rem 相对单位

绝对单位是早些年追求像素级完美的体验下的产物,随着技术的发展,更多新的设备涌现出来,像素级完美逐渐被抛弃,随之而来的是响应式开发。

在CSS 中,1em等于当前元素的字号,其准确值取决于作用的元素。

当用em来指定多重嵌套的元素的字号时,就会产生意外的结果。 为了算出每个元素的准确值,就需要知道继承的字号,如果这个 值是在父元素上用em定义的,就需要知道父元素的继承值,以此 类推,就会沿着DOM树一直往上查找。

当使用em给列表元素定义字号并且多级嵌套时,这个问题就显现 出来了。绝大部分Web开发人员曾遇到文字缩小了的问题。

正是这种问题让开发人员惧怕使用em。

rem是root em的缩写。rem不是相对于当前元素,而是相对于根元素的 单位。

与em相比,rem降低了复杂性。实际上,rem结合了px和em的优点,既 保留了相对单位的优势,又简单易用。那是不是应该全用rem,抛弃其 他选择呢?答案是否定的。

拿不准的时候,用rem设置字号,用px设置边框,用em设置 其他大部分属性。

响应式 媒体查询

略...

视口相对单位

什么是视口? 浏览器窗口可见部分的区域。不包括地址栏、工具栏、状态栏。

vh、vw、vmin、vmax

vw可以定义字号。

如果给一个元素加上font-size: 2vw会发生什么?在一个1200px的 桌面显示器上,计算值为24px(1200的2%)。在一个768px宽的平板 上,计算值约为15px(768的2%)。这样做的好处在于元素能够在这 两种大小之间平滑地过渡,这意味着不会在某个断点突然改变。当视 口大小改变时,元素会逐渐过渡。

calc()函数

calc()函数内可以对两个及其以上的值进行基本运算。当要结合不 同单位的值时,calc()特别实用。它支持的运算包括:加(+)、减 (-)、乘(×)、除(÷)。加号和减号两边必须有空白。

自定义属性

2015年,出现css 的自定义属性。你可以声明一个变量,为它赋一个值,然后在样式表的其他 地方引用这个值。这样不仅能减少样式表中的重复,而且还有其他好处。

变量名前面必须有两个连字符(--),用 来跟CSS属性区分,剩下的部分可以随意命名。

调用函数var()就能使用该变量。

动态改变自定义属性

看起来自定义属性只不过为减少重复代码提供了一种便捷方式,但是它真正的意义在于,自定义属性的声明能够层叠和继承: 可以在多个选择器中定义相同的变量,这个变量在网页的不同地方有 不同的值。

JavaScript可以改变自定义变量的值。

盒模型

box-sizing的默认值为content-box,这意味任何指定的宽或高都 只会设置内容盒子的大小。

将box-sizing设置为border-box后, height和width属性会设置内容、内边距以及边框的大小总和。

等高列

  1. 表格布局
  2. flex布局

精通布局

  1. 浮动
  2. flex布局
  3. 网格布局
  4. 定位
  5. 响应式

flex 和 网格 的不同之处

  1. Flexbox本质上是一维的,而网格是二维的。
  2. Flexbox是以内容为切入点由内向外工作的,而网格是以布局为切 入点从外向内工作的。

因为Flexbox是一维的,所以它很适合用在相似的元素组成的行(或 列)上。它支持用flex-wrap换行,但是没法让上一行元素跟下一行 元素对齐。

相反,网格是二维的,旨在解决一个轨道的元素跟另一个 轨道的元素对齐的问题。

定位和层叠

  1. 固定定位、相对定位、绝对定位
  2. 模态框和下拉菜单
  3. 三角形
  4. 粘性定位

高级

  1. 背景、阴影
  2. 渐变
  3. 混合
  4. 过渡
  5. 变换
  6. 动画、关键帧