Less

简介: less语法让我们的CSS写起来更加简洁,明了!

less

http://lesscss.cn/

less是css预编译语言,和其类似的预编译器还有: sass, stylus等,所谓的预编译,其实是把css这种标记语言按照面向对象(编程语言的方式)进行编写(有变量,函数,判断等操作),但是这种写法浏览器是不能正常识别的,需要我们把其再编译为正常的css代码才可以。

嵌套

嵌套写法-告别很多前缀问题

.box {
   
    margin: 20px auto;
    width: 100px;
    height: 100px;
    border: 1px solid red;
    overflow: hidden;
}

.box img {
   
    width: 100%;
    height: 100%;
    transition: all 1s;
}

.box:hover img {
   
    transform: scale(1.3);
}
.box {
   
    margin: 20px auto;
    width: 100px;
    height: 100px;
    border: 1px solid red;
    overflow: hidden;

    img {
   
        width: 100%;
        height: 100%;
        transition: all 1s;
    }

    &:hover {
   
        img {
   
            transform: scale(1.3);
        }
    }

}

作用域

类似于JS作用域链这套机制

每一个大括号都是一个私有的作用域,在里面用到的变量,先看是否为私有的(是否在当前作用域中声明过和形参变量),不是私有的,找上级作用域中的

@A: lightblue;

.box {
   
    @A: lightgreen;
    margin: 20px auto;
    width: 100px;
    height: 100px;
    border: 1px solid @A;

    img {
   
        width: 100%;
        height: 100%;
        transition: all 1s;
    }
}

变量

变量一定-样式更改更为灵活轻便,同样便于一些计算

/* 颜色定义为变量 */
@color-red: lightcoral;
/* 图片路径前缀定义为变量 */
@images: "../images";

.box {
   
    @W:100;
    @H:100px;
    margin: 20px auto;
    width: unit(@W,px);
    height: @H;
    border: 1px solid @color-red;
    overflow: hidden;
    /* 可以理解是字符串的拼接 */ 
    background: url("@{images}/bg.png");
   /* @W-20 这样写的话就会被误解为一个变量名 */ 
    img {
   
        /* less中内置的函数,是用来设置或者去除单位的 */ 
        width: unit((@W) - 20,px);
        height: unit(unit(@H,px) - 20,px);
        transition: all 1s;
    }
    /* 嵌套中的连接符,让后面的选择器紧挨着父选择器 &:hover => .box:hover*/ 
    &:hover {
   
        img {
   
            transform: scale(1.3);
        }
    }

}

函数

  1. 每一个样式类都可以被充当为一个函数,直接在其它的作用域中调取执行(执行特点:不需要传参时,可以不加小括号),但是这种函数的调用是把原有的代码都原封不动地拿过来一份一摸一样地(包括了其所有的后代样式)。

  2. less常用中的内置函数

    • unit
    • darken(颜色变深) lighten(颜色变浅)
      ```less
      .link {
      @BG:lightblue;
      margin: 20px;
      width: 100px;height: 35px;
      border: 1px solid #aaa;
      background : @BG;
      &:hover {
      background: draken(@BG,50%);
      }
      }
   + 

```less
.box2 {
    .box1
}

这样box1就有了和box2一样的样式

继承

基于继承也能够实现样式的共用,但是其不能继承后代样式。

.func_center(@W: 100,@H: 100) {
   
    position: absolute;
    top: 50%;
    left: 50%;
    margin: unit(-@H/2,px) 0 0 unit(-@W/2,px)
}
.box1 {
   
    border: 1px solid red;
}
.box2 {
   
    &:extend(.box1)
    @W: 100;
    @H: 200px;
    .func_center(@W,unit(@H,px));
}

循环

.column-4 {
   
    width: 40%;
}
.column-3 {
   
    width: 30%;
}
.column-2 {
   
    width: 20%;
}
.column-1 {
   
    width: 10%;
}

通过循环可以实现

.loop(@n) when (@n<=4) {
   
    .loop(@n+1);
    .column-@{n} {
   
        width:unit(@n*10,%);
    }
}

谢谢款待

小记整理于 2023 / 8 / 30

目录
相关文章
|
Linux
CentOS 7 安装WireShark,桌面版
CentOS 7 安装WireShark,桌面版
1459 0
|
数据挖掘 BI 持续交付
看懂这5幅图,研发效能分析和改进就容易了
作为 CTO 或企业管理者,我们如何去了解和衡量研发团队的研发效能呢?作为 PMO 和效能负责人,我们该从哪几个维度来回答关于研发效能的问题呢?如何通过效能数据分析,帮助企业管理者透明化研发效能水平和变化趋势,分析效能问题根因、指导改进行动、衡量改进效果。
2765 0
看懂这5幅图,研发效能分析和改进就容易了
|
机器学习/深度学习 传感器 算法
【光学】基于Matlab模拟拉盖尔 - 高斯( Laguerre-Gaussian,LG) 光束光场的光强和相位
【光学】基于Matlab模拟拉盖尔 - 高斯( Laguerre-Gaussian,LG) 光束光场的光强和相位
|
数据可视化 机器人 API
DingTalk「开发者说」钉钉连接平台,企业自建场景下如何实现系统互通
钉钉连接平台通过简单的低代码配置,帮助企业迅捷实现系统集成和连接,降低集成实施的周期和成本。本文主要介绍在企业自建场景下,如何使用连接平台的连接流实现系统互通,包括三个案例分享:1. 会议室预定后发送机器人通知;2. 企业报警信息通过机器人发送到群;3. 销帮帮新增客户同步到企业内部系统。
2180 0
DingTalk「开发者说」钉钉连接平台,企业自建场景下如何实现系统互通
|
人工智能 IDE 物联网
物联网太难 ? 不妨试试用Python来开发
Python作为一门快速发展的解释性编程语言,数以百万计的开发者已经将Python应用在人工智能、游戏开发、数据挖掘、信息安全、系统运维等行业并取得了成功。
物联网太难 ? 不妨试试用Python来开发
|
缓存 资源调度 前端开发
electron踩坑系列之一
以electron作为基础框架,已经开发两个项目了。第一个项目,我主要负责用react写页面,第二项目既负责electron部分又负责UI部分。
2109 0
electron踩坑系列之一
|
新零售 人工智能 供应链
大咖说|试衣到家 CEO:我们卖的不是衣服,是服务
一千个人心中就有一千个时尚界的哈姆雷特,随着时代发展,消费者对时尚的理解和鉴赏能力正逐步提升,对时尚的态度也越来越个性化,更注重体验感与尊贵感。
426 0
大咖说|试衣到家 CEO:我们卖的不是衣服,是服务
|
前端开发 图形学
零基础入门 Unity 之 UGUI 详解专栏
推荐 UGU专栏 -- Unity 之 UGUI 入门级详解专栏。
728 0
零基础入门 Unity 之 UGUI 详解专栏
智慧党建平台建设解决方案,党员信息化管理系统开发app
智慧党建平台旨在打造一个集党建宣传、党建工作管理、党员服务、党员学习、互动交流、数据统计分析为一体的智慧化平台。
427 0
|
弹性计算 网络协议 物联网
阿里云域名查询注册实名认证和备案全过程
阿里云域名查询注册很简单;域名注册之后需要实名认证,否则域名无法解析;想要在阿里云备案只购买域名是不行的,需要购买一台支持备案的云服务器…
8578 0
阿里云域名查询注册实名认证和备案全过程