使用Less

2023-05-16

为什么要使用预处理CSS

在使用CSS过程中会遇到一个非常头疼的问题,因为CSS中没有像java/C++或者PHP等程序语言一样有有自己的变量、常量、条件语句以及一些编程语法,只是一行行单纯的属性描述,写起来相当的费事,而且代码难以组织和维护,为了解决这个问题,引入了预处理CSS,预处理CSS可以像Java/C++或者PHP一样用变量,函数等语法描述CSS。

什么是预处理CSS

CSS预处理器用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,以供项目使用。CSS预处理器为CSS增加一些编程的特性,无需考虑浏览器的兼容性问题,例如你可以在CSS中使用变量、简单的逻辑程序、函数等等在编程语言中的一些基本特性,可以让你的CSS更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处,预处理CSS编程语言有Les,Sass,styuls。

为什么使用Less

Less是一款比较流行的预处理CSS,支持变量、混合、函数、嵌套、循环等特点。

学习Less的常用网站

Less官网 http://lesscss.org/
Less中文网 http://lesscss.cn/
w3cplus http://www.w3cplus.com/css/less

搭建Less开发环境

需要用到的软件

Node.js

安装Less

1.特别说明
安装Less之前需要先安装Node.js,安装Node.js的方法可以参考我之前的博客使用NVM安装Node.js

2.执行安装Less的命令
在命令行窗口中执行 npm install -g less 命令,可以安装Less,这个过程比较慢,需要翻墙

使用Less

创建Less文件
在一个文件夹下新建一个style.less文件,例如我在E:\game\HtmlProject\less下创建了一个style.less文件
这里写图片描述

向在文件中写入Less代码
向style.less文件中写入下面的Less代码

//定义一个变量,用于存放一个颜色
@mainColor: #e92322;

/* 创建一个body标签的样式 */
body {

  /*设置body的背景颜色*/
  background-color: @mainColor;
}

将Less文件编译成CSS文件
打开命令行,并且进入到style.less所在的目录下执行lessc style.less命令将Less文件编译成CSS文件,生成的CSS文件会显示在命令行中
这里写图片描述

将编译生成的CSS文件保存在本地
在命令行中执行lessc style.less > style.css命令后,会先在style.less文件的同级目录下创建一个style.css文件,并且将编译生成的CSS代码保存在style.css文件中
这里写图片描述

查看style.css中的代码
打开style.css文件后,可以看到style.css中的CSS代码和在命令行中的代码一样
这里写图片描述

压缩CSS
在开发中,为了减少网络请求资源的大小,通常需要压缩CSS文件,Less中提供了一个压缩CSS的插件,先执行npm install -g less-plugin-clean-css命令安装插件,然后执行lessc style.less --clean-css="--s1 --advanced --compatibility=ie8" > style.min.css命令,执行该命令后首先会将Less代码编译成CSS代码,然后会压缩CSS代码,最后会创建一个style.min.css文件,并且将压缩后的CSS代码保存到style.min.css文件中

压缩后的CSS代码
压缩后的CSS代码中删掉了注释和空格,换行等无意义的数据
body{background-color:#e92322}

Less中的一些其他用法

Less中实现标签嵌套
下面的Less代码中container下面存在多重嵌套的标签

//定义变量,记录container的宽度
@width: 1000px;

//定义变量,记录container的高度
@height: 2000px;

//创建变量,记录div的颜色
@mainColor: #f0f9f0;

/* 嵌套的用法 */ 
.container {
  width: @width;
  height: @height;
  background-color: #ff0;

  .row {
    height: 200px;

    div {
      border-left: 1px solid @mainColor;

       > a {
        color: red;

        &:hover {
          color: green;
        }
      }
    }
  }
}

编译生成的CSS代码如下
这里写图片描述

Less中使用函数
在下面的代码中body,header,footer标签都要设置border-radius属性,为了减少代码量可以创建一个setRadius函数,让这三个标签都通过调用setRadius函数设置border-radius属性大大的减少了代码量,提高了开发效率

/**
 * 为标签设置border-radius属性
 * @radius 标签的半径
 * @return 没有返回值
 */
.setRadius(@radius: 5px) {
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
  border-radius: @radius;
}

header {

    //给header标签设置border-radius属性
    .setRadius;
}

footer {
    //给footer标签设置border-radius属性
    .setRadius(10px);
}

body {
    //给body标签设置border-radius属性
    .setRadius(15px);
}

执行结果
这里写图片描述

合并less文件
在开发中使用less文件的合并功能是一个非常高效且很适合团队开发的方式,比如在一个团队中有三个成员,A成员负责开发页面的header部分,A成员可以建立一个header.less文件,B成员负责开发页面中的banner部分,B成员可以创建一个banner.less文件,C成员负责开发页面中的footer部分,C成员可以建议一个footer.less文件,开发完成后可以将header.less、banner.less、footer.less合并在一个CSS文件中
假定header.less中代码如下

#header {
    background-color: red;
}

