关于CSS|青训营笔记

84 阅读4分钟

这是我参与[第五届青训营]伴学笔记创作活动的第2天

课堂笔记

本堂课重点内容

CSS概念和工作原理
各种CSS选择器以及盒模型和常用的布局方式

CSS概述:

在 前端和HTML课程中我们学习了 HTML 是什么,以及如何使用它来组成页面。浏览器能够解析这些页面。当开发者没有指定样式时,浏览器通过默认样式浏览器的默认样式。可能不太美观,但是可以通过使用 CSS 控制浏览器如何显示 HTML 元素,从而充分展示开发者想要呈现的设计样式。

image.png

CSS最基础的代码由选择器和由属性与属性值组成的声明组成

image.png

在页面中使用CSS有三种方法:

  • 外链:把CSS的定义放在一个单独的文件里,然后用link标签把它引入到页面中 <link rel="stylesheet" href="CSS文件的位置">
  • 嵌入:直接把样式嵌在<style>标签里
  • 内联:直接把标签的属性写在标签里边。eg:<p style="margin:1em 0">内容</p>

一般更推荐第一种,最不推荐的是内联。

CSS工作流程:

image.png

选择器 Selector: 就是用多种方式选择页面中的元素,给他们设置样式。

  • 通配选择器:*
  • 标签选择器
  • id选择器:生成一个id属性来选中元素,id属性值不能重复,是唯一的。
  • 类选择器class:同一类型的标签去设置样式的时候可以用。
  • 属性选择器:通过这个元素的一些属性或者属性值去选中这个元素。

只要元素里有disabled这个属性就可以选定:

image.png

用属性值选定时可以用type=""的形式:

image.png

当然可以根据属性值的条件去改变书写的形式,eg:

image.png

除了属性选择器,还可以通过伪类的模型去选定一个元素。
伪类是不基于标签和属性定位元素,分为状态伪类和结构性伪类两种。
状态伪类:不是指某一个具体的值、某一个元素,还要处于一个特定的状态下。eg:链接,可以区分访问过和未访问过的。
连接的四种状态:

image.png

结构伪类:根据dom节点在dom树下的位置来决定是否选中这个元素。 eg:可以通过first-child来给第一个设置单独的样式。

image.png

[选择器的特异度]

image.png

[字体]: 在定义字体的时候可以在最后添加一个通用字体族。

image.png

[继承]: CSS里的某些元素会自动的继承他父类元素的计算值,除非显示指定一个值。
继承也需要在上下文中去理解:一些设置在父元素上的 CSS 属性是可以被子元素继承的,有些则不能。
[初始值]: CSS中,每个属性都有一个初始值

background-color的初始值为transparent margin-left的初始值为0

可以用initial关键字显示重置为初始值

background-color:initial

CSS求值过程

image.png

布局:确定内容的大小和位置的算法
通常根据元素、容器、兄弟节点和内容等信息来计算
布局会用到三种常用的方式: 常规流 浮动 绝对定位

盒模型

常见布局(行级&块级)

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

image.png

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

一个只包含行级盒子的容器,会创建一个行级排版上下文(IFC)。

IFC内的排版规则

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

某些容器会创建一个块级排版上下文(BFC):

  • 根元素;
  • 浮动、绝对定位、inline-block;
  • Flex子项和Grid子项;
  • overflow值不是visible的块盒;
  • display:flow-root;

BFC内的排版规则

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