CSS的个人笔记 | 青训营笔记

92 阅读2分钟

这是我参与[第四届青训营]笔记创作活动的第1天,对于今天的课程,我总结了一些自己认为还不够了解的地方

CSS渲染

Untitled.png

Untitled.png

CSS渲染的过程分为如下步骤:

  1. 首先将所有的CSS(内联,内部,外部)都混合在一起,然后和DOM tree一起通过过滤,选择声明有效值
  2. 根据CSS选择器的优先级,筛选出优先级最高的样式。
  3. 在筛选出DOM tree的样式后,会对元素没有样式的值设置为默认值或继承父元素的值。
  4. 在所有元素的样式都确定好后,将相对值进行转化,例如em转化为px
  5. 之后再将百分比的值转换为绝对值
  6. 转换后的值可能有小数,这时便会将小数值转换为整数值

属性的继承

定义:特定的一些属性可能会向下传递到子孙元素。
可以继承的属性有:text-indent、text-align、line-hegiht、word-spacing、letter-spacing、text-transform、visibility、color、cursor。
除此之外,还可以利用inherit进行显性继承

/* 设置二级标题的颜色为绿色 */
h2 { color: green; }

/* 但如果h2的父组件颜色是其他颜色,则会继承父组件的颜色 */
#sidebar h2 { color: inherit; }

Border的其他用法

border除了能够设置盒子边框外,还能用于写三角形
在我们通常设置border的时候,最终显示的如下图所示

1049484-20170310143057936-322961053.png 当我们把border再缩小一点,会发现逐渐呈现为梯形

1049484-20170310143059295-919080129.png 当我们把大小设置为0时,我们可以看到有4个颜色不同的三角形,那么我们就可以利用这个原理,去控制这四个方向的border,来实现自己想要的三角形

1049484-20170315173342338-1063677488.png

BFC

本质:是块级一种渲染规则,与其他普通元素不在同一个维度空间,元素内的子元素不受外界干扰,同时也不干扰外部
特点:

  • 内部的盒子都是呈块状,一个个的放置
  • 相邻的box的上下margin会相互合并,取两者的最大值
  • 计算高度时,会把浮动元素也计算在内
  • 并且不会与外部的float元素重叠

实现方法

  • 将盒子设置为浮动元素
  • 将元素设置为绝对定位元素(fixed or absolute)
  • 将overflow设置成除visible以外的值