banner.less中的代码

#banner {
    background-color: green;
}

footer.less中的代码

#footer {
    background-color: blue;
}

将这三个less文件中的代码合并到style.less中

//引入header.less文件
@import url('header.less');

//引入banner.less文件
@import url('banner.less');

//引入footer.less文件
@import url('footer.less');

编译index.less文件,编译结果如下,可以看到三个less文件中的代码都编译成了CSS文件,并且放在一起
这里写图片描述

在网页中直接使用Less

为什么要在网页中直接使用Less

如果按照上面介绍的方法使用Less,需要每次使用Less写完一点样式后就将Less编译成CSS文件,再在html中引入CSS,总是重复这个操作大大降低了开发效率,为了解决这个问题,可以通过一点简单的配置,可以实现在网页中直接运行

配置在网页中直接运行Less的环境

下载less.js-2.5.1文件
通过https://pan.baidu.com/s/1pLM3j6r下载less.js-2.5.1.zip文件
这里写图片描述

创建项目
创建一个项目。并且将less.js-2.5.1.zip解压到项目目录下

创建Less文件
在项目目录下创建一个main.less文件,并在向main.less中添加如下代码


//创建变量,用于设置body的宽度
@width: 1024px;

//创建变量,用于设置body的高度
@height: 1000px;

//创建变量,用于设置body的背景颜色
@backgroundColor: #f5f5f5;

body {
  width: @width;
  height: @height;
  margin: 0;
  padding: 50px;
  background-color: @backgroundColor;
}

创建HTML文件
在项目目录下创建一个index.html文件,并且向index.html中添加如下代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>测试网页中直接使用less文件的效果</title>
  <link rel="stylesheet/less" href="main.less">
</head>

<body>

  <script src="less.js-2.5.1\dist\less.min.js"></script>
</body>

</html>

运行项目
使用HTTP请求的方式在浏览器中运行index.html文件,WebStrom中点击运行按钮后会自动以HTTP请求的方式在浏览器中运行index.html文件,此时查看console控制台,当console控制台中展示下面的信息,表示项目运行成功
这里写图片描述

查看元素信息
在Elements模块下可以看到为body元素设置了CSS样式,表示Less文件在网页中运行成功
这里写图片描述

特别说明

这种方法只能用于开发测试中,开发完成后需要将Less编译成CSS

使用Less做的一个小项目

