五、作为函数使用的Mixin
  • 从mixin返回变量

在mixin中定义的所有变量都是可见的,并且可以在调用者的作用范围中使用(除非调用者用相同的名称定义它自己的变量)。

.mixin(){
@width:100%;
@height:200px;
}
.caller{
.mixin();
width: @width;
height: @height;
}

输出:

.caller {
width: 100%;
height: 200px;
}

因此,在mixin中定义的变量可以作为其返回值。这使我们可以像函数一样使用 .mixin 。

.average(@x, @y){
@average:((@x + @y )/2);
}
div{
.average(16px, 50px);
padding: @average;
}

输出:

div {
padding: 33px;
}
六、@import  导入指令 
  • 从其他样式表导入样式

在标准CSS中,@ import规则必须优于所有其他类型的规则。但Less.js不关心@ import语句在代码中的具体位置。例如:

.foo {
background: #900;
}
@import "this-is-valid.less";

6.1 文件扩展名 - File extensions

@import 可以根据文件扩展的不同来不同地处理语句

  • 如果文件有 .css扩展名,将被视为css,@ import语句规则保持不变 (具体见下面的描述)。
  • 如果它有任何其他扩展名,它将被视为 less进行导入。
  • 如果它没有扩展,.less将被添加上,它将会作为一个less文件被添加。
@import "foo";      // 作为foo.less 被导入
@import "foo.less"; // 作为foo.less 被导入
@import "foo.php"; // foo.php 作为 a less file被导入
@import "foo.css"; // 保持原有的声明

可以使用以下选项覆盖该行为

七、导入选项

Less为CSS @import CSS at- rule提供了几个扩展,以提供更多的灵活性,使您能够处理外部文件。

语法:@import (keyword) "filename";

下面这些指令可以使用:

  • reference 使用 less 文件,但不要输出它
  • inline 在输出中包含源文件,但不处理它
  • less 无论文件扩展名是什么,将文件视为一个 less 文件
  • css  无论文件扩展名是什么,将文件视为一个css 文件
  • once 只引入这个文件一次(这是默认行为)
  • multiple 引入这个文件多次

7.1 reference

使用@ import(reference) 导入外部文件,但是,除非引用,否则不将导入的样式添加到已编译的输出中。

例如:

@import (reference) "foo.less";

reference是Less语言中最强大的特性之一,想象一下,在导入的文件中,引用的每个指示符和选择器都带有一个引用标志,导入是正常的,但是当生成CSS时,"reference"选择器(以及任何包含reference 选择器的媒体查询)都不是输出。除非引用样式用作 mixins 或 extended,否则引用样式不会出现在生成的CSS中。

另外,根据使用的方法(mixin或extend),reference会产生不同的结果:

  • extend  当一个选择器被extended(扩展)时  ,只有新的选择器被标记为没有被引用referenced,并且它被拉入到引用@ import语句的位置。
  • mixins  当 reference 样式用作隐式mixin时,它的规则是混合的,标记为“not reference”,并在被引用的位置显示为正常

例子:

这允许您能从一个库中提取特定的、有针对性的样式,例如bootstrap通过做类似的事情来引导

.navbar:extend(.navbar all) {}

你只会引进来自Bootstrap的navbar相关样式

7.2 inline

  • 使用 @import(inline) 包含外部文件,但不处理它们

发布v1.5.0

例子:

@import (inline) "not-less-compatible.css";

当CSS文件可能不那么兼容时,您可以使用inline ;这是因为虽然Less支持大多数已知的标准CSS,但它不支持某些地方的注释,不支持所有已知的CSS hacks,而不修改CSS。 因此,您可以使用该文件将文件包含在输出中,这样所有的CSS都将在一个文件中。

 

7.3 less

  • 使用@ import(less)来处理导入的文件,而不考虑文件扩展名。
@import (less) "foo.css";

7.4 css

  • 使用@ import(css)将导入的文件视为常规的css,而不考虑文件扩展名。这意味着import语句将被保留原样。
@import (css) "foo.less";

输出:

@import "foo.less";

7.5 once

  • @ import语句的默认行为。这意味着该文件只导入一次,而该文件的后续导入语句将被忽略。
@import (once) "foo.less";
@import (once) "foo.less"; // 这条语句会被忽略

