【青训营|css】

51 阅读4分钟

走进CSS

这是我参与「第五届青训营 」笔记创作活动的第2天

课程内容

  • css基础用法
  • css选择器类型和特点
  • css布局相关技术

详细知识点

什么是CSS?

  • CSS 指层叠样式表 (Cascading Style Sheets)
  • 样式定义如何显示 HTML 元素
  • 样式通常存储在样式表
  • 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题
  • 外部样式表可以极大提高工作效率
  • 外部样式表通常存储在 CSS 文件
  • 多个样式定义可层叠为一个

CSS实例

h1{
   color:white;
   font-size:14px;
}

1.png

CSS是如何工作的

2.png

在页面中使用CSS

  1. 外链 推荐,使得各项分离 <link rel=
  2. 嵌入 <style>
  3. 内联 <p style=></p>

css是如何工作的

选择器 selector 找出页面中的元素,以便给他们设置样式 使用多种方式选择元素 按照标签名、类名或id 按照属性 按照dom树中的位置

通配选择器

*{}匹配所有

标签选择器:

用标签来设置样式

id选择器

如果元素设置了id值便可以使用id选择器

id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。

HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义。

#para1 { text-align:center; color:red; }

类选择器

用class设置样式,class可以存在多个一样的

.center {text-align:center;}

属性选择器

[disabled]{} 3.png

input[type="password"]{
border-color:red;
color:red;
}

类似的例子

a[href^="#"]{
~~~
}

意为:如果a标签的href属性以#开头的选中,以$结尾的选择

伪类选择器

对该标签的某种状态下进行样式更改

a:hover移动到上面之后

active 按上去之后

link 默认状态下的样式

visited 访问过链接之后

focus 在输入框准备开始打字时

结构伪类

li:first-child 设置li的第一个样式

4.png

选择器标签组合

5.png

选择器组:各个标签之间用逗号隔开

颜色rgb:rgb()

颜色-hsl

7.png

字体 font-family

9.png

  • font-size 字号
  • font-weight 字重
  • line-height 行高

white-space

12.png

  • normal有空格就显示一个
  • nowrap不显示空格
  • pre 有多少显示多少
  • pre-wrap保留空格,该换行换行
  • pre-line

深入css

选择器优先级 选择器特异度

13.png

继承

14.png

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

inherit:显式继承

15.png

初始值

16.png css中,每个属性都有一个初始值

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

17.png

布局是什么

是确定内容的大小和位置的算法

依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术

18.png 常规流:行级 块级 表格布局 flexbox grid布局

浮动 绝对定位

width
  • 指定content box高度
  • 取值为长度、百分数、auto
  • auto由浏览器根据其它属性确定
  • 百分数相对于容器的content box高度
height
  • 指定content box高度
  • 取值为长度、百分数、auto
  • auto取值由内容计算而来
  • 百分数相对于容器的content box高度
  • 容器有指定的高度时,百分数才生效
padding
  • 指定元素四个方向的内边距
  • 百分数相对于容器宽度
border

指定容器边框样式、粗细、颜色

三种属性

  • border-width
  • border-style
  • border-color

四个方向

  • border-top
  • border-right
  • border-bottom
  • border-left
margin
  • 指定元素四个方向的外边距
  • 取值为长度、百分数、auto
  • 百分数相对于容器宽度
  • 使用margin:auto 水平居中
  • margin collapse
  • margin 在垂直方向上的边距会合并 (拓展)

19.png

注意

border-box指的是包括边框占据为所指定的大小
而默认的contain-box是指里面的文字占据的大小为指定大小

OverFlow属性: 控制溢出部分

  • visible可视
  • hidden隐藏
  • scroll滚动

行级与块级

display属性

block 块级盒子 inline 行级盒子

inline-block 本身是行级,可以放在行盒中;可以设置宽高;作为一个整体不会被拆散成多行

22.png

23.png

常规流

24.png

行级排版上下文

25.png

块级排版上下文

26.png

bfc内部的排版规则

27.png

Flex Box

  • display:flex
  • 不均分
  • 主轴侧轴

28.png

如图可见:A\B\C三个部分并没有均分整个盒子

30.png

display:gird

  • 划分网格
  • gird布局
  • 36.png

float 浮动

可以实现图片环绕文字的效果

现阶段实现左右布局效果可以使用flex box代替

position属性

  • static 默认值
  • relative 相对自身原本位置偏移,不脱离文档流

37.png

  • absolute 绝对定位,相对非static祖先元素定位

38.png

  • fixed 相对于视口绝对定位

总结

学习css的几点建议

  1. 充分利用mdn和w3c css规范
  2. 保持好奇心,善用浏览器的开发者工具
  3. 持续学习,css新特性还在不断出现