《深入理解CSS》| 青训营

一、选择器的优先级

CSS中可以写很多选择器,可以根据id更改内容的样式,也可以改整个标签内容的样式。当多个选择器作用在同一个元素的时候,元素样式将根据选择器特异度变化。这里特异度指的是越特殊的选择器,优先级越高。

上图中,id、伪类、标签数量越多,特异度越高。

举例: 利用选择器的优先级,可以很好地实现按钮复用(只需更改样式,便能区分两个相同的按钮)

二、继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值

说明:strong标签继承了p标签的颜色。与文字相关的属性都是可以继承的,与盒模型(宽度)相关的属性不可继承。

显式继承:关键字inherit,可以让原本不可继承的属性变成可继承的

说明:*是通配符,表示所有标签。box-sizing属性用于定义盒子的宽度值和高度值是否包含元素的内边距和边框。content-box:浏览器对盒模型的解释遵从W3C标准,当定义width和height时,它的参数值不包括border和padding。 border-box:当定义width和height时,border和padding的参数值被包含在width和height之内。

三、初始值

  • CSS中,每个属性都有一个初始值

    background-color的初始值为transparent

    margin-left的初始值为0

  • 可以使用initial关键字显式重置为初始值

    background-color:initial

四、CSS求值过程

五、布局(Layout)是什么?

  • 确定内容的大小和位置的算法
  • 依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术

  • 常规流

    行级、块级、表格布局、FlexBox、Grid布局

  • 浮动

  • 绝对定位

说明:width 指定content box宽度,取值为长度、百分数、auto,aotu由浏览器根据其他属性确定,百分数相对于容器的content box宽度。容器有指定的高度时,百分数才生效。

说明:padding 指定元素四个方向的内边距,百分数相对于容器宽度(顺时针)。 border 指定容器边框样式、粗细和颜色

当四条边框颜色不同时可以显示出一个三角形。

margin:auto水平居中

margin collapse 外边距叠加,上下两div(上定义有margin-bottom, 下有margin-top): 叠加取较大的margin值margin在垂直方向上有边界的合并。

区别:box-sizing:border-box;

文字超出部分可以用overflow -visible -hidden -scroll

六、行级vs块级

  • 块级不和其他盒子并列摆放,适用所有的盒模型属性
  • 行级和其他盒子一起放在一行或拆开成多行,盒模型中的width、height不适用

display属性

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

行级排版上下文

简称IFC 只包含行级盒子的容器会创建一个IFC IFC内的排版规则:盒子在一行内水平摆放,一行放不下会换行,text-align决定一行盒子内的水平对齐,vertical-align垂直对齐,会避开浮动元素。

块级排版上下文

简称BFC BFC内的排版规则:盒子从上到下摆放,垂直margin合并,BFC内盒子的margin不会与外面的合并,BFC不会和浮动元素重叠

span是行级元素。

七、FlexBox是什么?

一种新的排版上下文,它可以控制子级盒子的摆放流向、摆放顺序、盒子的宽度和高度、水平和垂直方向的对齐、是否允许折行

对齐

flex根据内容确定宽度高度,摆放从左至右

分为主轴与侧轴

justify-content

align-items

伸展收缩

一维

Flexiblity属性可以伸展和收缩

flex-grow -basis -shrink

Grid布局

二维

display:grid使元素生成一个块级的Grid容器

使用grid-template相关属性将容器划分为网格

按行列划分网格

grid line网格线

浮动

实现文字环绕效果

绝对定位

position属性:

static

relative相对于原本位置偏离

absolute找父级定位,非本身

fixed总是相对于窗口定位

八、学习CSS的几点建议

  • 充分利用MDN和W3C CSS规范
  • 保持好奇心,善用浏览器的开发者工具
  • 持续学习,CSS新特性还在不断出现

九、个人总结

此次课程,学习CSS是怎样工作的,以及相关排版和布局的知识,CSS中的布局可以在常规流中,要符合IFC、BFC、Grid、flex上下文规则排版,也可以用float图文排版,或者用绝对定位来排版。我认为想要掌握CSS的样式和布局是很难的,需要不断调试和练习,不断了解各个布局之间的区别。

相关推荐
三六1 天前
刷题漫漫路(二)| 豆包MarsCode AI刷题
青训营笔记
tabzzz2 天前
突破Zustand的局限性:与React ContentAPI搭配使用
前端·青训营笔记
Serendipity5653 天前
Go 语言入门指南——单元测试 | 豆包MarsCode AI刷题;
青训营笔记
wml5 天前
前端实践-使用React实现简单代办事项列表 | 豆包MarsCode AI刷题
青训营笔记
用户44710308932426 天前
详解前端框架中的设计模式 | 豆包MarsCode AI刷题
青训营笔记
用户5836838006766 天前
学习笔记22《易速鲜花聊天客服机器人的开发(上)》
青训营笔记
用户285620017136 天前
寻找观光景点组合的最高得分| 豆包MarsCode AI 刷题
青训营笔记
用户48486281292227 天前
LangChain启程篇 | 豆包MarsCode AI刷题
青训营笔记
用户1538734266807 天前
前端框架中的设计模式解析
青训营笔记
努力的小Qin9 天前
小T的密码变换规则(青训营X豆包MarsCode) | 豆包MarsCode AI 刷题
青训营笔记