深入浅出CSS | 青训营笔记

112 阅读5分钟

选择器的特异度

假如有多个不同的样式针对于同一个元素,那么会根据这些样式的特异度高低进行优先渲染
83936d1873f1e512b0fab1a4f38a9b9.png 1、优先级就是分配给指定的 CSS 声明的一个权重,它由匹配的选择器中的每一种选择器类型的数值决定。

2、而当优先级与多个 CSS 声明中任意一个声明的优先级相等的时候,CSS 中最后的那个声明将会被应用到元素上。

3、当同一个元素有多个声明的时候,优先级才会有意义。因为每一个直接作用于元素的 CSS 规则总是会接管/覆盖(take over)该元素从祖先元素继承而来的规则。

4、可以这样来看:选择器描述越具体越稀缺优先级越高,后面声明的比前面声明的选择器优先级高(同类型的选择器)。

继承

某些属性如果没有指定值,则会自动继承其父元素的值。

显式继承inherit

7580c12cb171754f003b9bc34cb4642.png

初始值

  • CSS 中,每个属性都有一个初始值
    • background-color 的初始值为 transparent
    • margin-left 的初始值为 0
  • 可以使用 initial 关键字显式重置为初始值
    • background-color: initial

CSS布局

在进行页面布局时主要考虑以下几方面:

(1)要有整体意识。

(2)从外向内,层层递进。

(3)模块化。

(4)命名规则。

相关技术

  • 常规流:行级、块级、表格布局、FlexBox、Grid布局,根元素、浮动和绝对定位的元素会脱离常规流
  • 浮动
  • 绝对定位

盒子模型

7cda6e7b6c1c641a0870561d3fc1dec.png

  • width:指定content box的宽度,取值有长度、百分比、auto(由浏览器根据其他属性决定)
  • height:指定content box的高度,取值有长度、百分比、auto(由内容计算得来),容器有指定高度时,百分数才生效
  • padding:指定元素四个方向的内边距,百分数是相对于容器的高度
  • border:指定容器边框样式、粗细和颜色
  • margin:指定元素四个方向的外边距,取值有长度、百分比、auto,百分数相对于容器宽度

块级、行级

  • 块级
    • 不和其他盒子并列摆放
    • 适用所有的盒模型属性

块元素在页面中以区域块的形式出现,每个块元素通常都会独自占据一整行或多个整行、可以对其设置宽度、高度、对齐等属性。

常见:元素有<h1>~<h6><p><div>、 <ul><ol><li>等,其中<div>标记是最典型的块元素。

  • 行级
    • 和其他行级盒子一起放在一行或者拆开成多行
    • 盒模型中的width、height不适用

行内元素也称为内联元素或内嵌元素, 一个行内元素通常会和其前后的其他行内元素显示在同一行中,不占独立的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构,一般不可以设置高度、对齐等属性,常用于控制页面中文本的样式。

常见的行内元素有<strong><b><em><i><del><s><ins><u><a><span>等, 其中<span>标记是最典型的行内元素。

display属性

display属性描述
block块级盒子
inline行级盒子
inline-block本身是行级,可以放在行盒中,可以设置宽高;作为一个整体不会被拆散成多行
none排版时完全被忽略

行级排版上下文

  • IFC 内的排版规则
    • 盒子在一行内水平摆放
    • 一行放不下时,换行显示
    • text-align 决定一行内盒子的水平对齐
    • vertical-align 决定一个盒子在行内的垂直对齐
    • 避开浮动(float)元素

块级排版上下文

  • 盒子从上到下摆放垂直
  • margin 合并
  • BFC 内盒子的margin不会与外面的合并
  • BFC 不会和浮动元素重叠

Flex布局

justify-content 盒子元素在横轴方向上的对齐样式 0e0e4f5b89600793db3a912ce7b38f5.png

align-items 盒子元素在纵轴方向上的对齐样式 58501cf02b992a2f4555a7cb08223b6.png

Grid布局

利用虚线划分网格来进行分割 a53eacf4f6116e12d3c67595690095a.png

float浮动

为了实现文字环绕图片的效果

positive

  • static:默认值

静态定位是元素默认的定位方式,是各个元素在HTML文档流中的默认位置:在静态定位方式中,无法通过位置偏移属性( top、 bottom、left或right )来改变元素的位置

  • relative:相对自身原本位置偏移,不脱离文件流
    • 在常规流里面布局
    • 相对于自己本应该在的位置进行偏移
    • 使用 top、left、bottom、right 设置偏移长度
    • 流内其它元素当它没有偏移一样布局

相对定位是普通文档流的一部分,相对于本元素在文档流原来出现位置的左上角进行定位,可以通过位置偏移属性改变元素的位置。虽然其移动到其他位置,但该元素仍占据原来未移动时的位置,该元素移动后会导致其覆盖其他的框元素。

  • absolute:绝对定位,相对非static祖先元素定位
    • 脱离常规流
    • 相对于最近的非 static 祖先定位
    • 不会对流内元素布局造成影响

绝对定位是脱离文档流的,不占据其原来未移动时的位置,是相对于父级元素或更高的祖先元素中有relative (相对)定位并且离本元素层级关系上最近元素的左上角进行定位。如果在祖先元素中没有设置relative定位时,就默认相对于body进行定位。

  • fixed:相对于视口绝对定位

固定定位是绝对定位的一种特殊形式, 是以浏览器窗口作为参照物来定义网页元素。当position属性的取值为fixed时,即可将元素的定位模式设置为固定定位。 当对元素设置固定定位后,该元索将脱离标准文档流的控制,始终依据浏览器窗口的左上角来定义自己的显示位置。不管浏览器滚动条如何滚动,也不管浏览器窗口的大小如何变化,该元素都会始终显示在浏览器窗口的固定位置。

写在最后:充分利用MCDW3C CSS规范