7.6 multiple

  • 使用@ import(多个)允许导入具有相同名称的多个文件。这是和 once 相反的行为。

less新手入门(三) 作为函数使用的Mixin、@import 导入指令 、@import 导入选项的更多相关文章

  1. Swift语法基础入门三(函数, 闭包)

    Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...

  2. 《挑战30天C++入门极限》新手入门:C++中的函数重载

        新手入门:C++中的函数重载 函数重载是用来iostream>  using namespace std;  int test(int a,int b);  float test(flo ...

  3. 《挑战30天C++入门极限》新手入门:关于C++中的内联函数(inline)

        新手入门:关于C++中的内联函数(inline) 在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数. 可能说到这里,很 ...

  4. awk 新手入门笔记

    转自:http://www.habadog.com/2011/05/22/awk-freshman-handbook/ awk新手入门笔记 @作者 : habadog@邮箱 : habadog1203 ...

  5. Linux 新手入门教程

    Linux 新手入门教程 1991年10月5日,Linus Torvalds 在互联网上发布消息,宣布他自己开发的内核系统诞生了.他将内核源代码保存在芬兰最大的 FTP 网站上,命名为 Linux,取 ...

  6. 新手入门指导:Vue 2.0 的建议学习顺序

    起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...

  7. 原创:从零开始,微信小程序新手入门宝典《一》

    为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...

  8. 【原创】新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  9. 课程上线 -“新手入门 : Windows Phone 8.1 开发”

    经过近1个月的准备和录制,“新手入门 : Windows Phone 8.1 开发”系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://www.microsoftvirtuala ...

随机推荐

  1. HDU1024 多段最大和 DP

    题目大意: 在n个数,求不重复的m段中的数据总和的最大值 令dp[i][j]表示将前j个数分成 i 段时得到的最大值(必取到第 j 个数) 状态转移可列为 dp[i][j]=Max(dp[i][j-1 ...

  2. 听dalao讲课 7.26

    XFZ今天讲了些关于多项式求ln和多项式求导以及多项式求积分的东西 作为一个连导数和积分根本就不会的蒟蒻,就像在听天书,所以不得不补点前置知识 1.积分 积分是微积分学与数学分析里的一个核心概念.通常 ...

  3. 【BZOJ2301】Problem b(莫比乌斯反演)

    题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d, 且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b≤50000 ...

  4. POJ 3415 (后缀自动机)

    POJ 3415 Common Substrings Problem : 给两个串S.T (len <= 10^5), 询问两个串有多少个长度大于等于k的子串(位置不同也算). Solution ...

  5. 从零开始写STL-容器-双端队列

    从零开始写STL-容器-双端队列 什么是双端队列?在介绍vector源码,我们发现在vector前端插入元素往往会引起大量元素的重新分配,双端队列(deque)就是为了解决这一问题,双端队列中在首端和 ...

  6. [bzoj4698][Sdoi2008]Sandy的卡片_后缀数组_二分/单调队列_双指针

    Sandy的卡片 bzoj-4698 Sdoi-2008 题目大意:题目链接. 注释:略. 想法: 这个题跟一个Usaco的题特别像.我们把这些串差分 现在我们要求的就是公共子串且出现次数不少于$k$ ...

  7. 输入一个URL之后。。。

    1.输入URL2.浏览器去浏览器缓存.系统缓存.路由器缓存查找缓存记录,有则直接访问URL对应的IP,无则下一步3.DNS解析URL,获得对应的IP4.浏览器通过TCP/IP三次握手连接服务器5.客户 ...

  8. 洛谷 P1166 打保龄球

    P1166 打保龄球 题目描述 打保龄球是用一个滚球去打击十个站立的柱,将柱击倒.一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分.一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关, ...

  9. [教程] NETGEAR R7800 路由器TFTP刷机方法(适用于.img格式固件各种刷)

    本教程是我参照R7800的OP/LEDE固件交流群内文件做的教程,可以说是完善.补充吧. 本帖适用于:① 原厂固件刷原厂固件:② 原厂固件刷第三方固件(.img格式):③ 第三方固件刷回原厂固件(.i ...

  10. C#程序如何把窗体文件从从一个项目中复制到另一个项目

    一个窗体有三个文件,全部拷贝到新的项目中   在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体)   重启这个项目,三个文件已经被识别出来了 ...