Less CSS 守卫

红牛战神
• 阅读 1125

本节我们学习 CSS守卫(CSS Guards),在上一节中,我们学习了混合守卫,如何对 Mixins 进行条件判断。但是某些时候我们不止需要对 Mixins 进行条件判断, 也需要对 CSS 的样式类进行条件判断。所以这就需要用到 CSS 守卫啦。

CSS 守卫是在 v1.5.0 版本才添加的,而在 v1.5.0 版本之前,如果我们要定义一个 CSS 守卫:

.xkd() when (@choice = true) {
  p{
    color: @color;
  }
}

.xkd();

现在我们可以直接在样式类上应用 guard ,例如:

p when (@choice = true) {
  color: red;
}

我们还可以通过与 & 符号结合实现 if 类型的语句,从而实现对多个样式类进行条件判断:

& when (@choice = true) {
  p {
    color: white;
  }
  a {
    color: blue;
  }
}
示例:

下面我们来看一个 CSS 守卫的具体例子:

@variable: a;
.xkd() {
   @variable: b;
  .style1 when (@variable=a) {
    font-size: 12px;
    color: red;
  }
  .style2 when (@variable=b) {
   font-size: 16px;
    color: blue;
  }
}

.xkd();

编译成 CSS 代码:

.style2 {
  font-size: 16px;
  color: blue;
}

上述代码中,在混合 .xkd 中多两个样式类进行了条件判断,条件判断的依据是变量 @variable 变量的值,而根据之前我们学习过的变量作用于可以知道,会优先在混合.xkd 中查找变量 @variable,此时 @variable 的值为 b,所以可以看到编译后输出样式为 .style2

点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
3年前
前端: 如何更高效的学习Css? 有哪些库值得推荐?
之前有很多朋友问我如何快速学习css以及有哪些好用的css库,最近也抽出时间思考整理了一下,今天就和大家分享一下我的经验.如何高效学习Css之前在工作中也使用css做过很多有意思的事情,比如用css画图标,写轮播图,写动效,做布局等等,但是这些应用的实现都依赖于html和css基础知识.根据我自己的学习经验,我们需要掌
海军 海军
4年前
Vue | 路由守卫面试常考
前言最近在整理基础,欢迎掘友们一起交流学习,关注公众号<ahref"https://z3.ax1x.com/2021/03/27/6zmqSI.jpg"前端自学社区</a<br/结尾有彩蛋哦!🎉🎉🎉VueRouter路由守卫导图目录1.路由守卫分类2.全局路由守卫3.单个路由守卫
Easter79 Easter79
4年前
vue 路由导航白话全解析
这里先放上官网的教程和说明:点击这里,vue导航守卫官方文档(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Frouter.vuejs.org%2Fzh%2Fguide%2Fadvanced%2Fnavigationguards.html)路由守卫路由守卫说白了就是路由拦截,在
菜园前端 菜园前端
2年前
什么是 CSS?
原文链接:什么是CSS?CSS指层叠样式表(CascadingStyleSheets),理解为CSS样式就可以了。CSS样式有什么作用呢?比如我们在页面中添加了一个div,我想给这个div设置宽度、高度、背景色、阴影、内容字体样式等等,就是通过CSS样式来
Souleigh ✨ Souleigh ✨
4年前
只听说过CSS in JS,怎么还有JS in CSS?
CSSinJS是一种解决css问题想法的集合,而不是一个指定的库。从CSSinJS的字面意思可以看出,它是将css样式写在JavaScript文件中,而不需要独立出.css、.less之类的文件。将css放在js中使我们更方便的使用js的变量、模块化、treeshaking。还解决了css中的一些问题,譬如:更方便解决基于状态的样式,更容易追溯依赖关
海军 海军
4年前
Vue | 路由守卫面试常考
前言最近在整理基础,欢迎一起交流学习<br/结尾有彩蛋哦!🎉🎉🎉VueRouter路由守卫导图目录1.路由守卫分类2.全局路由守卫3.单个路由守卫4.组件路由守卫5.路由守卫执行的完整过程<hr/路由守卫分类全局路由单个路由独享组件内部
Stella981 Stella981
4年前
Less 嵌套
本节我们学习Less中的嵌套,嵌套应该很容易理解,HTML语言中就支持标签的嵌套。我们在使用CSS时,如果想要为多层嵌套的元素设置样式,要么给元素加上一个类选择器或ID选择器,要么使用后代选择器。例如:.xkd{fontsize:14px;}.xkdp{lineheight:25
Stella981 Stella981
4年前
CSS预处理器SASS用法和koala工具的使用
   最近在学习前端的时候,发现了一个SASS(CSS预处理器),感觉在前端布局写css样式来说是相当强大,效率又高,在用到SASS的时候感觉很爽。   首先说一下传统的CSS,在程序员的眼里感觉是一个很麻烦的东西,没有变量,也没有运算,还没有条件语句,感觉写的相当费事。  在人们都感觉费事的同时,真有牛人把CSS加入了编程的元素,这就是(CS
Stella981 Stella981
4年前
Sass
嵌套规则(NestedRules)Sass允许将一套CSS样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器mainp{color:00ff00;width:97%;.redbox{
Wesley13 Wesley13
4年前
JS和CSS加载(渲染)机制不同
一、结论CSS可以在页面加载完成后随时渲染。举个例子:通过js给某个元素加一个id或者css,只要这个id或者css有对应的样式,此元素的样式就会自动生效。JS不可以在页面加载完成后生效。最明显的例子就是使用EasyUI的时候,iframe中哪些样式无效(EasyUi是依靠JS进行样式处理的,所以无法运行JS,那么样式也就无法设置。简单点说
liam liam
2年前
如何使用 Less:Less 教程,一步步带你入门
Less(LeanerStyleSheets的缩写)是一门向后兼容的CSS扩展语言。,它扩展了CSS(层叠样式表)的功能并提供了更灵活、更强大的样式定义和管理机制。通过使用Less,开发人员可以编写可维护、可重用的样式代码,并以简洁的语法实现复杂的样式效果