css -预处理器less

CSS 编写的痛点

CSS 作为一种样式语言 ,本身用来给HTML元素添加样式 是没有问题的.

但是目前前端项目已经越来越复杂,不再是简简单单的几行CSS 就可以搞定的,我们需要几千行甚至上万行的CSS 来完成页面的美化工作.

随着代码量的增加,必然会造成很多的编写不便:

  • 比如大量的重复代码,虽然可以用类来勉强管理和抽取 ,但是使用起来依然不方便
  • 比如无法定义变量(当然通过CSS 函数目前已经支持),如果一个值被修改,那么需要修改大量代码,可维护性很差;(比如主题颜色)
  • 比如没有专门的作用域和嵌套 ,需要定义大量的id/class 来保证选择器的准确性,避免样式混淆.

所以 有一种对CSS 称呼是 "面向命名编程"

CSS痛点问题的解决

  • 社区为了解决 CSS 面临的这些问题,出现了一系列的CSS 预处理器(CSS preprocessor)
  • CSS 预处理器是一个能让你通过预处理自己独有的语法来生成 CSS 的程序.
  • 市面上有很多CSS 预处理器可供选择 ,且大多数预处理器会增加一些原生CSS 不具备的特性;
  • 代码最终会转化为CSS 来运行 ,因为对于浏览器来说:它只识别CSS;

常见的CSS 预处理器

常见的预处理器有哪些呢? 目前使用较多的是三种预处理器:

Sass/Scss:

  • 2007年 诞生,最早也是最成熟的CSS 预处理器,拥有ruby社区的支持,是属于Haml(一种模版系统)的一部分;
  • 目前受LESS 影响,已经进化到了全面兼容CSS的SCSS;

Less:

  • 2009年出现,受SASS 的影响比较大,但又使用CSS的语法 ,让大部分开发者更容易上手
  • 比起SASS 来,可编程功能不够,不过优点是使用方式简单,便捷,兼容CSS,并且已经足够使用
  • 另外反过来也影响了SASS 演变到了 SCSS的时代;
  • 著名的Twitter Bootstrap 就是采用 LESS做底层语言的,也包括React 的UI框架 AntDesign.

Stylus:

  • 2010年产生,来自Node.js社区,主要用来给Node项目进行CSS 预处理支持;
  • 语法偏向于Python,使用率相对于Sass/Less 少很多

Less 预处理器

什么是LEss呢? 官方的介绍如下:

It's CSS, with just a little more.

Less (Leaner Style Sheets 的缩写) 是一门CSS 拓展语言,并且兼容CSS.

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

Less 代码的编译

less 代码的编译 通常有如下几种方式:

方式一 : 下载Node环境,通过 npm 包管理下载less 工具,使用less 工具进行编译;

可以通过webpack 配置 完成此操作,篇幅问题,不再做演示.

方式二: 通过VSCode 插件来完成CSS 或者在线编译

lesscss.org/less-previe... (在线翻译网站)

方式三:引入CND的less 编译代码,对less 进行实时的处理

css 复制代码
<script src="https://cdn.jsdelivr.net/npm/less@4" ></script>

方式四: 将less 编译的js 代码下载到 本地,执行js代码对less 进行编译;

  • 将方式三链接种的代码 拷贝到本地
  • 在html 中引入js 文件
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
<link rel="stylesheet/less" href="./test.less">
<script src="./lessc.js"></script>
</head>
<body>
    <div class="box"></div>
    
</body>
</html>

Less 常用语法

Less 语法一: Less 兼容CSS

  • 我们可以在Less 文件中编写所有的CSS 代码.
  • 只是将CSS的拓展名变成了.less结尾而已

Less 语法二 - 变量

在一个大型的网页项目中,我们CSS 使用到的某几种属性值往往是特定的.

  • 比如我们使用到的主题颜色值,比如每次编写类似于 #f3c258格式的语法;
  • 一方面是记忆不太方便,需要重新编写或者拷贝样式;
  • 另一方面如果有一天 主题颜色改变,我们需要修改大量的代码;
  • 所有,我们可以将常见的颜色或者字体等定义为变量来使用

在Less 中使用如下的格式来定义变量:

@变量名:变量值;

使用时,通过 @变量名 ,来引用对应的变量

less 语法三 -嵌套

在css 中,当我们需要找到 一个内层的元素时,往往需要嵌套很多层的选择器

Less 提供了选择器的嵌套

特殊符号: & 表示当前选择器的父级

Less 语法四 - 运算

在Less 中,算术运算符 + ,-, / 可以对任何数字,颜色或变量进行计算 * 算术运算符在加,减比较之前会进行单位计算,计算的结果 以最左侧操作数的单位类型为准; 如果单位换算无效或失去意义,则忽略单位;

Less 语法五 - 混合 (Mixins)

在CSS 编写过程中,多个选择器中可能会有大量相同的代码

  • 我们希望 可以将这些代码抽取到一个独立的地方,任何选择器都可以进行复用.
  • 在less 中提供了**混入(Mixins)**来帮助我们完成这样的操作;

混合(Mixin) 是一种将一组属性 从一个规则集混入到另一个规则集的方法

注意:混入在没有参数的情况下,小括号可以省略,但是不建议这样使用;

**混入 也可以穿入变量 **

Less 语法六:映射

混入和映射 可以结合,当作一个自定义的函数来 使用

less 语法七: extend 继承

和 mixins 作用类似,用于复用代码

和 mixins相比,继承 代码最终会转化成并级选择

less 语法八: Less内置函数

Less 内置了多种函数 用于 颜色转换,处理字符串,算术运算等. 内置函数手册:less.bootcss.com/functions/

Less 语法九:作用域(Scope)

  • 在查找一个变量时,首先在本地查找变量和混合
  • 如果找不到,则从"父"级作用域继承

Less 语法十: 导入

  • 导入的方式和CSS 的用法是一致的.
  • 导入一个.less 文件,这个less 文件中的所有变量就可以全部使用
  • 如果导入的文件是.less 拓展名 ,则可以将拓展名省略掉
相关推荐
m0_7482561425 分钟前
前端 MYTED单篇TED词汇学习功能优化
前端·学习
小白学前端6662 小时前
React Router 深入指南:从入门到进阶
前端·react.js·react
web130933203982 小时前
前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
前端
outstanding木槿2 小时前
react+antd的Table组件编辑单元格
前端·javascript·react.js·前端框架
好名字08213 小时前
前端取Content-Disposition中的filename字段与解码(vue)
前端·javascript·vue.js·前端框架
隐形喷火龙3 小时前
element ui--下拉根据拼音首字母过滤
前端·vue.js·ui
m0_748241123 小时前
Selenium之Web元素定位
前端·selenium·测试工具
风无雨3 小时前
react杂乱笔记(一)
前端·笔记·react.js
前端小魔女3 小时前
2024-我赚到自媒体第一桶金
前端·rust
鑫~阳3 小时前
快速建站(网站如何在自己的电脑里跑起来) 详细步骤 一
前端·内容管理系统cms