Less的使用

在HTML中直接使用LESS资源的实践指南 htmltable {th, td {th {pre {简介:LESS作为CSS预处理器,提供了变量、嵌套、混合和函数等高级功能,大大提高了CSS代码的可维护性。本文深入探讨了如何在HTML页面中直接引用LESS资源,介绍了两种方法:浏览器插件和服务器端处理,并强调了兼容性、性能优化、版本控制和源映射的重要性,以确保在不同环境下的有效使用。 阅读详情
最近在研究Less,分享一些Less的知识与栗子,参考资料是Less官网,因为基本是全英文,所以看不惯英文的童鞋可以参考这篇文章,希望能有帮助。

LESS变量:
  • 变量声明(最基础的应用—用于css样式):
    • 使用“@”前缀标记变量;
    • @link-color: #428bca; // sea blue
  • Less变量用于选择器、URL、属性:
    • // Variables
      @my-selector: banner;
      // Usage
      .@{my-selector} { //用花括号将变量名括起来
      font-weight: bold;
      line-height: 40px;
      margin: 0 auto;
      }
  • Less变量甚至可以用于变量名:
    • @primary: green;
      @secondary: blue;
      .section {
      @color: primary;
      .element {
      color: @@color;
      }
      }
  • 懒加载:
    • 变量的使用可以在定义之前(不建议)
  • 若一个变量定义多次,则以当前作用域最近的一次为准(和css样式作用域类似),若当前作用域不存在该变量,则往上层作用域查找,直到找到该变量或查找至根作用域为止

父选择器:
  • &代表父选择器
  • 定义伪类样式:
    • a {
      color: blue;
      &:hover {
      color: green;
      }
      }
  • 定义重复性的类的样式:
    • .button {
      &-ok {
      background-image: url("ok.png");
      }
      &-cancel {
      background-image: url("cancel.png");
      }
      }
    • Output:
      .button-ok {
      background-image: url("ok.png");
      }
      .button-cancel {
      background-image: url("cancel.png");
      }
  • 组合式&:
    • & > &
    • & &
    • &&
    • &,&-ish
    • 注意,如果多层嵌套,则&不仅代表其最近的父选择器,而是代表其所有的祖先选择器。如:
      .grand {
      .parent {
      & > & { color: red; }
      }
      }
      output:
      .grand .parent > .grand .parent { 
      color: red;
      }
  • 改变选择器顺序(在孙子的位置做老子的事):
    • .header {
      .menu {
      border-radius: 5px;
      .no-borderradius & {
      background-image:
      url('images/button-background.png');
      }
      }
      }
      output:
      .header .menu {
      border-radius: 5px;
      }
      .no-borderradius .header .menu {
      background-image:
      url('images/button-background.png');
      }

继承:
  • &:extend();
    其思想与面向对象中的继承相同,子选择器可以重写父选择器中的样式
  • 从本质上讲,extend继承关注的是编译后的css,而非源less。所以在分析less时应采取css的思考方式而非less
  • nav ul {
    &:extend(.inline); //&代表的父选择器继承了()内的选择器的样式。
    background: blue;
    }
    .inline { color: red; }
    Output:
    nav ul {
    background: blue;
    }
    .inline, nav ul { color: red; }
  • 也可直接写成:.a:extend(.b) {}
    和.a { &:extend(.b); }一样的效果
  • c:extend(.d all) { // 加上all关键字即即成所有".d”, e.g. 包括".x.d" ,".d.x”,”*.d”,”.d:hover”等等}
  • .c:extend(.d) { // 不加all关键字则仅继承css输出为".d”的选择器}
  • 可继承多个选择器,用“,”分隔开:
    .e:extend(.f, .g) {}
  • 继承的写法与伪类相同,但注意:entend()只能写在最后,如:pre:hover:extend(div pre)
  • 若采用继承的内部写法:&:extend(),那么其外部的所有选择器都将作为继承者,如:
    pre:hover, .some-class { &:extend(div pre); }
    output:
    pre:hover:extend(div pre), .some-class:extend(div pre) {}
  • extend的精确匹配:
    • :extend(.class)只匹配”.class”选择器,其它选择器如”.a.class”,”.class.a”,”.class > .a”,包括”*.class”等等统统不匹配,不继承;
    • 选择器后的伪类顺序也要一致才能匹配,顺序不一致虽然效果相同,但extend无法匹配,如:
      link:hover:visited { color: blue; } .selector:extend(link:visited:hover) {}匹配不到,不继承
    • 属性选择器的写法不影响继承的精确匹配,对属性比较宽容
    • extend不能匹配带有变量的选择器,如:
      @variable: .bucket; @{variable} { // 插值选择器
          color: blue;
      }
    • extend在@media中的作用域:仅识别匹配并继承当前@media内的选择器,外部、内部或兄弟@media内的全都不匹配
    • 为什么有了mixin还需要extend呢?二者的不同之处在于编译完成后的css写法不同,extend产生的css更为简洁,相对而言mixin会产生大量重复,extend更有利于缩减css的大小。如:
      使用mixin:
      .my-inline-block() {
      display: inline-block;
      font-size: 0; }
      .thing1 { .my-inline-block; } .thing2 { .my-inline-block; }
      Output:
      .thing1 {
      display: inline-block;
      font-size: 0;
      }
      .thing2 {
      display: inline-block;
      font-size: 0;
      }
      使用extend:
      .my-inline-block {
      display: inline-block;
      font-size: 0;
      }
      .thing1 {&:extend(.my-inline-block); }
      .thing2 { &:extend(.my-inline-block); }
      output:
      .my-inline-block, .thing1, .thing2 { display: inline-block; font-size: 0; }
      另外,extend可以看作是mixin的一种更高级的替代方式,原因是mixin只能被用于简单的选择器,而例如这类情况:有两个html代码块,你想在这两个代码块中使用相同的样式,此时就可以使用extend将他们联系起来。

混合:
  • 你可以将类选择器或id选择器(不妨先称为a)直接混合进另一个选择器(b),这样b选择器就会拥有a选择器中所有的属性设置(非常简单粗暴)
  • 举个栗子:
    .a, #b { color: red; }
    .mixin-class { .a(); }
    .mixin-id { #b(); }
    Output:
    .a, #b { color: red; }
    .mixin-class { color: red; }
    .mixin-id { color: red; }
    其中调用mixin时的小括号“()”可以省略:.a();与.a;一样
  • 不输出mixin:
    从上个例子我们会发现一个问题,我们声明(“声明”一词用在这里并不正确,但我相信是比较能让人容易理解的表述)的用于mixin的选择器a和b在css输出中也被解析出来了。但是实际上大多数情况下我们使用mixin时是不需要他们被解析成css输出出来的,解决方法非常简单,在声明它们的时候加个括号“()”就可以了,举个栗子:
    .my-mixin { color: black; }
    .my-other-mixin() { background: white; }
    .class { .my-mixin; .my-other-mixin; }
    output:
    .my-mixin { color: black; }
    .class { color: black; background: white; }
  • mixin不但可以包含属性,还可以包含选择器。举个栗子:
    .my-hover-mixin() {
    &:hover { border: 1px solid red; }
    }
    button { .my-hover-mixin(); }
    outputs:
    button:hover { border: 1px solid red; }
  • 命名空间:
    当mixin选择器定义多了,难免会遇到名字冲突的情况,此时我们可以采用“封装”的思想,将选择器按照一定规则封装进另外的id选择器里,为什么选择id选择器呢,自然是为了确保唯一性了,举个栗子:
    可以这么“封装”:
    #my-library {
    .my-mixin() { color: black; }
    }
    // 可以这么使用:
    .class { #my-library > .my-mixin(); }
    以下几种写法是完全相同的:
    #outer > .inner;
    #outer > .inner();
    #outer .inner;
    #outer .inner();
    #outer.inner;
    #outer.inner();
  • !important关键字:
    在mixin的调用后面加上该关键字会使被调用的mixin选择器中的所有属性在此处都变成!important,举个栗子
    .foo (@bg: #f5f5f5, @color: #900) {
    background: @bg;
    color: @color;
    }
    .unimportant { .foo(); }
    .important { .foo() !important; }
    outputs:
    .unimportant {
    background: #f5f5f5;
    color: #900;
    }
    .important {
    background: #f5f5f5 !important;
    color: #900 !important;
    }
  • 你可以给mixin加参数(更像是一个编程语言了,真的舒服),还可以加默认值。举个栗子:
    .border-radius(@radius: 5px) {
    -webkit-border-radius: @radius;
    -moz-border-radius: @radius;
    border-radius: @radius;
    }
    #header { .border-radius(4px); }
    .button { .border-radius(6px); }
    .box { .border-radius; } //这里默认参数为5px
  • 多个参数的mixin:
    • 参数可以用逗号或分号分隔开,但是建议用分号,因为逗号在此处会产生双重含义:
      1、mixin参数分隔符
      2、css列表分隔符
      所以如果使用逗号那么就不可能两者兼顾,而使用分号的话编译器就会将分号视为参数分隔符同时将逗号视为css列表分隔符
    • 似乎不是很清晰,栗子会告诉你怎么回事:
      1、.name(1, 2, 3; something, else):两个参数,每个参数都包含一个逗号分隔的列表
      2、.name(1, 2, 3):三个参数,每个参数是一个数字
      3、.name(1, 2, 3;):一个参数,这个参数是一个用逗号分隔的css列表
      4、.name(@param1: red, blue;):用逗号分隔的参数默认值
    • less允许定义多个相同名字的mixin,甚至允许它们拥有不同的参数个数,这种情况less会将所有它能用的属性全用上,直接上栗子:
      .mixin(@color) { color-1: @color; }
      .mixin(@color; @padding: 2) {
      color-2: @color;
      padding-2: @padding;
      }
      .mixin(@color; @padding; @margin: 2) {
      color-3: @color;
      padding-3: @padding;
      margin: @margin @margin @margin @margin;
      }
      .some .selector div { .mixin(#008000); }
      outputs:
      .some .selector div {
      color-1: #008000;
      color-2: #008000;
      padding-2: 2;
      }
  • @arguments变量
    在mixin被调用时,@arguments变量包含着其所有变量。当我们不需要处理特定变量时很有用,请看栗子:
    .box-shadow(@x: 0; @y: 0; @blur: 1px; @color: #000) {
    -webkit-box-shadow: @arguments;
    -moz-box-shadow: @arguments;
    box-shadow: @arguments;
    }
    .big-block { .box-shadow(2px; 5px); }
    outputs:
    .big-block {
    -webkit-box-shadow: 2px 5px 1px #000;
    -moz-box-shadow: 2px 5px 1px #000;
    box-shadow: 2px 5px 1px #000;
    }
  • 高级参数与@rest变量:
    我们可以用“…“来获取mixin的多个参数。举个栗子:
    .mixin(...) { // 匹配 0-N 个参数
    .mixin() { // 匹配 0 个参数
    .mixin(@a: 1) { // 匹配 0-1 个参数
    .mixin(@a: 1; ...) { // 匹配 0-N 个参数
    .mixin(@a; ...) { // 匹配 1-N 个参数
    .mixin(@a; @rest...) {
    // @rest 绑定@a之后的参数
    // @arguments 绑定所有的参数
    }

OpenFOAM算例文件结构深度解析:以cavity案例为例教你读懂每个文件夹的作用 本文以OpenFOAM经典cavity案例为例,深度解析CFD算例文件结构。详细阐述了0、constant、system三个核心目录的作用:0存放初始与边界条件,constant定义物理属性和网格,system控制求解策略。通过剖析关键文件,帮助用户理解每个参数的意义,掌握从读懂到定制算例的能力,为高效使用这一开源CFD工具奠定坚实基础。 阅读详情

相关推荐

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1795

Less.

less学习笔记

qq_57586976的博客 1328

Android 以太网802.1x 配置

802.1X认证网络配置摘要:本文介绍了通过wpa_supplicant.conf文件配置802.1X企业网络认证的两种方法:PEAP-MSCHAPv2方式和TLS方式。PEAP方式需设置SSID、用户名、密码,可选择是否验证CA证书;TLS方式则需要配置客户端证书、私钥及CA证书路径。文件配置完成后需设置权限并重启设备。最后提出如何验证802.1X配置是否生效的问题,但未给出具体验证方法。该配置适用于需要802.1X认证的企业网络环境。

zhaoyufei133的博客 459

快速搞定 Less 之 —— 父选择器

快速搞定 Less 之 —— 父选择器

我是张跑跑 3019

声发射传感器的工作原理是什么?

介绍声发射传感器的工作原理。

qq_39948394的博客 9246

ADS 2023 实战:手把手教你仿真一个中心频率 2.4GHz 的带通滤波器(附工程文件)

本文详细介绍了使用ADS 2023软件设计和仿真中心频率2.4GHz带通滤波器的全流程,包括工程准备、指标定义、原理图设计、仿真优化及实际电路实现。通过切比雪夫滤波器拓扑和参数优化,实现高性能的带通滤波器设计,适用于无线通信系统。附有工程文件和常见问题解决方案,助力工程师快速掌握射频滤波器设计技巧。

weixin_30790841的博客 482

less基本使用 简记

Less是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表。Less是一种动态样式表语言,扩展了CSS的功能。Less也是跨浏览器友好。CSS预处理器是一种脚本语言,可扩展CSS并将其编译为常规CSS语法,以便可以通过Web浏览器读取。它提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS。/* Less *///将@var替换为其值 content:@fnord;/* 生成的 CSS */ 。 于less中使用css原生函数

Vvaans的博客 1987

STM32裸机开发基础:寄存器直接操作详解

寄存器是微控制器内部的特殊存储单元,直接与硬件电路连接,用于控制和监视硬件功能。与普通内存不同,寄存器的每一位(bit)通常都有特定的硬件含义。寄存器就是机器的控制面板上的各种开关和指示灯每个开关控制一个具体功能(如打开LED、启动通信)每个指示灯显示一个具体状态(如数据接收完成、错误发生)// GPIO引脚定义1。

2401_88760782的博客 2187

选择器分类和权重计算,less 中的 & 解释

前端学习

m0_56770663的博客 2183

Google Earth Engine ——在 GEE 中计算面积含各类要素计算(土地分类为例)

在遥感应用中工作时,许多操作需要计算面积。例如,需要在监督分类后计算每个类所覆盖的面积,或者找出灾害后区域内受影响的面积。计算栅格和矢量的面积在大多数软件包中是一个简单的操作,但在 Google Earth Engine 中以稍微不同的方式完成 - 这可能会让初学者感到困惑。在这篇文章中,我将概述计算矢量和图像面积的方法。我们将涵盖以下主题,从简单到复杂。 特征的面积计算,即矢量数据 图像的面积计算(单类) 按类别计算图像的面积 按区域按类别计算图像的面积 按年按地区按类别计算图像的面积 准备数据

此星光明博客 4025

华为OD机试 - 开源项目热度榜单(Java 2025 C卷 100分)

H = Wwatch X#watch + Wstar X#star +Wfork X#fork +Wissue X#issue +Wmr X#mr H表示热度值,Wwatch、Wstar、Wfork、Wissue、Wmr分别表示5个统计维度的权重,#watch、#star、#fork、#issue、#mr分别表示5个统计维度的统计值。

学Java,找哪吒 1756

less基础详解

1.初识less less作为一门CSS扩展语言,也就是说CSS预处理器。(Leaner Style Sheets)简称less,它只不过是为css新增这些的功能,比如说:变量、函数、作用域等等。它的优点是:更具有维护性、扩展性等,可以降低了维护的成本,根据按这样的话,那么less可以让我们写更少的代码做更多的事情。 和css相比下,css的语法非常简单,而且对开发者来说要求比较低,比较合适小白者,但是遇到有些问题,比如没有这种变量、函数等等,的确还不如less的扩展性,需要写大量的代...

h907310116的博客 3万+

Python 爬虫实战:爬取微博热搜与用户评论数据

本文系统讲解微博热搜榜单与用户评论数据的爬取技术方案。针对微博热搜榜采用Requests+BeautifulSoup解析静态HTML结构,实现高效爬取;对于动态加载的评论数据,使用Selenium模拟浏览器行为规避反爬机制。详细阐述技术选型、反爬策略、数据清洗及存储方法,提供完整代码实现和输出示例。同时强调合规要求,提示开发者需在遵守平台规则的前提下进行数据采集。该方案为舆情分析和热点研究提供了可落地的技术实现路径。

2503_91057718的博客 1717

LESS 使用方法

第一章 LESS简介 第一节 变量 第二节 混合 第三节 嵌套规则 第四节 函数 运算 第二章 使用 第一节 客户端使用 第二节 服务端使用 第三章 语法 第一节 变量 第二节 混合用法 第三节 带参数混合 第四节 嵌套规则 第五节 运算 第六节 作用域 第七节 注释 第八节 避免编译 第一章 LESS简介 less是一种动态样式语言;为提高css应用的灵活性和效率; LESS 将 CS

Helloweb前端网 4001

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

在前端vue项目引入less,使用less,在less引用外部文件,在less中使用变量

在前端vue项目引入less,使用less,在less引用外部文件,在less中使用变量一、less是什么?二、操作步骤1.引入库2.设置style的lang属性3.使用less总结 一、less是什么? Less是一种CSS的扩展和动态样式表语言,CSS预处理器,可以在客户端或服务器端运行,帮助我们自定义,管理和重用网页的样式表。Less是一种开源语言,也是跨浏览器兼容的语言。 二、操作步骤 1.引入库 代码如下(示例): npm install less-loader@4.1.0 --save

qq_43305958的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Less 安装与使用

Less 安装与使用   1、安装 步骤(1):我们需要NodeJ运行LESS示例。  要下载NodeJ,请打开链接 https://nodejs.org/en/,您 会看到如下所示的屏幕:   下载Recommended For Most Users(建议大多数用户使用)即可。   步骤(2):接下来,运行安装程序以在系统上安装 Node.js 。   步骤(3):安装完后

武林半侠的博客 8056

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

less的基本使用

定义**同一变量名称(名字)两次或多次后,less只会选择最后定义**的!@bg-img:"路径1";@bg-img:"路径2";@bg-img:"路径3";header{// 结果为:background: url("路径3");

lzping_719的专栏 1916

vue项目中使用less

vue项目中使用less: 1、安装依赖: npm install less less-loader --save-dev 或 cnpm install less less-loader --save-dev 2、配置文件: 在webpack.config.js文件中添加如下代码: module:{ rules:[ { test: /\.less$/, loader: "style-loader!css-loader!less-loader", } ] } 3、在页

weixin_42100978的博客 4788

nuxt中less使用

刚刚接触nuxt,记录下学习过程,以备后用,这个less 的使用真是超级简单方便,赞一个 第一步 安装 npm install less less-loader --save-dev 第二步 使用 <style scoped lang="less"> .container{ margin: 100px 0 ; border-top: 1...

weixin_30258027的博客 1337

关于less的基本使用

less作为前端知识的一部分,在一定程度上能帮助我们更高效方便的书写css代码,掌握less也是非常有必要的

2301_78675670的博客 1569

less安装和在Vscode使用less

1、less安装教程 (1)先检查node和npm版本,查看是否安装下载好node (2)使用npm命令安装less npm install less -g 检测less是否成功,使用命令:lessc -v 或 lessc --version。 2、less转css (1)可以使用less命令将less文件转换为css文件,在vscode当前文件夹下的终端输入如下命令: lessc main.less main.css 之后可以引入到html文件中进行使用。 (2)在vsco.

weixin_51345632的博客 2439

Less使用语法(详细)

一、变量 1、使用@符号声明变量 例子: less内容 @width:100px;//变量 @height:100px; @fsize:20px; .less{ width: @width;//变量作为css属性的值 height: @height; background-color: red; font-size: @fsize; } css效果: .less { width: 100px; height: 100px; bac

weixin_44646763的博客 1万+

java less函数_less的LESS 原理及使用方式

展开全部本质上,LESS 包含一套自定义的语法及一个解析器,用户根据这些32313133353236313431303231363533e58685e5aeb931333361303563语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件。LESS 并没有裁剪 CSS 原有的特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的...

weixin_33323907的博客 1269

html如何调用less,浏览器端如何使用Less,需要的朋友可以参考下

之前项目用过Less,现在负责的项目也要使用,所以就总结下Less,也方便以后查看。本文主要是讲浏览器端如何使用Less。简介:LESS是一种由Alexis Sellier设计的动态层叠样式表语言。LESS 是开源的,其第一个版本由Ruby写成,但在后续的版本当中,Ruby逐渐被替换为JavaScript。受益于JavaScript,LESS可以在客户端上运行(IE6+、Webkit、Firefo...

weixin_33700809的博客 3084

Less的基本使用

这些就是简单介绍了下Less的基本使用,less可以在写css的时候增加效率提高,并且Less+rem+flexible可以适配布局

m0_46324704的博客 2350

怎么在html中使用less语言,浏览器端如何使用Less

之前项目用过Less,现在负责的项目也要使用,所以就总结下Less,也方便以后查看。本文主要是讲浏览器端如何使用Less。简介:LESS是一种由Alexis Sellier设计的动态层叠样式表语言。LESS 是开源的,其第一个版本由Ruby写成,但在后续的版本当中,Ruby逐渐被替换为JavaScript。受益于JavaScript,LESS可以在客户端上运行(IE6+、Webkit、Firefo...

weixin_39799290的博客 1153
上一篇: CSS布局模型
下一篇: AngularJS 之 controller as
bunny_Lover
博客等级 码龄12年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值