LESS 继承及其他相关方法

LESS 是一种 CSS 预编译器,它通过添加一些扩展功能来简化 CSS 的编写和维护。其中,最强大的功能之一就是继承。继承可以让我们轻松地重用部分 CSS 规则,并减少代码的冗余程度。

本文将详细介绍LESS 继承的用法以及其他相关方法。

继承

在 LESS 中,我们可以通过 @extend 指令来实现继承。方法非常简单,只需要将要继承的样式的选择器写在 @extend 后面就行了。比如:

---- -
  ------ ------
  ------- ------
  ------- --- ----- -----
-

-------- -
  ------- -----
  ----------------- ----
-

上面的代码中,.box-red 继承了 .box 的全部样式,并在此基础上新增了 background-color 属性。这里需要注意的是,如果一个选择器中使用了 @extend,那么在该选择器的样式中除了 @extend 后面的选择器之外,所有的样式都会被忽略。比如:

---- -
  ------ ------
  ------- ------
  ------- --- ----- -----
-

-------- -
  ------- -----
  ----------------- ----
  ------------- ------ -- -- ------------ ---- --
-

这是因为 .box-red 继承了 .box 选择器的所有样式,包括 border 属性,所以 border-color: green; 不会生效。

除了继承一个已经存在的选择器外,我们还可以继承一个占位符选择器。占位符选择器是类似于普通选择器的,但是在 LESS 中不会被渲染出来,只有在其他选择器继承它时才会生效。通过占位符选择器,我们可以实现一些末尾诸如 -base、-common、-flexible 等公共样式的规范化。
使用占位符选择器来定义公共样式:

--------- -
  ------ ------
  ------- ------
  ------- --- ----- -----
-

使用占位符选择器来继承公共样式:

-------- -
  ------- ----------
  ----------------- ----
  ------------- ------ -- -- ------------ -- --
-

mixin

继承是 LESS 中最重要的方法之一,但是它并不总是最好的选择,特别是在处理一组不相关的规则时。这时候,Mixin 就是一个更好的选择。Mixin 可以让我们定义一组样式规则,并在需要的时候调用它们。

Mixin 的语法非常简单:在 @mixin 后面写上一个名称,在一对大括号中编写一组样式规则,然后在需要的地方,使用 @include 把这些样式规则调用出来即可。比如:

------ -------------- -- --- -- ------ ---- ------- ----- -
  ----------- -- -- ----- -------
-

