CSS入门

179 阅读5分钟

CSS的历史

HTML发明者李爵士的挪威同事 Håkon Wium Lie 简称赖先生, 1994年以提出CSS而闻名。

CSS的版本

其中以2004-2011年期间的CSS2.1版本是最为广泛运行的版本,CSS3为目前流行的版本

CSS学习方法

  • 先熟悉CSS,再死记CSS规则
  • CRM(copy-run-modify)学习方法
  • 学习语法,怎么编写代码
  • 学习如何调试,找出错误
  • 在正确的地方查询资料
  • 了解标准的制定者,权威标准

CSS浏览器兼容性查询网站

caniuse.com/#comparison

CSS基本单位

长度单位

  • pixel像素
  • em相对于自身font-size的倍数
  • 百分数
  • 整数
  • rem新增的一个相对单位
  • vwvh等于viewport宽度的1/100viewport高度的1/100

颜色

  • 十六进制 #FF6600 或者 #F60
  • RBGBA颜色rgb(0,0,0)或者rgba(0,0,0,1)
  • hsl颜色hsl(360,100%,100%)

CSS语法

语法一:样式语法

  p-选择器 {
    color-属性名:red-属性值 
    /*设置字体颜色*/-注释
  }

注意事项

  1. 所有符号都是英文符号
  2. 区分大小写,Aa是不同的东西
  3. 没有//注释
  4. 最后一个分号可以省略,但是不建议省略
  5. 写错没有任何错误提示

语法二:@语法

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

注意事项

  1. @charset必须放在第一行
  2. 前面两个@必须以分号;结尾
  3. charset是字符集的意思,但是UTF-8是字符编码Encoding,这是历史遗留问题

CSS层叠式概念

  • 文件层叠,可以用多个文件进行层叠
  • 层叠特性使得CSS可以被灵活使用,带来便利的同时也留下了很多问题,导致CSS被人吐槽
  • 样式层叠, 可以多次对同一选择器进行样式声明,例如
    p{
      font-size: 50px;
    }
    p{
      color: yellow;
    }
  • 选择器层叠
 <p class="para"></p>
 ****
  <style>
    p{
      font-size: 50px;
    }
    p{
      color: yellow;
    }
    .para{
      color: blue;
    }
  </style>

CSS调试

方法一

  1. 使用W3C validator 在线检查
  2. 使用VS Code或者WebStorm查看颜色
  3. 使用Developer tools进行查看

方法二:Border调试方法

  1. 怀疑某个元素有问题,就添加border给这个元素
  2. 如果border没有出现,就表示语法或者选择器错误了
  3. 如果bordeer出现,查看border是否符合预期
  4. 有时候border会占用空间,可以使用outline来代替,outline不占用像素
  5. 解决问题后,移除boder
  6. CSSborder调试方法相当于JSlog调试方法,是很Handy的测试方法

Normal flow文档流

CSS重要概念

  • Normal flow文档流
  • 块,内联,内联块
  • margin合并
  • CSS box model(推荐学习Border box)

流动方向

  • inline元素从左到右,到达最右边,才换行
  • inline-block也是从左到右
  • block元素从上到下,每个都另起一行

宽度

  • inline宽度为内部inline元素的和,不能用width,内部不能有block元素
  • block默认自动计算宽度,可用width指定,永远不要写宽度100%
  • div的宽度默认接近100%,不是100%
  • inline-blockblock元素类似,可以设置height

高度

  • inline高度由line-height间接确定,跟height无关
  • block高度由内部文档流元素确定,可以设置height
  • inline-blockblock类似,可以设置height

overflow 溢出

当内容大于容器

  • 当内容的宽度或者高度大于容器,会溢出
  • 可以使用overflow来设置是否显示滚动条
  • auto 是灵活设置
  • scroll是永远显示(有滚动条的情况下,内联元素只在第一屏出现)
  • hidden是直接隐藏溢出部分
  • visible是直接显示溢出部分
  • overflow可以分为overflow-xoverflow-y

脱离文档流

回忆一下

  • block高度是由内部文档流元素决定,可以设置height
  • 如果有些元素可以不在文档流中,不影响block高度

哪些元素脱离文档流

  • float
  • position : absolute/fixed

怎么让元素不脱离文档流

  • 不要用上面属性就不脱离了

CSS Model(盒模型)

content-box内容盒

  • 内容就是盒子的边界
  • cotent-box width=内容宽度

border-box边框盒

  • 边框才是盒子的边界
  • border-box width = 内容宽度 + padding + border

比较

border-box 更好用,比如同时使用padding,width,border来测试

margin合并

哪些情况会合并

  • 父子 margin合并,例如子margin top和父margin top会合并,只有上下会重叠,左右不影响
  • 兄弟 margin合并,例如margin topmargin bottom会合并

如何阻止合并

  • 父子合并使用padding/border挡住
  • 父子合并使用overflow:hidder挡住
  • 父子合并使用display:flex
  • 父子合并是符合预期
  • 父子合并可以用inline-block消除
  • 注意更新

更多信息

查询知识

练习资源

  • 国外推荐 freepik搜索PSD Web
  • 国内推荐365搜索UI套件
  • 或者搜索免费PSD
  • 效果图可以参考设计师社区
  • 或者模仿其他网站

标准制定者