如何在 LESS 中使用类似 SASS 中的占位符选择器?

介绍

LESS 是一种动态样式语言,它是 CSS 的一种拓展语言,继承了 CSS 的基本语法,而在此基础上增加了变量、Mixin、函数等特性,以帮助前端工程师坚持 DRY(Don't Repeat Yourself)原则。同时,LESS 还提供了类似 SASS 中占位符选择器的特性,即 placeholder selectors。通过能够在项目中使用占位符选择器,而不仅仅是普通的选择器,可以减少代码中的重复代码,使得样式更易于维护。

在本篇文章中,我们将重点介绍在 LESS 中如何使用占位符选择器,并且会提供示例代码。

占位符选择器的定义

占位符选择器是一种特殊类型的选择器,在 SASS 中通过以 “%” 作为前缀来定义。

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

LESS 中占位符选择器的使用

在 LESS 中,则需要通过类似Mixin的方式定义占位符选择器,与SASS不同的是,变量占位符标识符是“@”。

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

使用时,需要通过 & 符号,引用占位符选择器的名称:

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

以上代码中使用了占位符选择器.@placeholder-selector 作为混合器,混入到.container::before 中。当然,你也可以将占位符选择器与普通选择器一起混合。

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

占位符选择器与Mixin 的区别

虽然在使用方法上,占位符选择器像Mixin,但是两者之间是有区别的:

编译时机

占位符选择器在编译时不会生成任何 CSS 代码,只有在被引用(混入)到普通选择器中时才会生成代码。而Mixin 在定义时会生成 CSS 代码,不论是否被引用,都会生成代码。

多继承

占位符选择器可以实现多继承的功能,可以作为多个选择器的基类,而Mixin 只能实现单继承。

条件混合

Mixin 可以用在 @if 语句中,根据条件混合进入样式表。而占位符选择器不行,它本身不会生成任何 CSS 代码。

总结

在 LESS 中,占位符选择器是一种很方便的工具,可以帮助开发者减少代码量,提高可维护性,同时也可以作为多重样式继承的工具,为工程师提供更多便利。但是占位符选择器与Mixin 之间还是有区别的,开发者选择使用时应该注意这些细节。

示例代码

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

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

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

参考资料

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


猜你喜欢

  • Express.js 中使用 Node-Red 进行数据流处理

    简介 在 Web 开发领域,Express.js 是非常流行的 Node.js Web 框架。它极易上手,能够快速构建稳定、高效的 Web 应用。而 Node-Red 则是一个基于 Node.js 的...

    1 年前
  • ES11 如何把 await 放在函数外

    在 ES11 中,我们可以把 await 放在函数外部的代码块中,实现异步任务的等待。这个特性是在 ECMAScript 编译器提出的提案之一,它使得我们在处理异步任务时可以更加灵活和便捷。

    1 年前
  • Angular 中使用 compile 服务编译模板的应用场景

    介绍 在 Angular 中,compile 是一个允许我们在运行时动态编译并修改模板的服务。通过使用 compile,我们可以让 Angular 程序更加灵活,并且可以实现一些非常有用的功能。

    1 年前
  • ES6 中的数组扩展方法初探

    随着 Web 技术的不断升级,前端开发也在持续发展。其中,ES6 (ECMAScript 6)是一种新的 JavaScript 标准,引入了一些新的语法和特性来加强 JavaScript 的能力。

    1 年前
  • 使用 ASP.NET Core 和 SignalR 实现 Server-Sent Events

    Server-Sent Events (SSE) 是一种在 Web 应用程序中实现服务器向客户端推送事件的技术。使用 SSE 技术,可以通过简单的 HTTP 连接实时向客户端发送事件和消息。

    1 年前
  • MongoDB 读写性能变差,该如何处理?

    背景 MongoDB 是当前十分流行的 NoSQL 数据库之一,它具有高速、灵活、可扩展性强等优点,在前端项目中被广泛应用。然而,若数据量逐渐增加,读写性能却有可能急剧下降,这将影响后续业务的开展,所...

    1 年前
  • 解决 Next.js 在 Heroku 上的 404 问题

    引言 Next.js 是一款非常流行的 React 框架,它可以帮助我们快速构建基于 React 的 SSR 应用程序。Heroku 是一个流行的云平台,它可以帮助开发者轻松地将应用程序部署到云端。

    1 年前
  • 使用 Fastify 和 Socket.io 构建实时聊天

    前言 实时聊天是现代化的应用程序设计中不可或缺的特性。然而,要实现实时聊天的功能是挑战性的,因为它需要不仅仅是一个可靠的通讯协议,还需要一个高效的框架来处理网络请求和事件。

    1 年前
  • Deno 中使用 GraphQL 构建 API 的实例解析

    GraphQL 是一种查询语言,用于 API 的设计和查询。在 Web 开发中,GraphQL 已经成为了一个受欢迎的 API 解决方案。而 Deno 则是一个新兴的 JavaScript 运行时,通...

    1 年前
  • 在 SPA 应用中使用 Axios 实现数据请求和响应拦截

    随着前端技术的飞速发展,单页面应用(SPA)已经成为了一种主流形式。SPAs 具有许多优点,例如快速响应时,保持页面状态,减少服务器压力等。为了与服务器交互数据,我们需要使用一些库和框架来进行网络请求...

    1 年前
  • 为什么需要使用 CSS Reset?

    作为前端开发者,你一定遇到过浏览器样式兼容的问题。虽然每个浏览器都有自己的默认样式,但它们的差异可能会导致网页展示效果不同。为了解决这个问题,我们需要使用 CSS Reset。

    1 年前
  • Cypress 如何进行访问控制的测试?

    在前端开发过程中,我们经常需要进行访问控制的测试,以确保用户只能访问自己被授权的资源。Cypress 是一个流行的前端测试框架,支持编写自动化测试用例,可以帮助我们快速构建测试套件,自动化执行测试用例...

    1 年前
  • 基于 Web Components 的应用程序的扩展功能

    在前端开发过程中,经常需要通过不同的组件和插件来扩展应用程序的功能,但是这些组件和插件往往是针对特定的框架或库而设计的,限制了它们的复用和搭配性。为了解决这个问题,Web Components 作为一...

    1 年前
  • 如何在 Custom Elements 中使用 Web Components 标准?

    如何在 Custom Elements 中使用 Web Components 标准? 在现代的 Web 开发中,Web 组件已经成为了一个很重要的概念。它们通过 Web Components 标准为我...

    1 年前
  • Chai 中 expect 的使用教程

    前言 在前端开发中,写测试用例是非常重要的。通过测试用例,我们可以验证代码的正确性、稳定性和可用性,从而提升代码质量和开发效率。 在测试用例中,断言(Assertion)是核心。

    1 年前
  • ES9 之 Object.getOwnPropertyDescriptors() 使用指南

    在 ES9 中,引入了一个新的方法 Object.getOwnPropertyDescriptors(),用来获取对象属性的完整描述符。本文将详细介绍该方法的使用以及其在前端开发中的应用。

    1 年前
  • RxJS 中的 groupBy 和 partition 操作符

    本文将介绍 RxJS 中的 groupBy 和 partition 操作符,并详细说明它们的用法和意义,帮助前端开发者更好地理解和应用 RxJS。 RxJS 简介 RxJS 是一个基于可观察序列的函数...

    1 年前
  • 在 Bootstrap 和 Tailwind 之间做出正确的选择

    众所周知,Bootstrap 和 Tailwind 都是前端类的 UI 框架,具有巨大的用户群体和广泛的应用范围。但是,对于初学者来说,选择适合自己的框架时往往会犯一些错误。

    1 年前
  • 如何使用 CSS Grid 实现圣杯布局?

    CSS Grid 是最新的一种布局方式,它为前端开发者提供了更加灵活和强大的布局能力。圣杯布局也是前端开发中难度较高的一种布局方式,但是使用 CSS Grid 可以更加方便地实现这种布局。

    1 年前
  • SASS 的函数库:Bourbon 的使用方法和注意事项

    在前端开发中,CSS 是我们经常需要编写的一种语言。而 SASS 是一个非常流行的 CSS 预处理器,它可以大大简化我们的样式表代码,提高我们的开发效率。 Bourbon 是 SASS 的一个函数库,...

    1 年前

相关推荐

    暂无文章