CSS-单位+预处理器

89 阅读3分钟

CSS中的单位

整体可以分为两类:

  • 绝对长度单位(Absolute length units)
image.png
  • 相对长度单位(Relative length units)
image.png

px(像素)单位常见的有三种像素名称:

  1. 设备像素(也称之为物理像素):指的是显示器上的真实像素,每个像素的大小是屏幕固有的属性,屏幕出厂以后就不会改变了;我们在购买显示器或者手机的时候,提到的设备分辨率就是设备像素的大小
  2. 设备独立像素(也称之为逻辑像素): 如果面向开发者我们使用设备像素显示一个100px的宽度,那么在不同屏幕上显示效果会是不同的
  3. CSS像素: ,它在默认情况下等同于设备独立像素(也就是逻辑像素)

可以通过JavaScript中的screen.widthscreen.height获取到电脑的逻辑分辨率

CSS预处理器

Less

Less增加了很多相比于CSS更好用的特性;比如定义变量、混入、嵌套、计算等等,最终需要被编译成CSS运行于浏览器中(包括部署到服务器中)

编译方式:

  1. 下载Node环境,通过npm包管理下载less工具,使用less工具对代码进行编译
  2. 通过VSCode插件来编译成CSS或者在线编译 lesscss.org/less-previe…
  3. 引入CDN的less编译代码,对less进行实时的处理
<link rel="stylesheet/less" href="lessDemo.less">
<script src="https://cdn.jsdelivr.net/npm/less@4" ></script>

常见语法:

  1. Less是兼容CSS的,只是将css的扩展名改成了.less结尾而已
  2. 定义变量@变量名:变量值;
@mainColor: #da2f2f;
.box{
  height: 200px;
  width: 200px;
  color: @mainColor;
}
  1. 嵌套
.box{
  height: 200px;
  width: 200px;
  color: #fff;
  
  .demo{
    font-size: 20px;
  }
}
  1. 特殊符号:& 表示当前选择器的父级
  a.link{
    font-size: 20px;
    color: red;

    &:hover{  // &相当于a.link
      color: #7ce718;
    }
  }
  1. 运算

算术运算符 +、-、*、/ 可以对任何数字、颜色或变量进行运算,运算前会进行单位换算,计算的结果以最左侧操作数的单位类型为准

.box{
  height: 200px * 2;
  width: 200px;
  background-color: #7ce718 + #6c0e0e;
}
  1. 混入(合)

将重复代码进行抽取到一个独立的地方,任何选择器都可以进行复用

// 混入的基本使用
.nowrap_ellipsis{
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

// 混入传递参数
.box_border(@borderWidth:5px, @borderColor:#b22020){
  border: @borderWidth solid @borderColor;
}

// 混入结合映射(Map),作用:弥补less中不能自定义函数的缺陷
.box_size{
  width: 100px;
  height: 200px;
}

.box1{
  width: .box_size()[width]; // 使用映射
  background-color: #7ce718;
  .nowrap_ellipsis(); // 基本使用,混入在没有参数的情况下,小括号可以省略,但是不建议这样使用;
  .box_border(10px,#d036e1); // 传递参数
}
  1. less内置函数手册:less.bootcss.com/functions/

Sass/Scss

Sass的语法使用的是类似于Ruby的语法,没有花括号,没有分号,具有严格的缩进 image.png

Sass语法和CSS区别很大,后来官方推出了全新的语法SCSS,意思是Sassy CSS,他是完全兼容CSS的

学习Scss sass-lang.com/guide

Stylus