理解CSS | 青训营笔记

49 阅读3分钟

CSS

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

CSS的作用:用来定义页面元素的样式

  • 设置字体和颜色
  • 设置位置和大小
  • 添加动画效果

使用CSS的方式(三种)

```<! --外链-->
<link rel= " stylesheet" href= " / assets / style.css" >
<! -―嵌入-—之
< style>
li {margin : 0 ;list- style : none;}p {margin : l em 0 ;}
</ style>
<!—内联-->
<p style= " margin: 1 em 0 " >Example Content</ p>
复制代码

CSS选择器(Selector)

  • 找出页面中的元素,以便给他们设置样式

  • 使用多种方式选择元素

    • 按照标签名、类名或id
    • 按照属性
    • 按照DOM树中的位置

伪类(pseudo-classes)

  • 不基于标签和属性定位元素

  • 几种伪类

    • 状态伪类
    • 结构性伪类

颜色-HSL

  • Hue

    • 色相(H)是色彩的基本属性,如红色、黄色等;取值范围是0-360.
  • Saturation

    • 饱和度(S)是指色彩的鲜艳程度,越高约鲜艳;取值范围0-100%。
  • Lightness

    • 亮度(L)指颜色的明亮程度;越高颜色越亮;取值范围是0-100%。

font-family使用建议

  • 字体列表最后写上通用字体族
  • 英文字体放在中文字体前面

font-size

  • 关键字

    • small、medium、large
  • 长度

    • px、em
  • 百分数

    • 相对于父元素字体大小

调试CSS

  • 右键点击页面,选择【检查】

  • 使用快捷键

    • Ctrl+Shift+I(Windows)
    • Cmd+Opt+I(Mac)

CSS的继承

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

初始值

  • CSS中,每个属性都有一个初始值
  • 可以使用initial关键字显式重置为初始值

布局(Layout)

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

布局相关技术

  • 常规流

    • 行级
    • 块级
    • 表格布局
    • FlexBox
    • Grid布局
  • 浮动

  • 绝对定位

width

  • 指定content box宽度
  • 取值为长度、百分数、auto
  • auto由浏览器根据其他属性确定
  • 百分数相对于容器的content box宽度

height

  • 指定content box高度
  • 取值为长度、百分数、auto
  • auto取值由内容计算得来
  • 百分数相对于容器的content box高度
  • 容器有指定的高度时,百分数才生效

padding

  • 指定元素四个方向的内边距
  • 百分数相对于容器宽度

border

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

margin

  • 指定元素四个方向的外边距
  • 取值可以使长度、百分数、auto
  • 百分数相对于容器宽度

块级元素

  • 不和其他盒子并列摆放
  • 适用所有的盒模型属性

行级元素

  • 和其他行级盒子一起放在一行或拆开成多行
  • 盒模型中的width、height不适用

display属性

  • block
  • inline
  • inline-block
  • none

常规流Normal Flow

  • 根元素、浮动和绝对定位的元素会脱离常规流
  • 其它元素都在常规流之内(in-flow)
  • 常规流中的盒子,在某种排版上下文中参与布局

Flex Box

  • 一种新的排版上下文

  • 它可以控制自级盒子的:

    • 摆放的流向
    • 摆放顺序
    • 盒子宽度和高度
    • 水平和垂直方向的对齐
    • 是否允许折行

position属性 

  • static: 默认值,非定位元素
  • relative: 相对自身原本位置偏移,不脱离文档流
  • absolute: 绝对定位,相对非static祖先元素定位
  • fixed: 相对于视口绝对定位 

学习CSS的建议

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