技术标签: 前端开发知识点 前端 less javascript
http://lesscss.cn/
https://less.bootcss.com/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZrIXUheJ-1637595223146)(images/less_logo.png)]
LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表。 LESS是一种动态样式表语言,扩展了CSS的功能。 LESS也是跨浏览器友好。
CSS预处理器是一种脚本语言,可扩展CSS并将其编译为常规CSS语法,以便可以通过Web浏览器读取。 它提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS。
LESS由 Alexis Sellier 于2009年设计。LESS是一个开源。 LESS的第一个版本是用Ruby编写的,在后来的版本中,它被JavaScript代替。
gitHub:https://github.com/less/less.js/
使用命令行,我们可以将 .less 文件编译为 .css 。
以下命令用于使用npm(node package manager)安装lessc,以使less在全局可用。
npm install less -g
您还可以在包名称后面添加特定版本。 例如: npm install [email protected] -g
以下命令用于在项目文件夹中安装 lessc 最新版本。
npm i less -save-dev
它也被添加到你的项目package.json中的devDependencies。
lessc的测试版
当lessc结构发布到npm时,它被标记为beta,其中定期开发新的功能。 less -v 用于获取当前版本。
安装lessc 的未发布开发版本
当我们希望安装一个未发布版本的lessc并遵循将git URL标识为依赖的指令时,commit-ish将被指定。 这将确保您正在使用正确的leesc您的项目。
bin / lessc 在存储库中包含二进制。 它的工作窗口,OS X和nodejs * nix。
当源设置为破折号或连字符( - )时,从标准输入读取输入。
lessc [option option=parameter ...] [destination]
例如,我们可以使用下面的命令编译.less到.css
lessc stylesheet.less stylesheet.css
我们可以使用以下命令编译.less到.css by并将结果缩小。
lessc -x stylesheet.less stylesheet.css
以下是在命令行使用中使用的选项。
S.N. | 选项及描述 | 命令 |
---|---|---|
1 | Help 显示帮助消息,其中包含可用的选项。 | lessc -help lessc -h |
2 | Include Paths 它包括您希望在较少文件中简单和相对地引用的库的可用路径。 窗口中的路径由冒号(:)或分号(;)分隔。 | lessc --include-path = PATH1; PATH2 |
3 | Makefile 它输出一个makefile导入依赖列表到stdout。 | lessc -M lessc --depends |
4 | No Colo****r彩色输出被禁用。 | lessc --no-color |
5 | No IE Compatibility IE兼容性检查被禁用。 | lessc --no-ie-compat |
6 | Disable Javascrip****t在较少的文件中禁用javascript。 | lessc --no-js |
7 | Lint 检查语法和报告错误,没有任何输出。 | lessc --lint lessc -l |
8 | Silen****t强制停止错误消息的显示。 | lessc --silent lessc -s |
9 | Strict Imports 力进口评价。 | lessc --strict-imports |
10 | Allow Imports from Insecure HTTPS Host****s允许从不安全的HTTPS主机导入。 | lessc --insecure |
11 | Version 显示版本号并退出。 | lessc -version lessc -v |
12 | Compres****s有助于删除空白并压缩输出。 | lessc -x lessc --compress |
13 | Source Map Output Filename 它生成更少的源映射。 如果sourcemap选项没有定义文件名,那么它将使用扩展映射与源少文件名。 | lessc --source-map lessc -source-map = file.map |
14 | Source Map Rootpat****h指定根路径,并应将其添加到源映射中较少的文件路径,并添加到输出css中指定的映射文件。 | lessc --source-map-rootpath = dev-files / |
15 | Source Map Basepath 指定的路径必须从输出路径中删除。Basepath与rootpath选项相反。 | lessc --source-map-basepath = less-files / |
16 | Source Map Less Inline 所有少的文件应该包含在源映射中。 | lessc --source-map-less-inline |
17 | Source Map Map Inline 它指定在输出css中映射文件应该是内联的。 | lessc --source-map-map-inline |
18 | Source Map URL允许覆盖css中的地图文件中的点。 | lessc --source-map-url = .. / my-map.json |
19 | Rootpath 它在相对导入和URL中设置URL重写的路径。 | lessc -rp = resources / lessc --rootpath = resources / |
20 | Relative URL****s在导入的文件中,重写URL以使URL始终相对于基本文件。 | lessc -ru lessc --relative-urls |
21 | Strict Math 它处理所有的数学函数在你的CSS。 默认情况下关闭 | lessc -sm = on lessc --strict-math = on |
22 | Strict Unit****s它允许混合单位。 | lessc -su = on lessc --strict-units = on |
23 | Global Variable 定义可由文件引用的变量。 | lessc --global-var =“background = green" |
24 | Modify Variable 修改变量与全局变量选项相反,它移动您的less文件末尾的声明。 | lessc --modify-var =“background = green" |
25 | URL Arguments 要移动到每个URL,允许指定参数。 | lessc --url-args =“arg736357" |
26 | Line Numbers 生成内联源映射。 | lessc --line-numbers = comments lessc --line-numbers = mediaquery lessc --line-numbers = all |
27 | Plugin 它加载插件。 | lessc --clean-css lessc --plugin = clean-css =“advanced" |
Less可以在客户端上运行(IE6+、Webkit、Firefox),也可以在服务端运行(Node.js、Rhino)。
less在浏览器中使用,当你想编译less文件动态地需要而不是在服务器端,这是因为less是一个大的javascript文件。
首先,我们需要添加LESS脚本以在浏览器中使用LESS:
<script src="less.min.js"></script>
要在页面上找到样式标签,我们需要在页面上添加以下行。 它还创建带有编译css的样式标签。
<link href="styles.less" rel="stylesheet/less" type="text/css"/>
在脚本标记之前,可以通过编程方式在较少的对象上设置选项。 它将影响less的所有编程使用和初始链接标记。
例如,我们可以设置选项如下:
<script>
less = {
env: "development"
};
</script>
<script src="less.js"></script>
我们还可以在脚本标记上以其他格式设置选项,如下所示:
<script>
less = {
env: "development"
};
</script>
<script src="less.js" data-env="development"></script>
您还可以将此选项添加到链接标记中。
<link data-dump-line-numbers="all" data-global-vars='{ "var": "#fff", "str": "\"quoted\"" }' rel="stylesheet/less" type="text/css" href="less/style.less">
属性选项的要点如下:
可以通过将 env 选项设置为开发并在添加less.js文件后调用 less.watch()来启用观看模式 。 如果您希望暂时启用观看模式,请将#!watch 添加到网址。
<script>less = { env: 'development'};</script>
<script src="less.js"></script>
<script>less.watch();</script>
启用LESS变量的运行时修改。 当调用新值时,LESS文件被重新编译。 修改变量的基本用法是:
less.modifyVars({
'@buttonFace': '#eee',
'@buttonText': '#fff'
});
我们可以将选项*!dumpLineNumbers:mediaquery* 添加到上面提到的url或 dumpLineNumbers 选项。mediaquery 选项可与FireLESS一起使用(它显示LESS生成的CSS样式的原始LESS文件名和行号。)
在加载脚本文件less.js之前,必须在全局对象中设置选项。
<script>
less = {
env: "development",
logLevel: 2,
async: false,
fileAsync: false,
poll: 1000,
functions: {
},
dumpLineNumbers: "comments",
relativeUrls: false,
globalVars: {
var1: '"string value"',
var2: 'regular value'
},
rootpath: ":/a.com/"
};
</script>
<script src="less.js"></script>
LESS是跨浏览器友好的,支持诸如Google Chrome,Mozilla Firefox,Safari和Internet Explorer等现代浏览器,并允许重用CSS元素并使用相同的语义编写LESS代码。 在客户端使用LESS时,必须小心性能影响,如果存在外观问题(意味着拼写错误,颜色更改,纹理,外观,链接等),则显示JavaScript。 编译服务器端的LESS文件,为网站提供更多性能。
PhantomJS【PhantomJS已死,有事烧纸】不实现 Function.prototype.bind 函数,因此您需要使用 es-5 shim JavaScript引擎在PhantomJS下运行。 用户可以使用变量进行调整以影响主题,并通过在生产中使用客户端LESS实时显示它们。
如果您想在旧版浏览器中运行LESS,请使用添加了LESS支持的JavaScript功能的 es-5 shim JavaScript引擎。 您可以使用浏览器必须支持的 JSON.parse ,在脚本或链接标签上使用属性。
es5-shim:
https://www.jscss.cc/2016/10/30/es5-shim.html
https://github.com/douglascrockford/JSON-js
https://github.com/es-shims/es5-shim
插件可以上传来扩展网站的功能。 插件用于使您的工作更轻松。
要使用命令行安装插件,首先需要安装lessc插件。 该插件可以使用 less-plugin 开头安装。 下面是安装clean-css插件的命令行:
npm install less-plugin-clean-css
如果提及了无法识别的选项,那么它会尝试加载该选项并显示一条消息,说明*没有输入文件。*例如:
lessc --clean-css="advanced"
直接,您可以使用以下命令使用安装的插件:
lessc --plugin=path_to_plugin=options
在Node中,插件是必需的,它作为一个选项插件传递给一个数组。
var pluginName = require("pluginName");
less.render(myCSS, {
plugins: [pluginName] })
.then(function(output) {
},
function(error) {
});
以下是LESS中可用的插件列表。
S.N. | 插件及描述 |
---|---|
1 | Autoprefixer 它用于在从LESS转换后向CSS添加前缀。 |
2 | CSScomb 它有助于改进样式表的维护。 |
3 | clean-css 它缩小LESS的CSS输出。 |
4 | CSSWring 它压缩或缩小LESS的CSS输出。 |
5 | css-flip 它用于从左到右(LTR)或从右到左(RTL)生成CSS。 |
6 | functions 在LESS本身中写入LESS的函数。 |
7 | glob 使用glob表达式,可以导入多个文件。 |
8 | group-css-media-queries b> 它有能力做更少的后处理。 |
9 | inline-urls 自动将网址转换为数据uri。 |
10 | npm-import 它有能力从npm包导入较少。 |
11 | pleeease 它用于后处理Less。 |
12 | rtl LESS从ltr(从左到右)反转到rtl(从右到左)。 |
S.N. | Importers 及描述 |
---|---|
1 | Bootstrap Bootstrap LESS代码在自定义LESS代码之前导入。 |
2 | Bower Resolve LESS文件是从Bower软件包导入的。 |
3 | Cardinal CSS for less.js 在定制LESS代码之前,导入Cardinal的LESS代码。 |
4 | Flexbox Grid flexboxgrid导入。 |
5 | Flexible Grid System 它进口柔性网格系统。 |
6 | Ionic 它进口离子骨架。 |
7 | Lesshat 它进口Lesshat mixins。 |
8 | Skeleton 它导入少骨骼代码。 |
S.N. | Importers 及描述 |
---|---|
1 | advanced-color-functions 它用于找到更多的对比色。 |
2 | cubehelix 使用伽马校正值1,立方体角色函数可以返回两种颜色之间的颜色。 |
3 | lists 列出操作函数库。 |
LESS允许作者结合较少。
{
install: function(less, pluginManager) {
},
setOptions: function(argumentString) {
},
printUsage: function() {
},
minVersion: [2, 0, 0]
}
cleancss -o one.less one.css
LESS中程序化使用的要点是 less.render 函数。 此函数在LESS中使用以下格式:
less.render(input_data, options)
.then(function(output) {
//code here
},
function(error) {
});
或者你可以用另一种方式写:
less.render(css, options, function(error, output) {
})
options 是一个可选参数,当您不指定回调时返回promise,并在指定回调时返回promise。 您可以通过将其读入字符串并设置主文件的文件名字段来显示文件。
sourceMap 选项允许设置sourcemap选项,例如 sourceMapURL , sourceMapBasepath ,sourceMapRootpath , outputSourceFiles i>和 sourceMapFileInline 。 重要的是, sourceMap 选项不适用于less.js.
您可以通过添加侦听器来访问日志,如下面的格式所示:
less.logger.addListener({
debug: function(message) {
},
info: function(message) {
},
warn: function(message) {
},
error: function(message) {
}
});
上述定义的函数是可选的。 如果它显示错误,那么它会将错误传递给 less.render 中的回调或promise。
本节为大家介绍几款好用的 Less 在线编译器。
在线编译器用于将较少的代码编译为css代码。 在线编译器工具很容易帮助生成CSS代码。
W3Cschool提供的在线编译器: Less转CSS
以下是其他的在线编译器:
以下是可用的在线Web IDE和Less支持。
S.N. | 在线Web IDE和说明 |
---|---|
1 | CSSDeck Labs 它是可以快速,轻松地完成测试包,包括HTML,CSS,JS代码的地方。 |
2 | CodePen 它是前端网的操场。 |
3 | Fiddle Salad 它是您可以在环境中添加准备好的代码的地方。 |
4 | JS Bin 它的网站设计只帮助JavaScript和CSS代码。 |
5 | jsFiddle 它是一个在线Web编辑器。 |
在本章中,我们将学习关于 GUI 的LESS 。 在这里您可以使用不同的LESS工具为您的平台。
下表列出了支持跨平台的GUI编译器。
S.N. | 工具及描述 |
---|---|
1 | Crunch 2! 它支持 Windows , Mac 和 Linux 等跨平台。 它提供编辑器集成编译。 |
2 | Mixture 它是一个由设计师和开发人员使用的快速原型和静态网站生成工具。 它是快速,超强的,与你的编辑工作。 它汇集了一系列精彩的工具和最佳实践。 |
3 | SimpLESS 它是一个简约的LESS编译器。 它提供拖放,删除和编译功能。 SimpLESS支持使用前缀(这是SimpLESS的独特功能)对您的CSS进行前缀 。 它建立在钛平台上。 |
4 | Koala 它用于编译LESS,SASS和CoffeeScript。 它提供的功能,如编译错误通知支持和编译选项支持。 |
下表列出了支持Windows平台的GUI编译器。
S.N. | 工具和描述 |
---|---|
1 | Prepros 它是一个工具,编译LESS,SASS,指南针,铁笔,玉和更多。 |
2 | WinLess 最初它是一个LESS.app的克隆,它有几个设置,需要更多的功能完整的方法。 它支持从命令行参数开始。 |
下表列出了支持OS X平台的GUI编译器。
S.N. | 工具和描述 |
---|---|
1 | CodeKit 它是LESS.app的继承者,并支持LESS在许多其他处理语言,如SASS,翡翠,Markdown等。 |
2 | LiveReload 它编辑CSS和立即更改图像。 SASS,LESS,CoffeeScript和其他工作良好。 |
3 | Plessc 它是用PyQT制造的。 它具有日志查看器,自动编译,使用选择编辑器和sourcemap支持打开LESS文件的功能。 |
编辑器是允许用户编辑文本的系统或程序。 插件是一种软件,用于扩展网站的功能。
Eclipse 针对LESS的不同插件,如下表所列:
S.N. | 插件和说明 |
---|---|
1 | Eclipse Less Plugin 通过扩展Eclipse IDE,此插件提供了编辑和编译LESS样式表的有用功能。 |
2 | Transpiler Plugin 这是Eclipse插件自动转译您的文件,如LESS,SASS,CoffeeScript等。 |
Visual Studio LESS的不同选项,如下表所列:
S.N. | 选项和说明 |
---|---|
1 | CSS Is Less 这个扩展使LESS文件用CSS语言服务打开。 |
2 | Web Essentials 2012 此扩展可让您更轻松地执行常见任务,并为Visual Studio for Web开发人员添加有用的功能。 |
3 | Web Essentials 2013 它扩展了Visual Studio中的许多新功能,而不是特定的语言或编辑器。 |
4 | Web Tools 2013 您下载该工具并开始使用ASP.NET开发 |
5 | Easy LESS ,less文件中的代码不能直接被浏览器解析渲染,需要在koala等软件中编译后,才能生成对应的文件和css代码,然后浏览器解析它。如果想在less文件中写css代码,通过正常保存(ctrl+s),自动生成浏览器可以解析的代码,那么通过Easy LESS这个插件可以实现,这样不仅省去了繁琐使用软件编译less文件的过程,每次正常保存,就像写css代码一样,实时观察效果。 |
配置Easy LESS:
https://blog.csdn.net/qq_42757177/article/details/100050275?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
https://blog.csdn.net/weixin_44198965/article/details/89923890
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qnjvpg9S-1637595223150)(images/微信截图_20200830214619.png)]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/less">
*{
margin: 0;
padding: 0;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: pink;
height: 100px;
width: 100px;
}
}
</style>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
</div>
</body>
<script src="less/less.min.js"></script>
</html>
考拉官网:http://koala-app.com/
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/02.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
</div>
</body>
</html>
*{
margin: 0;
padding: 0;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: pink;
height: 100px;
width: 100px;
}
}
注释的适当使用可以保证代码的可读性,Less 支持两种类型的注释:多行注释和单行注释。
注释使代码清晰,并允许用户轻松地理解。 您可以在代码中使用多行注释和单行注释,但是当编译LESS代码时,单行注释不会显示在CSS文件中。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/03.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
</div>
</body>
</html>
/*这是想暴露出去的注释*/
//这是见不得人的注释
*{
margin: 0;
padding: 0;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: pink;
height: 100px;
width: 100px;
}
}
LESS允许使用 @ 符号定义变量。 变量分配使用**冒号(**完成。
LESS中声明变量的格式为“@变量名:变量值”。
使用@来声明一个变量:@pink:pink;
1、作为普通属性值直接来使用:直接使用@pink;
2、作为选择器或属性名:@{选择器变量}、@{样式名变量}的形式
3、作为URL:@{url}
4、变量的延迟加载
多次重复相同的值,通常在您的样式表中可看到。不用多次使用相同的值,可以使用变量。它使代码的维护更容易,并且可以从单个位置控制这些值。
@color1: #ca428b;
.div1{
background-color : @color1;
}
.div2{
background-color : @color1;
}
变量插值是评估包含一个或多个变量的表达式或文字的过程,产生其中变量用其对应值替换的输出。变量也可以在其他地方使用,如选择器名称,属性名称,URL和@import语句。
选择器可以引用任何变量,它是在编译时构建的。变量名称必须放在用**@符号前缀的花括号({}**)内。
@selector: h2;
@{selector} {
background: #2ECCFA;
}
变量可用于保存URL。
@images: "http://www.baidu.com";
.myclass {
background : url("@{images}/images/less_variables/birds.jpg");
width:800px;
height:500px;
}
变量可以由属性引用。
@my-property: color;
.myclass {
background-@{my-property}: #81F7D8;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/04.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
</div>
</body>
</html>
/*这是想暴露出去的注释*/
//这是见不得人的注释
@color:deeppink;
@m:margin;
@selector:#wrap;
*{
@{m}: 0;
padding: 0;
}
@{selector}{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: @color;
height: 100px;
width: 100px;
}
}
变量范围指定可用变量的位置。 变量将从本地作用域搜索,如果它们不可用,则编译器将从父作用域搜索。
所谓延迟加载:指的就是作用域里面的所有less编译完成之后,再使用变量值;
@color: red;
.class {
@color: yellow;
.brass {
@color: blue;
color: @color;
@color: green;
}
color: @color;
}
它是一组CSS属性,允许将一个类的属性用于另一个类,并且包含类名作为其属性。 在LESS中,可以使用类或id选择器以与CSS样式相同的方式声明mixin。 它可以存储多个值,并且可以在必要时在代码中重复使用。
1、基本嵌套规则
2、&的使用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/05.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
</div>
</body>
</html>
/*这是想暴露出去的注释*/
//这是见不得人的注释
@color:deeppink;
*{
margin: 0;
padding: 0;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: @color;
height: 100px;
width: 100px;
&:hover{
background: pink;
}
}
}
混合类似于编程语言中的函数。 Mixins是一组CSS属性,允许您将一个类的属性用于另一个类,并且包含类名作为其属性。 在LESS中,可以使用类或id选择器以与CSS样式相同的方式声明mixin。 它可以存储多个值,并且可以在必要时在代码中重复使用。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/01.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
<div class="inner2">
</div>
</div>
</body>
</html>
.juzhong{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: red;
height: 100px;
width: 100px;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
.juzhong;
}
.inner2{
.juzhong;
}
}
可以创建一个mixin,它可以通过简单地放置括号后在输出中消失。
.juzhong(){
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: red;
height: 100px;
width: 100px;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
.juzhong();
}
.inner2{
.juzhong();
}
}
参数mixin使用一个或多个参数,通过参数和其属性来扩展LESS的功能,以便在混合到另一个块时自定义mixin输出。
.juzhong(@w,@h,@c){
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: @c;
height: @h;
width: @w;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
.juzhong(100px ,100px,pink);
}
.inner2{
.juzhong(10px ,10px,green);
}
}
.juzhong(@w:10px,@h:10px,@c:yellow){
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: @c;
height: @h;
width: @w;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
.juzhong(100px ,100px,pink);
}
.inner2{
.juzhong();
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/02.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
</div>
<div class="inner2">
</div>
</div>
</body>
</html>
.juzhong(@w:10px,@h:10px,@c:pink){
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: @c;
height: @h;
width: @w;
}
#wrap{
position: relative;
width: 300px;
height: 400px;
border: 1px solid;
margin: 0 auto;
.inner{
.juzhong(100px ,100px,pink);
}
.inner2{
.juzhong(@c:black);
}
}
它相当于但又不完全是JS中的if,只有满足条件后才能匹配
一句话总结匹配模式:
相当于我传入一个值,这个值会去匹配与它对应的样式;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/03.css"/>
</head>
<body>
<div id="wrap">
<div class="sjx"></div>
</div>
</body>
</html>
.triangle(@_,@wwww,@ccccc){
width: 0px;
height: 0px;
overflow: hidden;
}
.triangle(L,@w,@c){
border-width: @w;
border-style:dashed solid dashed dashed;
border-color:transparent @c transparent transparent ;
}
.triangle(R,@w,@c){
border-width: @w;
border-style:dashed dashed dashed solid;
border-color:transparent transparent transparent @c;
}
.triangle(T,@w,@c){
border-width: @w;
border-style:dashed dashed solid dashed;
border-color:transparent transparent @c transparent ;
}
.triangle(B,@w,@c){
border-width: @w;
border-style:solid dashed dashed dashed;
border-color:@c transparent transparent transparent ;
}
Less 中,可以通过 @import 指令来导入外部文件。
@import 伪指令用于在代码中导入文件。 它将LESS代码分布在不同的文件上,并允许轻松地维护代码的结构。 您可以将 @import 语句放在代码中的任何位置。
@import "triangle.less";
#wrap .sjx{
.triangle(R,40px,yellow)
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/04.css"/>
</head>
<body>
<div id="wrap">
<div class="sjx"></div>
</div>
</body>
</html>
.border(@w,@style,@c){
border: @arguments;
}
#wrap .sjx{
.border(1px,solid,black)
}
如果你想在表达式上匹配简单的值或参数数量,那么你可以使用Guards。 它与mixin声明相关联,并包括附加到mixin的条件。 每个mixin将有一个或多个由逗号分隔的防护,并且guard必须括在括号中。 LESS使用Guards的mixins而不是if / else语句,并执行计算以指定匹配的mixin。
https://blog.csdn.net/ivenqin/article/details/107998153
LESS包含五个保护比较运算符:<,>,<=,> =和=。 您可以使用比较运算符(=)来比较数字,字符串,标识符等,而剩余的运算符只能与数字一起使用。
示例代码:
<h2>Guard比较运算符的示例</h2>
<p class="myclass">Hello World!!!欢迎来到王者农药....</p>
less代码:
.mixin (@a) when (@a = 20px){
color:red;
}
.mixin (@a) when (@a < 20px){
color:blue;
}
.mixin (@a) {
font-size: @a;
}
.myclass { .mixin(20px) }
编译之后:
.myclass {
color: red;
font-size: 20px;
}
您可以使用关键字来解决Guard逻辑运算符。 您可以使用和关键字组合使用保护条件,并使用not关键字取消条件。
示例代码:
<h2>Guard逻辑运算符的示例</h2>
<p class="class1">Hello World...</p>
<p class="class2">欢迎来到王者农药...</p>
less代码:
.mixin (@c, @bg) when (@c =red) and (@bg =yellow) {
font-size: 30px;
}
// 如果文字颜色是蓝色或者背景为蓝色,文字大小是12px
.mixin (@c, @bg) when (@c =blue),
(@bg =blue) {
font-size: 20px;
}
.mixin (@c, @bg) {
color: @c;
background: @bg;
}
.class1 {
.mixin(red, yellow)
}
.class2 {
.mixin(hotpink, black)
}
编译之后:
.class1 {
font-size: 30px;
color: red;
background: yellow;
}
.class2 {
color: hotpink;
background: black;
}
它用于将mixins分组在通用名称下。 使用命名空间可以避免名称冲突,并从外部封装mixin组。
示例演示如何在LESS文件中使用命名空间和访问器:
<h1>命名空间和访问器操作示例</h1>
<p class="myclass">Less可为网站提供可自定义、可管理、可重复使用的样式表。</p>
接下来,创建文件 style.less 。
.class1 {
.class2 {
.val(@param) {
font-size: @param;
color:green;
}
}
}
.myclass {
.class1 > .class2 > .val(20px);
}
编译之后:
.myclass {
font-size: 20px;
color: green;
}
LESS支持一些算术运算,例如加号(+),减号( - ),乘法(*)和除法(/),它们可以对任何数字,颜色或变量进行操作。 操作节省了大量的时间,当你使用变量,让感到就像是简单的数学工作。
@fontSize: 10px;
.myclass {
font-size: @fontSize * 2;
color:green;
}
它动态构建选择器,并使用属性或变量值作为任意字符串。
p {
color: ~"green";
}
*{
margin: 100 * 10px;
padding: ~"calc(100px + 100)";
}
在将LESS代码编译为CSS代码之后,〜“some_text"中的任何内容将显示为 some_text 。
Extend是一个LESS伪类,它通过使用**:extend** 选择器在一个选择器中扩展其他选择器样式。
性能比混合高
灵活度比混合低
<div class="style">
<h2>Welcome to Newcapec</h2>
<p>Hello!!!!!</p>
</div>
接下来,创建文件 style.less
h2 {
&:extend(.style);
font-style: italic;
}
.style {
background: green;
}
编译之后:
h2 {
font-style: italic;
}
.style,
h2 {
background: green;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/mixin.css"/>
</head>
<body>
<div id="wrap">
<div class="inner">
inner1
</div>
<div class="inner">
inner2
</div>
</div>
</body>
</html>
.juzhong(@w,@h,@c){
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
margin: auto;
width: @w;
height: @h;
background: @c;
}
*{
margin: 0;
padding: 0;
}
@import "mixin/juzhong-mixin.less";
#wrap{
position: relative;
width: 300px;
height: 300px;
border: 1px solid;
margin: 0 auto;
.inner{
&:nth-child(1){
.juzhong(100px,100px,deeppink);
}
&:nth-child(2){
.juzhong(50px,50px,yellow);
}
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/extend.css"/>
</head>
<body>
<div id="wrap">
<div class="inner test">
inner1
</div>
<div class="inner">
inner2
</div>
</div>
</body>
</html>
!important 关键字用于覆盖特定属性。 当它在mixin调用之后放置时,它会将所有继承的属性标记为!important 。
.juzhong{
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
margin: auto;
}
.juzhong:hover{
background: red!important;
}
*{
margin: 0;
padding: 0;
}
@import "mixin/juzhong-extend.less";
#wrap{
position: relative;
width: 300px;
height: 300px;
border: 1px solid;
margin: 0 auto;
/*.inner:extend(.juzhong) 不友好*/
.inner{
&:extend(.juzhong all);
&:nth-child(1){
width: 100px;
height: 100px;
background: pink;
}
&:nth-child(2){
width: 50px;
height: 50px;
background: yellow;
}
}
}
CSS 预处理器 sass,less,stylus优缺点
https://www.jianshu.com/p/9d84bb5043bb
文章浏览阅读580次,点赞25次,收藏24次。【FPS 1000+】ubuntu下libfacedetection人脸检测 tensorrt加速部署_人脸检测 tensorrt
文章浏览阅读1.2k次。一、LwIP移植记录lwip-1.4.1\src\core\ipv4\icmp.c 注释掉:#if CHECKSUM_GEN_ICMP新增加:#ifdef CHECKSUM_BY_HARDWARE代码如下://#if CHECKSUM_GEN_ICMP// /* adjust the checksum */// if (iecho->chksum..._stm32f107 lwip 直连
文章浏览阅读7k次,点赞2次,收藏7次。到目前为止,我们已经学习了Java语言的好几种运算符,包括算术运算符、赋值运算符、逻辑运算符、关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术、逻辑、关系等运算,最后才进行赋值操作。也就是说,在这四类运算符当中,赋值运算符的优先级最低,那么其他三种运算符的优先级顺序又是如何排列的呢?首先来看算术运算符,Java中的算术运算符主要包括正号负号、加减乘除,以及取余数..._大于小于和等于的优先级
文章浏览阅读407次。一:特殊三位数请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。#includeusing namespace std;int f(int n){ int s=1,i; for(i=1;i<=n;i++) s=s*i; return s;} int main() {_定义一个有10个的数组a,将数组a中的所有素数放在数组b,再对数组b排序。
文章浏览阅读900次,点赞19次,收藏16次。JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存。
文章浏览阅读8.1k次。Python中可以使用cmp()函数比较两个列表的大小。cmp()函数语法:cmp(list1, list2)参数:list1 -- 比较的列表。list2 -- 比较的列表。返回值:如果比较的元素是同类型的,则比较其值,返回结果。如果两个元素不是同一种类型,则检查它们是否是数字。如果是数字,执行必要的数字强制类型转换,然后比较。如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")否则..._python中数字和字母比较大小
文章浏览阅读1.5k次。JAVA中四舍五入方法_string.format 四舍五入
文章浏览阅读609次。注:参考文章:https://blog.csdn.net/qq_36754544/article/details/55062391struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。同时struts2也是一个web层的MVC框架,那么什么是struts2中的MVC呢?我们可以联想一下struts2的使用流程,我们需要先通过过滤器,调用URL判断使用哪个Action,再由Action决定返回结果,继而 提交..._1、什么是struts2框架,它的作用是什么?
文章浏览阅读1w次,点赞16次,收藏14次。import matplotlib.pyplot as pltplt.rc('font',family='Times New Roman') 注意一定要在导入包之后就设置这个代码,否则可能不显示。参考文献[1]matplotlib 全局字体改为 Times New Roman_python画图调整字体为times
文章浏览阅读2.7k次。今天调试了半天的Betaflight 10.8.0,在借鉴b站等平台大佬的经验基础上,艰难实现了Aocoda-RCF7/F7 MINI飞控解锁,没想到刚成功又出现了无法检测到陀螺仪的情况,真是一波不平一波又起,刚巧有发现了新版本的问世,也就是在昨天刚刚发布,顿时来了兴致,地址如下。但是其下载着实费劲。期待有更稳定更便捷的表现。下面还是回到我们的话题,就是这个f7的解锁问题。_betaflight configurator 10.9.0
文章浏览阅读4.1k次。Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞。这个版本的虚拟系统兼容VMware,VirtualBox和其他虚拟平台。这篇文章教大家了解Metasploitable2靶机系统以下有视频版还有文字版不知道怎么操作的请看文字版的,里面详细的步骤。关注公众号侠盗男爵回复【kali系统】视频版↓:网络安全/kali/黑客/web安全/渗透测试/-3-5个月网络安全全套_metasploitable2-linux
文章浏览阅读9.4k次。 温故而知新~步骤1、打开“注册表编辑器”,方法:Windows+r ——运行,输入regedit-回车;2、在打开的“注册编辑器”中双击:HKEY_LOCAL_MACHINE;3、双击:SOFTWARE;4、双击:Microsoft;5、双击:Windows;6、单击;CurrentVersion,在右侧找到数值名称为ProgramFilesDir的项目,里面的默认数值数据为“C..._如何更改已安装软件位置