CSS基础

102 阅读3分钟

CSS概览

1994年,李爵士的挪威同事赖先生提出了CSS概念。

CSS的出众之处,在于层叠样式表。

  • 样式层叠: 可以多次对同一选择器进行样式声明
  • 选择器层叠:可以用不同选择器对同一个元素进行样式声明
  • 文件层叠: 可以用多个文件进行层叠

CSS 2.1是使用最广泛的版本(IE支持)

CSS 3 是现代版本,分模块

要查看哪些浏览器支持何种特性:使用caniuse.com

体系化学习CSS

  1. 语法

    • 样式语法

      选择器{
          属性名:属性值;
          /*注释*/
      }
      

      注意:区分大小写

    • at 语法

          @charset "UTF-8";
          @import url(2.css); 
          @media (min-width: 100px) and (max-width: 200px) {
              语法一
          }
      

      注意:@charset必须放第一行,前两个at必须以分号结尾

  2. 如何调试

    • 使用W3C验证器

    • 使用VSCode/WebStorm看颜色

    • 使用开发者工具看警告

    • Border调试法 步骤:

    1. 怀疑某个元素有问题
    2. 在此元素加border
    3. border没出现——查看选择器是否拼写正确,语法是否合规
    4. border出现——边界是否符合预期
    5. bug解决后才能把border删掉
  3. 在哪查资料

  4. 标准制定者

    W3C CSS 2.1中文版

文档流(Normal Flow)

  • 流动方向

inline元素从左到右,到达最右边才会换行,一个元素在换行的时候可以跨两行

block 元素从上到下,每一个都另起一行

inline-block元素,从左到右,从上到下排列,一个元素在换行的时候不会跨两行,分成两块

  • 宽度

inline元素的宽度是内部所有inline元素宽度的总和决定的,不接受用width指定

block默认自动计算宽度,可以用width指定

div元素的默认宽度不是100%,而是auto;永远不要使width:100%,除非特殊情况指定

inline-block默认宽度是内部所有inline元素宽度的总和,但是可以用width指定

不要在inline元素里面写block元素

  • 高度

inline 高度由line-height间接决定,与height, padding无关

block 高度由内部文档流元素决定,可以设置height

inline-block 与block元素类似,可以设置height

overflow溢出

当内容的宽度或者高度大于容器时,会溢出。此时,可以用overflow设置会否显示滚动条,auto-灵活设置,scroll-永远显示, hidden是直接隐藏溢出部分, visible是直接显示溢出部分。

脱离文档流

`position:absulute`

`float:left`

盒模型

CSS盒模型是封装HTML元素的盒子,两种盒模型分别是内容盒(content-box)和边框盒(border-box)。

每个盒子由四部分组成,四部分被其相应的边界所限制,这四种区域分别为:content(内容), padding(内边距), border(边框) , margin(外边距).

2021-12-13_163104.jpg

对于content-box,其width=content的宽度,height=content的高度;

对于border-box,width=border + padding + contend的宽度,height = border + padding + content的高度。

在CSS中设置盒模型:


box-sizing:conent-box;

box-sizing:border-box;

margin的合并

在父元素和首末子元素之间,以及相邻兄弟元素之间的margin会合并显示。

父子合并的消除方法:

  1. 用padding/border 挡住

  2. overflow: hidden;

  3. display:flex;

兄弟元素合并可以用inline-block消除。

基本单位

  1. 长度单位
  • px 像素
  • em 相对于自身font-size的倍数
  • xx%
  • 整数
  • vm vh
  1. 颜色
  • 十六进制 #F60 #FF6600
  • RGBA颜色 rgb(0,0,0)
  • hsl颜色 hsl(360,100%,100%)