less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)

摘要:
深入而言,我们还需要了解技术的应用场景以及与之匹配的技术,以便为未来的架构做好准备。less作为一种CSS预处理语言,具有函数转换的特性。它的主要优点是效率。它主要适用于具有许多CSS的大型项目。浏览器最终将less中的样式转换为css样式后,也会调用此方法。

前端技术众多,作为一名前端工程师,我们每接触新技术首先要懂得此技术的优势和劣势,这是最基本的。往深入了说还需要懂得技术的应用场景,与之配合的技术等,方便为以后架构做准备。而less作为一门CSS预处理语言,拥有函数式变成的特点,主要优点就是高效。主要适用于包含众多CSS的大型项目。主要体现在:项目公共样式的定义,如页面主色、固定数值(宽、高、时间等)、公用样式模板、封装省略浏览器兼容前缀的函数等。

1.less的两种使用方式

1.1 直接调用需要引入less.js,和less样式文件,需要注意的是rel需要指定为stylesheetless。此方式也是在浏览器内部最终将less中的样式转换成css样式之后调用。因页面加载时资源请求较多,故不推荐此方法。

<link rel="stylesheet/less" href="http://t.zoukankan.com/lessTest.less"/>
<script src="http://t.zoukankan.com/less.js"></script>

1.2 将less文件编译为css文件后引入,博主使用的是考拉工具,大家可以自行百度。

less语法(本文为了方便将直接使用引入lessTest.less文件的方式,实际开发中建议使用第二种方式)

2. 定义变量 @变量名:变量值;

///定义颜色变量
@pe_color:#204d90;

.div1{
   100px;
  height: 100px;
  background: @pe_color;
}
//定义字符串变量
@baseUrl:"./img/";
.div1{
   1000px;
  height: 1000px;
  background-image: url("@{baseUrl}/bannerNBA.jpg");
}

变量计算

*数值计算

@1000px;

.div1{
   @width;
  height: @width/2;
  margin-top: @width*pi();    //pi()为less函数,详细请查看API
  border: 1px solid #000;
}

*颜色计算

@baseColor: #6dffa7;
@bdColor:spin(@baseColor,180);
.div1{
   1000px;
  height: 1000px;
  border: 10px solid @bdColor;            //调色盘颜色数值旋转180度,也就是圆心对称点
  background: darken(@baseColor,50%);     //变暗50%
  color:lighten(@baseColor,40%)       //变亮40%
}

less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)第1张

3. Mixin混合模板

.myborder(@bdwidth,@bdstyle,@bdcolor){
  border: @bdwidth @bdstyle @bdcolor;
}
.div1{
   1000px;
  height: 1000px;
  .myborder(5px,dashed,#666666)
}

*定义默认值

.myborder(@bd10px,@bdstyle:solid,@bdcolor:#86ffff){
  border: @bdwidth @bdstyle @bdcolor;
}
.div1{
   1000px;
  height: 1000px;
  .myborder()
}
.myborder(@bd10px,@bdstyle:solid,@bdcolor:#86ffff){
  border: @bdwidth @bdstyle @bdcolor;
}
.div1{
   1000px;
  height: 1000px;
  .myborder(20px)
}

*选择性调用

/*写兼容模板*/
.myTransition(){
  -webkit-transition: all 1s linear;
  -moz-transition: all 1s linear;
  -ms-transition: all 1s linear;
  -o-transition: all 1s linear;
  transition: all 1s linear;
}
/*模板A-1*/
.myLinearBackground(style1,@color1,@color2){
  background-image:-webkit-linear-gradient(top,@color1,@color2);
  background-image:-moz-linear-gradient(top,@color1,@color2);
  background-image:-ms-linear-gradient(top,@color1,@color2);
  background-image:-o-linear-gradient(top,@color1,@color2);
  opacity:.3;
}
/*模板A-2*/
.myLinearBackground(style2,@color1,@color2){
  background-image:-webkit-linear-gradient(bottom,@color1,@color2);
  background-image:-moz-linear-gradient(bottom,@color1,@color2);
  background-image:-ms-linear-gradient(bottom,@color1,@color2);
  background-image:-o-linear-gradient(bottom,@color1,@color2);
  opacity:.7;
}
.myLinearBackground(@_,@_,@_){    //@_的数量要与两个样式模板参数数量相同
  .myTransition();              //@_为通配符,此模板意味只要调用.myLinearBackground(),内部样式无论何时都会调用
}
.div1{
   1000px;
  height: 1000px;
  .myLinearBackground(style1,#86ffff,#ff3e54);
}
.div1:hover{
  .myLinearBackground(style2,#ff3e54,#86ffff)
}

3. 嵌套选择器

用嵌套选择器完成一个纯CSS导航:

DOM结构如下:

    <ul class="box">
        <li>菜单1</li>
        <li>菜单2
            <ul>
                <li>子菜单1</li>
                <li>子菜单2</li>
                <li>子菜单3</li>
                <li>子菜单4</li>
            </ul>
        </li>
        <li>菜单3</li>
        <li>菜单4</li>
    </ul>

CSS如下:

@bgcolor:#86ffff;
@bdcolor:#ffe91e;
@item100px;
@itemheight:50px;
.itemBorder(@bd2px,@bdstyle:solid,@bdcolor:@bdcolor){
  border: @bdwidth @bdstyle @bdcolor;
}
*{
  margin: 0;
  padding: 0;
}
.box{    
   420px;
  height: 50px;
  list-style: none;
  li{                                             //相当于ul li
     @itemwidth;
    height: @itemheight;
    list-style: none;
    line-height: 50px;
    text-align: center;
    background: @bgcolor;
    .itemBorder();
    &:hover{                                      //相当于ul li:hover
      .itemBorder(2px,solid,#ff3516)
    }
  }
  >li{                                           // 相当于ul>li
    overflow: hidden;
    float: left;
    &:hover{                                      // 相当于ul>li:hover
      overflow: visible;
      cursor: pointer;
    }
  }
}

免责声明:文章转载自《less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HyperV应用指南之5-导出、导入虚拟机[转]图片灯箱插件——lightBox下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]Jsoup(一)Jsoup详解(官方)

原文地址:http://www.cnblogs.com/zhangyinhua/p/8037599.html 一、Jsoup概述 1.1、简介     jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,  可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2、J...

使用qt帮助 查看样式表stylesheet的帮助文档

QCreactor帮助文档中搜索的关键字 Qt Style Sheets Examples 有所有控件的样式例子 Qt Style Sheets Reference 控件的所有属性 The Style Sheet Syntax 使用setStyleSheet的语法 有所有控件的样式例子Style Sheet UsageCustomizing the For...

Web前端开发规范(二)

3、HTML代码规范 .html文件必须存放在项目工程约定的目录中。 .html文件的命名:以模块 + 功能的结合方式来命名,比如:newsList.html。 文档类型声明:HTML4中使用<!DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w...

css解决ios滑动不流畅

-webkit-overflow-scrolling:touch -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果.auto: 使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止。touch: 使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果。继续滚动的速度和持续的时间和滚...

CSS 命名规范及标题供参考与学习

一、CSS 命名规范   XHTML-CSS写作建议 所有的xhtml代码小写 属性的值一定要用双引号("")括起来,且一定要有值 每个标签都要有开始和结束,且要有正确的层次 空元素要有结束的tag或于开始的tag后加上"/" 表现与结构完全分离,代码中不涉及任何的表现元素,如style、font、bgColor、       border等 <...

自定义滚动条样式jquery.tinyscrollbar.min.js 插件

-jquery.tinyscrollbar.min.js 自定义滚动条样式 代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="htt...