使用Less实现博雅互动首页 https://github.com/meishadevs/boyaa

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Less 的相关文章

  • CSS - 是否有 RTL 语言的 @media 查询

    我正在向我的大型 css 较少 样式添加 rtl 从右到左 语言支持 我正在寻找一种在 less 文件中添加嵌套规则的方法 就像可以通过分辨率一样 对于屏幕尺寸 我可以这样做 有 small为某些分辨率定义的变量 并且非常舒适 my cla
  • VS Web Essentials 2012 在导入保存时编译主 LESS

    我正在尝试维护一个全局 less 文件 该文件 imports 应用程序的其余 less 文件 我目前正在 Visual Studio 2012 中使用 Web Essentials 扩展开发这个项目 该扩展在保存时自动生成 css 文件
  • 在 Less 中连接字符串

    我认为这是不可能的 但我想我问是否有办法 我的想法是 我有一个用于 Web 资源文件夹路径的变量 root img file test css url root file px background image url url 我得到这个结
  • 如何在没有 CLI 的情况下在 Angular 组件中使用 less

    我有一个应用程序 我必须在其中配置和使用较少的内容来实现动态主题 问题是我们没有使用 angular cli 并且这里的配置有点奇怪 所以我们手动引导 Angular 模块 以下是应用程序的配置 包 json dependencies an
  • 为什么Koala无法编译默认的Bootstrap 3 less文件?

    我正在努力学习 Bootstrap 3 及 Less 但在开始之前我就陷入了死胡同 经过两天的反复试验 我最终选择了Koala来将Less编译成CSS 我使用的是 Mac OS 10 7 所以 Codekit 已经出来了 现在只能在 8 上
  • 在 LESS 中生成供应商前缀

    我已经将这种方法拼凑在一起 使用 LESS 生成供应商前缀的属性和动画 首先是一些工厂函数 vendorprefix property value webkit property value moz property value ms pr
  • 使用 LESS mixin 添加供应商前缀

    我收到此混合的语法错误 vendors statement statement moz statement webkit statement 任何方法都可以做到这一点 或者混合变量必须位于 a 的右侧 从 Less v2 开始 你可以使用自
  • 如何使用 Bower 作为包管理器获取 Less v.2.0.0 的 Rhino 版本

    我正在使用 less js 的 Rhino 版本 使用 Bower 将其提取到我的开发环境中 在 1 7 5 下 一切正常 bower 将获得所有不同的版本 Node 和 Rhino 版本都将存储在我的环境中 最近更新到 2 0 0 后 似
  • 将 less 字符串传递给 less.js 并接收 css?

    less js中有一个函数可以传递一串less代码并返回css代码吗 我希望创建一个实时的 less 编辑环境 这样用户可以编辑 less 字符串 我可以重新编译它并显示 css 我看到有一个php解决方案 http leafo net l
  • LESS @import:将路径传递给 lessc

    我想在父主题和子主题中使用 LESS 样式表 其中大部分样式表信息由父主题指定 子主题只需覆盖一些文件 这可以通过 LESS 的 Ruby 版本实现 如下所示 var parser new less Parser paths lib Spe
  • 更少的 mixin 和变量

    我有以下混合 iconFont color green font size 18px color color font size font size 如果我只想更改第二个变量值 我需要编写第一个变量默认值吗 h1 iconFont gree
  • Node.js 找不到模块 - 干扰 Windows 上的 cygwin

    我正在测试 Bootstrap 框架 来自 Twitter 并尝试在安装 Node js 后在本地构建它 它失败了 因为它找不到 less 模块 我也使用 npm install g less 安装了该模块 C Users geir cod
  • 从 LESS 获得缩小的 CSS 输出的最佳方法是什么?

    是否有可能自动从 LESS 获取缩小编译后的 CSS 每次我改变一些东西 我都必须手动压缩它 我使用 less js 来编译 LESS Thanks lessc styles less x压缩命令已被弃用 你必须使用这个命令 lessc c
  • 在 Less 中组合多个“转换”条目

    我有两个 mixin 它们都转换为 webkit transform rotate deg webkit transform rotate deg scale factor webkit transform scale factor 当我一
  • SASS 或 LESS 关键帧百分比循环

    我正在测试一些特殊的东西 我正在尝试在关键帧内循环以动态地将百分比写入其中 我已经用 SASS 测试过类似的东西 但它不起作用 keyframes test for i from 0 through 100 i do special stu
  • Webpack 2 的语义 UI 问题

    一直在努力使用 Webpack 2 进行语义 ui 设置 我遇到了一些与默认语义 ui 主题中的字体相关的错误 以及另一个关于image webpack loader ERROR in css loader lessPlugins opti
  • 通过 m2e 自动更新生成的 css 文件

    我正在使用lesscss maven plugin生成不同的css文件到目标目录 target generated sources 然后使用maven war plugin将此目录添加为 webResouce 这些文件将完美生成 但是 m2
  • 如何在流体宽度容器中将左侧、中间和右侧的三个按钮放置在同一行?

    我在用着LESS在 Twitter Bootstrap 环境中 但我会直接接受CSS也有答案 Fluid width container Btn1 Btn2 Btn3 另一种宽度 Fluid width container Btn1
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • 使用最后一个子选择器减少 CSS

    我在用less并试图得到last输入有一个边距底部 of 10px 这是我所拥有的 但它不起作用 并且没有在最后一个输入上应用 margin bottom 有什么想法吗 input margin bottom 0px last child

