// less中文https://less.bootcss.com//* ****************************** 变量variable ************************************* */// 根底篇@variable_width: 10px;.variable_test {  width: @variable_width;}// 进阶篇@variable_name: banner;.@{variable_name} {  color: red;  // background: $color;//新属性v3.0.0}.variable_img {  background:url("../@{variable_name}/icon.png");}/* ****************************** parent selector & **************************************/// 根底篇a {  color: red;  &:hover {    color: blue;  }}.button {  width: 20px;  &-ok {    width: 40px;  }  .pre & {    width: 60px;  }}// 进阶篇.link {  &+& {    // .link+.link    color: red;  }  & & {    // .link .link    color: green;  }  && {    // .link.link    color: blue;  }  &,  &ish {    // .link,.linkish    color: cyan;  }}.grand {  .parent {    //这里的&代表 .grand .parent    &>& {      // .grand .parent>.grand .parent      color: red;    }    & & {      // .grand .parent .grand .parent      color: green;    }    && {      // .grand .parent.grand .parent      color: blue;    }    &,    &ish {      // .grand .parent,.grand .parentish      color: cyan;    }  }}p,a {  border-top: 2px dotted #366;  &+& {    // 编译后果    // p+p,    // p+a,    // a+p,    // a+a,    border-top: 0;  }}/* ****************************** :extend **************************************/// :extend有诸多应用形式,也有诸多限度nav ul {  &:extend(.inline); // .inline,nav ul {color: red;}  background: blue;}.inline {  color: red;}.cool {  &:extend(.inline, .bucket);}pre:hover,.some-class {  &:extend(div pre);  // pre:hover:extend(div pre),.some-class:extend(div pre) {}}[title=identifier] {  color: blue;}.noQuote:extend([title=identifier]) {  // [title=identifier],.noQuoteP}.a.b.test,.test.c {  color: orange;}.test {  &:hover {    color: green;  }}.replacement:extend(.test all) {  // .a.b.test,.test.c,.a.b.replacement,.replacement.c {}  // .test:hover,.replacement:hover{}}.bucket {  color: blue;}@{variable}:extend(.bucket) {}@variable: .selector;@media screen {  .selector {    color: blue;  }  @media (min-width: 1023px) {    .selector {      color: blue;    }  }}.topLevel:extend(.selector) {}/* ****************************** Merge & **************************************/.merge_mixin() {  box-shadow+: inset 0 0 10px #555;}.merge_myclass {  .merge_mixin();  box-shadow+: 0 0 20px black;}.merge_trans() {  transform+_: scale(2);}.merge_myclass {  .merge_trans();  transform+_: rotate(15deg);}/* ****************************** mixin **************************************/// 根底篇.mixin_red {  color: red;}.mixin_theme {  .mixin_red();}// 进阶篇// ##、定义一个mixin类:// 形式一:(会在css中输入)// .red {//     color: red// }// 形式二:(不会在css中输入).mixin_blue() {  color: blue;}.my-hover-mixin() {  &:hover {    border: 1px solid red;  }}button {  .my-hover-mixin();}// ##、命名空间:应用#()或者.(),不加()会在css中输入// 调用:// #mixin_parent>.child()// #mixin_parent .child()// #mixin_parent.child()#mixin_parent() {  .child {    font-size: 16px;  }}.mixin_test {  #mixin_parent.child()}// mixin传参(分号和逗号都能够,保险起见应用分号).foo (@bg: #f5f5f5; @color: #900) {  background: @bg;  color: @color;}.unimportant {  .foo();}// 将mixin用作function:v3.5.0// .average(@x, @y) {//   @result: ((@x + @y) / 2);// }// div {//   padding: .average(16px, 50px)[@result];// }// mixin递归(>, >=, =, =<, <) 关键字and not.loop(@counter) when (@counter > 0) {  .loop((@counter - 1)); // next iteration  width: (10px * @counter); // code for each iteration}div {  .loop(5)}.generate-columns(4);.generate-columns(@n, @i: 1) when (@i =< @n) {  .column-@{i} {    width: (@i * 100% / @n);  }  .generate-columns(@n, (@i + 1));}/* ****************************** insert嵌套 **************************************/// css的写法.insert_header {  color: red}.insert_header .logo {  color: black}// less写法.insert_header {  font-size: 14px;  .logo {    color: black  }}// 例如:革除浮动.clearfix {  display: block;  zoom: 1;  &:after {    content: "";    display: block;    height: 0;    clear: both;    visibility: hidden;  }}// @media嵌套规定.component {  @media(min-width:1000px) {    font-size: 16px;  }  @media(min-width:1200px) {    font-size: 18px;  }}/* ****************************** cal运算 **************************************/// 反对+-*/四则运算,less默认反对单位换算,个别状况以最左侧@cal_add: 5cm + 10mm; // 后果是 6cm@cal_substract: 2 - 3cm - 5mm; // 后果是 -1.5cm@cal_mixCal: 2 + 5px - 3cm; // 后果是 4px@cal_base: 5%;@cal_multiply: @cal_base * 2; // 后果是 10%@cal_other: @cal_base + @cal_multiply; // 后果是 15%@cal_color: #224488 / 2; //后果是 #112244/* ****************************** transfer本义 **************************************/// ~"anything"模式会被原样输入@transfer_min768: ~"(min-width: 768px)";// @min768: (min-width: 768px);//less3.5开始反对简写.element {  @media @transfer_min768 {    font-size: 1.2rem;  }}/* ****************************** fun函数 **************************************/@fun_base: #f04615;@fun_width: 0.5;.fun_class {  width: percentage(@fun_width); // returns `50%`  color: saturate(@fun_base, 5%);  background-color: spin(lighten(@fun_base, 25%), 8);  // margin: if((2>1), 5px, 10px); //less3.x才反对}// @fun_colors: blue, green, red;// each(@fun_colors, {//   .@{value} {//     color: ~"@{value}";//   }// });// @fun_set: {//   one: blue;//   two: green;//   three: red;// }// .fun_set {//   each(@fun_set, {//     @{key}-@{index}: @value;//   });// }/* ****************************** map映射 **************************************/#map_colors() {  primary: blue;  secondary: green;}.map_button {  // color: #map_colors[primary]; //less3.x开始反对  // border: 1px solid #map_colors[secondary]; //less3.x开始反对}/* ****************************** scope作用域 **************************************/@scope_var: red;#page {  @scope_var: white;  #header {    color: @scope_var; // white  }}/* ****************************** 导入 **************************************/@import "./global.less";/* ****************************** 应用less **************************************//* node */// npm i less/* browser */// <link rel="stylesheet/less" type="text/css" href="styles.less" />// <script src="less.js" type="text/javascript"></script>/*批改变量 less.modifyVars({  '@buttonFace': '#5B83AD',  '@buttonText': '#D9EEF2'}); */// ##、@arguments(备注:@arguments跟传入的参数地位非亲非故)// 示例:// .box-shadow(@x: 0; @y: 0; @blur: 1px; @color: #000) {//     box-shadow: @arguments;// }// ##、@rest...(示意:残余的参数)// .pad(@top, @right, @rest...) {//     padding: @top @right @rest;// }// ##、雷同名字的mixin.mixin(@width) {  width: @width;}.mixin(@width, @height: 5) {  width: @width;  height: @height;}.ya {  .mixin(10px);}// ##、迭代// .loop(@width:1) when(@width<10) {//     .loop((@width+1)); //下一个迭代//     width: (@width*10px); //每一个迭代内的 代码// }