css 特性 | 青训营笔记

66 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 12 天,还在新的组件上纠缠,所以继续昨天的css复习,这次是有关css的三大特性,还有一些我平时遇到的问题。

css 继承

  • css 继承是指子元素会继承父元素的样式。

继承条件:父元素的有关的文字属性会被继承,而非文字属性则不会被继承。

css 层叠

  • css 层叠是指当一个元素同时被多个样式影响时,会按照一定的规则来决定最终的样式。

层叠规则:当样式冲突,并且选择器优先级相同时,后面的样式会覆盖前面的样式。

css 优先级

  • css 优先级:!important > 内联样式 > id 选择器 > 类选择器 > 标签选择器 > 通配符选择器 > 浏览器默认样式 > 继承样式。

  • !important不能提高继承样式的优先级。

  • 尽量少用!important,因为它会使得代码难以维护。

  • 复合选择器的权重计算

分别比较两个复合选择器中各优先级选择器的个数,如果个数相同,则比较下一个优先级的选择器,直到找到个数不同的选择器,确定复合选择器的优先级

比较顺序为:(行内,id,类,标签)

每日查漏补缺

  1. box-sizing: border-box;:这个属性可以让我们设置的盒子宽高包括内边距和边框
  2. 脱离文档流的方式:float:left/rightposition:absolute/fixed会脱离文档流。 但是position:relative不会脱离文档流。
  3. css 画三角形:
  • 将盒子宽高设为 0,颜色设置突出一边的 border 颜色,就能得到一个三角形:
div {
  width: 0;
  height: 0;
  border: 20px solid transparent;
  border-top-color: red;
}
  1. css 书写顺序:布局定位属性 > 自身样式 > 文本样式 > 其他样式。注重 css 书写顺序可以减少浏览器 reflow,提高浏览器渲染性能。样例如下:
.box {
  /* 布局定位属性 */
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  /* 自身样式 */
  width: 100px;
  height: 100px;
  padding: 10px;
  margin: 10px;
  border: 1px solid #000;
  background: #fff;
  /* 文本样式 */
  font-size: 14px;
  font-weight: bold;
  color: #000;
  /* 其他样式 */
  cursor: pointer;
  opacity: 1;
}