随机推荐

  • 小议同步IO :fsync与fdatasync

    对于提供事务支持的数据库 xff0c 在事务提交时 xff0c 都要确保事务日志 xff08 包含该事务所有的修改操作以及一个提交记录 xff09 完全写到硬盘上 xff0c 才认定事务提交成功并返回给应用层 一个简单的问题 xff1a 在
  • 阿里云 李博

    机器学习基础知识 业务架构 xff1b 算法代替人类思考 xff0c 实现生产力飞跃 xff0c xff1b 大部分开源工具封装了算法 xff1b 无需算法开发以及算法的公式推导 xff1b 如何使用算法解决自身的应用场景 xff1b 业务
  • thinkphp中display调用模板文件详…

    模板变量赋值后就需要调用模板文件来输出相关的变量 xff0c 模板调用通过display方法来实现 我们在操作方法的最后使用 xff1a this gt display 就可以输出模板 xff0c 根据前面的模板定义规则 xff0c 因为系
  • 遥控器与电调相关知识点整理

    一 xff0c 电调的控制方法 PWM 单片机输出1ms 2ms的方波脉冲 xff0c 根据航模标准 xff0c PWM信号线的频率应该是50Hz xff0c 对应的每个周期总时长是20ms xff0c 输出到电调的油门线 xff08 控制
  • FreeRTOS系列|开发环境

    开发环境搭建 1 硬件开发环境 FreeRTOS系列所使用的硬件为STM32F103ZET6开发板 2 软件开发环境 2 1 Keil MDK ARM软件简介及安装 2 1 1 Keil MDK ARM简介 Keil MDK xff0c 也
  • 陀螺仪加速度计MPU6050

    转载自 xff1a http www crazepony com wiki mpu6050 html 陀螺仪 陀螺仪 xff0c 测量角速度 xff0c 具有高动态特性 xff0c 它是一个间接测量角度的器件 它测量的是角度的导数 xff0
  • 机器学习-Anomaly Detection

    Problem Motivation 异常检测 Anomaly detection 是机器学习算法的一个常见应用 这种算法的一个有趣之处在于 xff1a 它虽然主要用于非监督学习问题 xff0c 但从某些角度看 xff0c 它又类似于一些监
  • Quadrotor四旋翼飞行器的飞…

    原文地址 xff1a Quadrotor四旋翼飞行器的飞行原理 xff08 一 xff09 作者 xff1a hxl85 http en wikipedia org wiki Quadrotor 这是wiki上的介绍 xff0c 有兴趣可以
  • 姿态解算知识(三)-陀螺仪加速度计6轴数据融合

    这么久的惯导总算是没白看 xff0c 加上一篇博客的指点 xff0c 这两天把Mahony的九轴数据融合算法看懂了 可惜第二版硬件还没到 xff0c 磁力计用不了 xff0c 没法验证效果 今天先总结下陀螺仪和加速度计的六轴数据融合 版权声
  • (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)

    目录 项目涉及的主代码 前言 一 环境搭建 二 开发步骤 1 注册点灯科技平台 2 在点灯科技平台注册设备 xff0c 获取Secret Key 3 在Arduino IDE中编写代码 xff0c 写入ESP8266 4 编译固件 xff0
  • C语言实现学生成绩管理系统

    学生管理系统 主界面 功能选择界面 所用的函数 函数名 int Num void 函数功能 得到学生人数 函数代码 得到学生人数 int Num void printf 34 请输入学生的人数 n 34 scanf 34 d 34 amp
  • 因式分解

    因式分解是数学中一种常见的计算 xff0c 也是编程中一种非常常见的编程方法 因式分解是指将一个非质数分解成几个质数的积 如 xff1a 4 61 2x2 100 61 2x2x5x5 算法代码 xff1a include lt stdio
  • 在控制台程序中播放音乐

    看过我的博客的人都知道 xff0c 在C语言中调用几个API函数就可以播放音乐了 xff0c 而我在博客中也写过Windows图形界面编程中做过一些与音乐有关的程序 xff0c 如 音乐播放器 音乐贺卡 等 xff0c 可是如果要你在控制台
  • 常用的DOS命令

    xfeff xfeff CMD命令 xff1a 开始 xff0d gt 运行 xff0d gt 键入cmd或command xff08 在命令行里可以看到系统版本 文件系统版本 xff09 1 appwiz cpl xff1a 程序和功能
  • FreeRTOS系列|任务基础知识

    任务基础知识 1 多任务系统 1 1 前后台系统 单片机裸机开发时 xff0c 一般都是在main函数里面用while 1 做一个大循环来完成所有的处理 xff0c 循环中调用相应的函数完成所需的处理 有时也需要在中断中完成一些处理 相对于
  • 链表《5》使用链表实现学生成绩管理系统

    上次我使用动态数组结构体实现了学生成绩管理系统 xff1a http blog csdn net u010105970 article details 17752193 这次学习了链表对链表也有所了解 xff0c 我就想着用链表实现学生成绩
  • 得到一个数字中每一位的数字

    学习编程也有一段时间了 xff0c 随着学习的不断深入 xff0c 我越来越体会到了算法的重要性 xff0c 最近遇到了一些非常有意思的算法 xff0c 比如打印水仙花数 将数字逆置 xff0c 在这两个算法中会用到一个数字钟每一位的值 如
  • 使用C++实现学生管理系统

    我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统 xff0c 最近正好在学习C 43 43 xff0c 于是我便使用C 43 43 实现了学生成绩管理系统 xff0c 算法和前面的C语言的动态数组实现的学生成绩管理系统差
  • 制作一个简单的Android版的音乐播放器

    音乐播放器是一个非常常见的应用 xff0c 这篇博客就是介绍如何制作一个简单的音乐播放器 xff0c 这款音乐播放器具有以下的功能 xff1a 播放歌曲 暂停播放歌曲 显示歌曲的总时长 显示歌曲的当前播放时长 调节滑块可以将歌曲调节到任何时
  • 使用Less

    为什么要使用预处理CSS 在使用CSS过程中会遇到一个非常头疼的问题 xff0c 因为CSS中没有像java C 43 43 或者PHP等程序语言一样有有自己的变量 常量 条件语句以及一些编程语法 xff0c 只是一行行单纯的属性描述 xf