day3 | 青训营

83 阅读5分钟

深入CSS(上) 

1.CSS 选择器的特异度

——哪条规则生效 

CSS选择器的特异度是用来确定样式应用的优先级的一种方式。它是根据选择器中的各种规则进行计算的。

特异度可以用一个三元组(a, b, c)来表示,其中a、b、c分别代表选择器中id选择器、类选择器和元素选择器的个数。

具体的计算规则如下:

  • 对于每个选择器,如果有id选择器,则a加1;
  • 对于每个选择器,如果有类选择器、伪类选择器或属性选择器,则b加1;
  • 对于每个选择器,如果有元素选择器或伪元素选择器,则c加1。

当比较两个选择器的特异度时,按照a、b、c的顺序进行比较。如果a的值相等,则比较b的值;如果b的值也相等,则比较c的值

2.CSS 继承

——某些属性会自动继承父元素的计算值-inherit显示继承/initial初始值 

  2.1CSS继承的使用

      2.1.1 使用属性的inherit值
对于大部分css属性来说,他的值都可以设置为inherit,即为继承其父元素的该属性的值。如:例子中的child div就会继承parentbackground-color属性。

...
<style>
    .parent{
        background-color: red;
    }
    
    .child{
        background-color: inherit;
    }
    ...
</style>
...
<body>
    <div class="parent">
        this is parent
        <id class="child">
        	this is child
        </id>
    </div>
</body>


区分inherit、initial和unset:

inherit: 继承;如果元素的某css值设置为inherit,则说明该元素的该css值与其父元素的该css属性值一致。适用于所有css属性。
initial: 默认值;适用于所有css属性,将设置为该值的css属性取该属性的默认值。
unset: 不设置;对于默认可以继承的属性取父元素的继承值,不可以继承的属性取默认值。

      2.1.2 默认继承的css属性 

  • 文本 color:颜色,a除外; 
  • direction:方向; 
  • font:字体;
  • font-family:字体系列;
  • font-size:字体大小; 
  • font-style:字体样式,如斜体; 
  • font-variant:用于设置小型大写字母; 
  • font-weight:用于设置字体粗体; 
  • letter-spacing:字母间距; 
  • line-height:行高; 
  • text-align:用于设置字体的对其方式; 
  • text-transform:用于修改大小写; 
  • visibility:可见性; 
  • white-space:用于指定如何处理空格; 
  • word-spacing:字间距。 

3.CSS 求值过程解析

属性的计算步骤分为四步:
1.确定声明值

2.层叠冲突(对样式表有冲突的声明使用层叠规则,确定css值)

3.使用继承(对仍然没有值的属性,若可以继承,则继承父元素的值)

4.使用默认值(对仍然没有值的属性,使用默认值)

4.CSS 布局方式及相关技术

——CSS(层叠样式表)是一种用于描述网页中元素布局和样式的标记语言。CSS 提供了多种布局方式和相关技术,以下是一些常见的布局方式和技术:

  1. 盒模型(Box Model):CSS 中的每个元素都被视为一个矩形的盒子,包括内容区、内边距、边框和外边距。通过设置这些属性,可以控制盒子的大小和间距。

  2. 流体布局(Fluid Layout):流体布局是一种可以根据浏览器窗口大小自动调整的布局方式。通过设置百分比或弹性单位(如remem)来定义元素的宽度和高度,使它们可以根据窗口大小进行自适应调整。

  3. 弹性盒子布局(Flexbox Layout):弹性盒子布局是一种用于创建灵活且自适应的布局方式。通过将容器设置为display: flex,可以以弹性盒子的形式排列其中的元素,实现对齐、分布和调整大小等功能。

  4. 网格布局(Grid Layout):网格布局是一种二维布局方式,可以将页面划分为行和列,并按照网格单元格进行布局。通过设置容器为display: grid,可以使用网格线来定位元素,实现复杂的布局结构。

  5. 定位(Positioning):CSS 提供了相对定位(position: relative)、绝对定位(position: absolute)和固定定位(position: fixed)等定位方式。

深入CSS (下) 

1.CSS 盒模型 - 行级

——行级排版上下文IFC 

1.特征: 

(1) 内容决定元素所占位置, 不可以通过 CSS 改变宽高. 

 (2) 行内元素会在一条直线上排列 ( 默认宽度只与内容有关 ) 都是同一行的, 水平方向排列. 

 (3) 行内元素设置 width 无效, height无效 ( 可以设置 line-height ) margin上下无效, padding上下无效. 

 (4) 行内元素不能包含块级元素, 只能包含文本或者其它行内元素. 

 (5) 文本默认不换行. 且会把文本元素内的回车变成一个空格即文本分隔符, 在代码中要让两个行级元素之间换行要用
进行, 若是用回车不会让它们换行, 且会在两个行级元素间产生一个空格 

 2.常用的行级元素 , , , ,

2.CSS 盒模型 - 块级 

——块级排版上下文BFC 

1.特征: 

(1) 独占一行, 从新行开始, 结束接着一个断行. 可以通过 CSS 改变宽高. 

(2) 默认宽度是它本身父容器的 100%, 和父元素的宽度一致 , 与内容无关, 垂直方向排列.

(3) 块级元素可以包含行内元素和块级元素 

2.常用的块级元素

,

,

    ,
      ,
    1. , ,  

      3.其他

      1)display属性:display属性用于控制元素在页面中的布局方式和显示方式。它有多个可能的取值,常用的取值包括:

      • block:元素将以块级元素的形式显示,即会独占一行。
      • inline:元素将作为内联元素显示,即不会独占一行,可以与其他元素在同一行显示。
      • inline-block:元素将以内联块元素的形式显示,即不会独占一行,但可以设置宽高等属性。
      • none:元素将不会显示,对应的空间也将被释放。

      2) flex box布局方式(二维 、常用)(justify-content align-items)

      3)Grid布局(单一行列划分网格)(grid line网格线 grid area网格区域)

      4)float浮动:有了flex box布局和grid布局后,其主用于图文环绕

      5)position属性 :static、relative、absolute、fixed

      学习css的几点建议:

      1.遵守MDN和W3C CSS规范;

       2.保持好奇心,善用浏览器的开发者工具; 

      3.持续学习,css新特性不断出现