定义一个名为 box-shadow 的 Mixin,它包含了 x(默认值为 0)、y(默认值为 0)、blur(默认值为 1px)和 color(默认值为 #000)4 个参数,然后在需要的地方,用 @include 把它们调出来:

---- -
  ------ ------
  ------- ------
  ------- --- ----- -----
  -------- --------------- -----
-

这样就不需要每次都写一遍阴影了。

需要注意的是, Mixin 是可以继承的,它们可以包含其他 Mixin,也可以包含其他组件等。这些都使得我们可以轻松地进行高级样式设计。

循环

在 LESS 中,我们还可以使用 for 循环来生成样式,用法和普通编程语言中的 for 循环一样,它可以帮助我们解决一些重复的样式问题。例如:

---- -- ---- - -- - -
  --------- -
    ------ ---------- - ----- - - - ---- - ------
  -
-

上面的代码中,我们使用了一个 @for 循环,让 i 的取值从 1 到 5,然后用 @{i} 来代替它,生成了一组 .col-1.col-2.col-3.col-4.col-5 五个选择器,它们所对应的宽度(width)分别是 (100% - 20px) / 5 * 1 + 20px(100% - 20px) / 5 * 2 + 20px(100% - 20px) / 5 * 3 + 20px(100% - 20px) / 5 * 4 + 20px(100% - 20px) / 5 * 5 + 20px。循环的方法可以让我们减少写重复的样式代码。

总结

LESS 的继承、Mixin 和循环都是非常有用的方法,可以帮助我们快速地编写出易于维护和拓展的样式代码。但是,我们需要注意它们的使用方法和场景,以免滥用带来不必要的麻烦。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65b5eb9badd4f0e0ffea7888


猜你喜欢

  • Socket.io 应用场景分享:即时通讯

    在现代社交网络时代,即时通讯成为了人们生活中必不可少的一部分。而 Socket.io 正是一个能够简化实现即时通讯的 JavaScript 库。本文将分享 Socket.io 的应用场景,以及如何使用...

    9 个月前
  • ES8 中的 async/await 语法:从入门到放弃

    ES8 中的 async/await 语法:从入门到放弃 JavaScript 一直被称为一门异步式语言,它让各种异步操作变得更加容易,比如异步请求,定时器等等。ES6 的 promise 以及 Ge...

    9 个月前
  • 解决 Tailwind 中文字符显示错乱的问题

    在使用 Tailwind 进行前端开发时,有时会遇到中文字符显示错乱的情况。这是因为 Tailwind 默认采用的字体不支持中文字符集,导致中文字符无法正常显示。解决这个问题的方法有多种,下面介绍其中...

    9 个月前
  • 如何在 Mocha 中使用 ES6 的箭头函数语法

    在前端开发中,测试是一个很重要的环节。Mocha 是一个流行的 JavaScript 测试框架,它支持多种风格的测试语法。而 ES6 的箭头函数语法(=>)则提供了更加简洁明了的语法,可以使测试...

    9 个月前
  • 如何使用 Hapi 和 Passport 进行用户认证和授权

    前端开发过程中,用户认证和授权是经常需要处理的问题。Hapi 和 Passport 是两个常用的 Node.js 框架,它们可以帮助我们轻松地完成用户认证和授权的任务。

    9 个月前
  • Angular 11 中如何使用 @Input 和 @Output 传递数据

    Angular 11 中如何使用 @Input 和 @Output 传递数据 Angular 是一款流行且强大的前端框架,由于其模块化、组件化的设计思想,使得数据传递成为其中非常重要的一环。

    9 个月前
  • MongoDB 中的时间日期存储方式及使用技巧

    MongoDB是目前非常流行的NoSQL数据库,它可以方便地存储各种不同类型的数据,包括时间日期。但是,MongoDB中的时间日期存储方式有很多种,如何选择最适合的存储方式并有效地使用数据呢?本文将对...

    9 个月前
  • ECMAScript 2020:Promises.allSettled() 的使用方法

    在 ECMAScript 2020 中,我们迎来了一个新的 Promise 方法,它就是 Promise.allSettled()。这个方法提供了一种更加灵活的方式,来处理 Promise 数组中的多...

    9 个月前
  • 如何使用 Enzyme 对 React 组件进行全面测试

    在前端开发中,测试是必不可少的一部分。React 是一种流行的前端框架,而 Enzyme 则是一个用于 React 组件测试的工具库,可以帮助你快速、全面地测试 React 组件。

    9 个月前
  • 如何在 Serverless 框架下实现数据库连接池

    在 Serverless 架构模式下,使用数据库连接池来管理多个数据库连接将会非常重要。本文将介绍什么是 Serverless 架构以及什么是数据库连接池,如何在 Serverless 架构下实现数据...

    9 个月前
  • 使用 ES9 中的 BigInt 型数据解决 JavaScript 数字精度问题

    JavaScript 是一种弱类型语言,对于数字类型的数据处理比较困难,尤其是在处理大数时。由于 JavaScript 采用 IEEE 754 标准来表示数字,所以在处理过大或过小的数字时,就会出现精...

    9 个月前
  • 遇到 React 报错: Element type is invalid: expected a string ,该如何解决?

    在使用 React 进行前端开发的过程中,可能会遇到 Element type is invalid: expected a string 这样的报错信息。这个错误提示意味着在使用 React.cre...

    9 个月前
  • Docker-CE 安装与卸载脚本 Bash 命令

    前言 Docker 是当前很火的一个容器化方案,它可以让应用离开开发环境,快速、简单地在生产环境中运行。Docker 可以大大提高我们的开发效率,降低应用程序的运行成本。

    9 个月前
  • PM2 教程:如何在应用运行时执行脚本?

    什么是 PM2? PM2 是一个包括进程管理、负载均衡、日志管理等多种功能的 Node.js 进程管理工具。它可以帮助我们简化 Node.js 应用的管理流程,让我们更加高效地运维我们的应用。

    9 个月前
  • Tailwind 如何优化样式文件

    Tailwind 是一种基于原子类的 CSS 框架,它提供了大量的预定义类,使得我们可以快速地构建出页面布局和样式。但是,随着项目的不断增大,Tailwind 的样式文件也会变得越来越大,可能会导致页...

    9 个月前
  • 解决 Mocha 测试时出现 “TypeError:无法读取未定义的属性” 错误的方法

    在前端开发中,Mocha 是一个常用的测试框架,它可以帮助开发者快速、方便地编写和运行测试用例。但是,有时候在执行测试用例时,可能会遇到 “TypeError:无法读取未定义的属性” 错误,这会导致测...

    9 个月前
  • 布局利器 ——CSS Grid(上)

    随着前端技术的不断发展,布局技术也在不断进化,越来越多的布局方案出现。CSS Grid 布局是一种全新的布局方式,相比传统的布局方式,它的优势非常明显,比如更加灵活,更加快速,更加易于维护。

    9 个月前
  • 优化 Hapi 应用程序的数据库查询

    在开发 Hapi 应用程序时,数据库查询是一个必不可少的环节。然而,如果不加优化的话,数据库查询可能会导致应用程序变慢甚至崩溃。在本文中,我们将介绍一些优化 Hapi 应用程序数据库查询的方法。

    9 个月前
  • Angular 8 中如何使用 HttpClient 发送 Delete 请求

    在 Angular 8 中,HttpClient 是一个常见的用于进行 HTTP 请求的服务。它提供了各种方法,如 GET、POST、PUT、DELETE 等。本文将详细介绍如何在 Angular 8...

    9 个月前
  • ES11 全新特性:Nullish Coalescing(空值合并) 运算符

    在前端开发中,处理 null 或 undefined 值是经常遇到的问题,而传统的 || 运算符在某些情况下并不能很好地解决这个问题。因此,ES11 新增了一个 Nullish Coalescing ...

    9 个月前

相关推荐

    暂无文章