什么是Mixin

Less中,允许你将一个类嵌入到另一个类中,被嵌入的类也可以看作变量。换句话说,你可以用一个类定义样式,然后把它当作变量,在另一个类中,只要引用变量的名字,就能使用它的所有属性,

Less把这种特性称作 mixin,中文把翻译为“混入”或“混合”,其目的就是从现有的样式中添加属性。请看以下Less代码:

  1. .bordered {
  2.   border-top: dotted 1px black;
  3.   border-bottom: solid 2px black;
  4. }

上述代码中,.bordered 定义了一个属性集。然后,在任何需要使用 .bordered 属性集的选择器中,只需像下面这样调用就可以了:

  1. #menu a {
  2.   color: #111;
  3.   .bordered;
  4. }
  5. .post  a {
  6.   color: red;
  7.   .bordered;
  8. }

这样一来,.bordered中定义的属性集,就会在 #menu a 和 .post a 中体现出来。编译后的CSS代码为:

  1. .bordered {
  2.   border-top: dotted 1px black;
  3.   border-bottom: solid 2px black;
  4. }
  5. #menu a {
  6.   color: #111;
  7.   border-top: dotted 1px black;
  8.   border-bottom: solid 2px black;
  9. }
  10. .post  a {
  11.   color: red;
  12.   border-top: dotted 1px black;
  13.   border-bottom: solid 2px black;
  14. }

从上面的代码可以看出:mixin 其实就是一种嵌套,简单的讲,mixin 就是规则级别的复用。除了类选择器外,你也可以使用 id 选择器来定义 mixin。如:

  1. #bordered {
  2.   border-top: dotted 1px black;
  3.   border-bottom: solid 2px black;
  4. }
  5. #menu a {
  6.   color: #111;
  7.   #bordered;
  8. }

编译后的CSS代码为:

  1. #bordered {
  2.   border-top: dotted 1px black;
  3.   border-bottom: solid 2px black;
  4. }
  5. #menu a {
  6.   color: #111;
  7.   border-top: dotted 1px black;
  8.   border-bottom: solid 2px black;
  9. }

从上面的代码可以看出,使用 class、id 定义mixin 时,mixin的定义会被原封不动的输出到编译生成的CSS代码中。

如果希望编译生成的CSS代码中不包含mixin的定义,在定义 mixin时,只需在 class、id 的后面添加一对小括号即可。而在调用时,小括号是可选的。如:

  1. #x() {
  2.   border-top: dotted 1px black;
  3.   border-bottom: solid 2px black;
  4. }
  5. #menu a {
  6.   color: #111;
  7.   #x;
  8. }

编译后的CSS代码为:

  1. #menu a {
  2.   color: #111;
  3.   border-top: dotted 1px black;
  4.   border-bottom: solid 2px black;
  5. }

Less的Mixin的更多相关文章

  1. vue.mixin与vue.extend

    vue.mixin 全局注册一个混合,影响注册之后所有创建的每个 Vue 实例.谨慎使用全局混合对象,因为会影响到每个单独创建的 Vue 实例(包括第三方模板).大多数情况下,只应当应用于自定义选项, ...

  2. 用mixin引入模块后, 方法重名的解析方法

    关于mixin, 经常被问到一个问题是, 方法查找是如何处理的? 特别地, 如果类, 父类, 以及类所包含的mixin中, 都定义有相同名字的方法时, 会发生什么? 答案是, ruby首先会从对象的直 ...

  3. 组件嵌套+Mixin函数demo

    非DOM属性:1.dangerouslysetInnerHTML(xxs跨站攻击) 2.key 3.ref 编写组件嵌套 <!DOCTYPE html><html>  < ...

  4. 从mixin到new和prototype:Javascript原型机制详解

    从mixin到new和prototype:Javascript原型机制详解   这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...

  5. sass揭秘之@mixin,%,@function

    因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...

  6. 你的 mixin 兼容 ECMAScript 5 吗

    原文:Are your mixins ECMAScript 5 compatible? 作者:Nicholas C. Zakas 我最近在与客户合作的项目中,需要充分利用的 ECMAScript 5, ...

  7. Design Pattern: Not Just Mixin Pattern

    Brief 从Mix-In模式到Mixin模式,中文常用翻译为“混入/织入模式”.单纯从名字上看不到多少端倪,而通过采用Mixin模式的jQuery.extend我们是否可以认为Mixin模式就是深拷 ...

  8. mixin设计模式

    mixin可以轻松被一个子类或者一组子类继承,目的是函数复用.在js中,我们可以将继承MiXin看作为一种通过扩展收集功能的方式. e.mixin = function(t) { for (var i ...

  9. Ruby学习之mixin

    直接上代码: module Action def jump @distance = rand(4) + 2 puts "I jumped forward #{@distance} feet! ...

  10. 我的常用mixin 之 lines

    /** * 最多显示 $lineCount 行 * lines * * example: * @include lines; * @include lines(3); */ @mixin lines( ...

随机推荐

  1. 安装阿里Java代码规约插件

    概述 2017年10月14日杭州云栖大会,Java代码规约扫描插件全球首发仪式正式启动,规范正式以插件形式公开走向业界,引领Java语言的规范之路.目前,插件已在云效公有云产品中集成,立即体验!(云效 ...

  2. Jvm加载jar包的顺序

    使用-XX:+TraceClassPaths或者在服务器上执行jinfo时,都能得到classpath包含的jar包,例如: java.class.path = local/aaa/lib/sprin ...

  3. 03Vue事件

    Vue提供了事件的绑定,方法写在methods对象中. 绑定dom中有两种方法: 方法一:v-on:click/dblclcick/mouseOver/mouseOut="方法名" ...

  4. MySQL技术内幕汇总

    MySql技术内幕之MySQL入门(1) MySql技术内幕之MySQL入门(1) 检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 若没有显示已安装结 ...

  5. [oracle 使用(2)] Oracle的简单使用

    1:oracle的服务 oracleservice + sid # 数据库服务 oracleoradb10g_home1listener # 数据库的监听服务. 2:启动本机数据库: 启动oracle ...

  6. C++流类库(11)

    C++的流类库由几个进行I/O操作的基础类和几个支持特定种类的源和目标的I/O操作的类组成. 流类库的基础类 ios类是isrream类和ostream类的虚基类,用来提供对流进行格式化I/O操作和错 ...

  7. Jenkins集成taffy进行自动化测试并输出测试报告

    本文主要介绍Jenkins集成taffy/nose框架进行自动化测试并输出测试报告方法. 0. 测试环境 Jenkis主节点部署在CentOS系统上,子节点为Win10 64位系统(即我们本机运行自动 ...

  8. <script src="xxx.php"></script>

    应热情粉丝的殷切期待,我决定从百忙之中抽出时间来完成这篇博文.(开玩笑啦) 我也是近期才接触到这种引用js的办法.例如,有这样一段js代码 <script src='http://ww.***. ...

  9. Prime Ring Problem

    Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...

  10. Problem O

    Problem Description Before bridges were common, ferries were used to transport cars across rivers. R ...