理解CSS| 青训营笔记

60 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第2天,下面跟我一起看看青训营第二天讲了什么吧~

由于之前曾经开发过静态网站对CSS如何编写有所了解,所以本篇文章只是我的个人看法,以查漏补缺为主!

一.CSS=Cascading Style Sheets,用于定义样式,主要有以下几个功能:

  1. 字体、颜色
  2. 位置、大小
  3. 动画效果

二.一个CSS例子:

h1:{ color:white; font-size:14px; } 其中h1为选择器,color为迭代器,white为属性,类似“color:white;”被叫做声明。

三.CSS的三种使用方式:

  1. 外链(preferred)
  2. 嵌入
  3. 内联(直接把CSS写在html中,不推荐)

四.CSS与HTML等编译时的步骤:

CSS与HTML单独解析,通过DOM把CSS附加到DOM树形成渲染树再展示出来。

五.关于一些选择器的基本知识

  1. 通配选择器: *.{}
  2. 标志选择器: h1{}
  3. id选择器: 设置id属性后,使用“#id属性”(一般id是唯一的)
  4. 类选择器:class='xxx' 调用时:.xxx{} (类可以出现多次)
  5. 属性选择器: 如input中的disabled属性:[disabled]{}
  6. 属性值做匹配: 如a[href^='#']表示标签为a,href属性值以“#”开头($=表示以某某结尾)

六.关于伪类

分为状态伪类和结构伪类:

  1. 状态伪类:处于某一种状态,比如链接: a:link{color:black;};a:visited{color:gray;};a.hover(指的是鼠标悬停在链接上);a.active(按下去之后的情况)
  2. 结构伪类:根据节点在DOM树中的位置确定:如: li:first-child.{} 表示选中li列表中的第一个元素

七.组合

  1. ab:同时满足ab,如 input:focus
  2. a b:选中b如果它是a的子孙
  3. a>b:选中b如果它是a的子元素
  4. a~b: 选中b如果它在a后且和a同级
  5. a+b:选中b,如果它紧跟在a后

八.选择器组:用","分割即可,比如:a1,a2{}

九.颜色

  1. 000000(前两个数字代表红,中间代表绿,最后两个代表蓝)(可以再加两位代表透明度)

  2. rgb(xx,xx,xx) 每个数字取值范围为0-255,可以最后加入透明度(0~1)
  3. HSL:hsl(xx,xx%,xx%) 第一个代表色相,取值范围为0-360;第二个代表饱和度,取值范围为0-100%;第三个代表亮度,取值范围为0~100%(可以最后加入透明度)
  4. 关于透明度:越低越透明

十.字体

  1. font-family:{xx,xx,xx}(设置多个字体因为每个设备可以用的字体不同
  2. font-size: _px / _em/ _%(em是相对单位)
  3. font-style:normal/italic(斜体)
  4. font-weight:粗细度

十一.行高

  1. 1.6(行高是字体的多少倍)
  2. 45(实际大小)

十二.对齐(text-align)

  1. left
  2. right
  3. center
  4. justify(拉长空格,使得文本好看,但是可能由于最后一行比较短对最后一张不生效)

十三.首行缩进:text_indent : _px

十四.关于空格

  1. 正常情况写了多个空格只会有一个空格(合并空格)
  2. nowrap:强制不换行
  3. pre:会保留所有空格
  4. pre-wrap:一行显示不下,则自动换行(有换行,保留多个空格)
  5. pre-line:合并空格,保留换行

十五.调试:检查+CTRL+SHIFT+I

十六.特异度(当多个选择器对应同一个元素时判断应该使用哪一个选择器)

规则:id(#)>(伪)类(如'.':'':hover',':focus'等)>标签(如h1,div,:before,:after等)

十七.继承:和模型相关的没有办法继承(如box-sizing),但是如color、font-size等可以继承

如何使得原先无法继承的属性变得可以继承? {box-sizing:inherit;}

十八.关于计算值和使用值:计算值指的是拿到CSS后可以得到的值,比如em转化为px;使用值在计算值后转化百分比等

十九.关于布局

  1. 常规流:行级、块级、表格布局、Grid布局、FlexBox等
  • 块级只能自己独占一行,适用于所有属性(display:block)
  • 行级可以和其他行级一起放/放在一行,不能指定宽高(display:inline)
  • inline-block:本身属于行级,可以放在行盒中;可以设置宽高;作为一个整体不会被拆散成多行
  1. 浮动
  2. 绝对定位

二十.关于position属性

  1. static:默认值。非定位元素
  2. relative:相对自己原本位置偏移
  3. absolute:绝对定位,相对于非static祖先元素定位
  4. fixed:相对于窗口绝对定位,滚动不影响