CSS预处理器【Less】

简介: CSS预处理器【Less】


一小池勺❤️❤️❤️ ❤️❤️❤️❤️胸有惊雷而面如平湖者,可拜上将军也。


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(颜色变浅)
.link {
@BG:lightblue;
margin: 20px;
width: 100px;height: 35px;
border: 1px solid #aaa;
background : @BG;
&:hover {
background: draken(@BG,50%);
}
}

.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,%);
    }
}

谢谢款待

小记整理于 2024 / 1 / 1

目录
相关文章
|
1月前
|
前端开发 开发者
CSS预处理器Less、Scss
【10月更文挑战第3天】
118 59
|
2月前
|
前端开发 开发者
在 Vite 中使用 CSS 预处理器的劣势是什么?
在 Vite 中使用 CSS 预处理器的劣势是什么?
|
5月前
|
前端开发 JavaScript 开发者
CSS进阶 - CSS Modules与预处理器简介
【6月更文挑战第17天】前端开发中,CSS Modules和预处理器(如Sass、Less)解决了大规模项目中CSS的管理难题,提升代码复用和维护性。CSS Modules提供局部作用域的类名,避免全局冲突,而预处理器扩展CSS功能,使代码更像编程语言。常见问题包括命名冲突和过度嵌套,可通过自动哈希、少嵌套、合理变量规划来解决。结合两者使用,遵循模块化和适度预处理原则,集成到构建工具中,能优化开发流程。这些技术是现代前端不可或缺的工具。
71 2
|
1月前
|
前端开发 开发者
CSS的预处理器是什么?
CSS的预处理器是什么?
49 4
|
2月前
|
前端开发
在 Vite 中使用 CSS 预处理器的优势是什么?
在 Vite 中使用 CSS 预处理器的优势是什么?
|
1月前
|
存储 前端开发 开发者
深入了解 Sass 和 SCSS:CSS 预处理器的强大功能
Sass(Syntactically Awesome Stylesheets)是一个强大的 CSS 预处理器,为开发者提供了诸多高级特性,如变量、嵌套、混合、继承等,简化了 CSS 的编写和管理。SCSS 是 Sass 3 引入的新语法,完全兼容 CSS3,并增强了 Sass 的动态功能。本文详细介绍了 Sass 和 SCSS 的核心特性及其在实际开发中的应用,如变量定义、嵌套规则、混合、继承、以及常用的操作符与扩展功能。
33 0
|
1月前
|
前端开发 开发者 容器
Vue3中Sass的安装与使用指南:轻松上手CSS预处理器
Vue3中Sass的安装与使用指南:轻松上手CSS预处理器
259 0
|
4月前
|
前端开发 C++
CSS预处理器之Sass(一)
CSS预处理器之Sass(一)
55 2
expectedcss(css-rcurlyexpected),使用:变红怎么整,给他改成less就可以了
expectedcss(css-rcurlyexpected),使用:变红怎么整,给他改成less就可以了
|
4月前
|
前端开发
CSS预处理器之Sass(三)
CSS预处理器之Sass(三)
27 0