美文网首页
day04-移动web开发-less

day04-移动web开发-less

作者: 东邪_黄药师 | 来源:发表于2019-05-18 23:38 被阅读0次

    语法:

    - 变量 :

    LESS允许开发者自定义变量,变量可以在全局样式中使用,变量使得样式修改起来更加简单。
    注释:在css当中可以使用,所有编译的过程当中生成在css文件
    注释:css不支持,不会编译在css文件
    必须@前缀,:是等于的以上,必须分号结束;
    不能以数组开头,不能包含特殊字符,区分大小写

    @charset "UTF-8";
    //注释:在css当中可以使用,所有编译的过程当中生成在css文件
    //注释:css不支持,不会编译在css文件
    
    /*变量*/
    //必须@前缀,:是等于的以上,必须分号结束;
    //不能以数组开头,不能包含特殊字符,区分大小写
    @mainColor:#e92323;
    @className:box;
    
    div{
      background: @mainColor;
    }
    a:hover{
      color: @mainColor;
    }
    //变量用于字符拼接使用方法
    .@{className}{
      color: @mainColor;
    }
    

    编译以后:

    @charset "UTF-8";
    div {
      background: #e92323;
    }
    a:hover {
      color: #e92323;
    }
    .box {
      color: #e92323;
    }
    
    

    - Mixin混入:

    Mixin(混入)功能对用开发者来说并不陌生,很多动态语言都支持 Mixin(混入)特性,它是多重继承的一种实现,在 LESS 中,混入是指在一个 CLASS 中引入另外一个已经定义的 CLASS,就像在当前 CLASS 中增加一个属性一样。

    /*-----------------mixin 混入----------------*/
    /*颜色*/
    .red{
      color: @mainColor;
    }
    .border{
      border: 1px solid #ccc;
    }
    .redBorder(){
      color: @mainColor;
      border: 1px solid #ccc;
    }
    .mixin-class{
      .red();
      .border();
    }
    .mixin-fuc{
      .redBorder();
    }
    

    - 嵌套:

    在我们书写标准 CSS 的时候,遇到多层的元素嵌套这种情况时,我们要么采用从外到内的选择器嵌套定义,要么采用给特定元素加 CLASS 或 ID 的方式。

    /*------------------嵌套------------------*/
    /*轮播图*/
    #wjs_banner{
      .carousel-inner{
        > div.item{
          a.img_box{
            background: url("../images/slide_01_2000x410.jpg") no-repeat center center;
            height: 410px;
            /*调用redBorder mixin*/
            display: block;
            .redBorder();
            /*调用@mainColor 变量*/
            &:hover{
              color: @mainColor;
            }
          }
          a.img_mobile{
            width: 100%;
            display: block;
            img{
              width: 100%;
              display: block;
            }
          }
        }
      }
    }
    

    demo:

    @charset "UTF-8";
    .wjs_app{
      display: block;
      img{
        display: none;
      }
      /*需要连接的情况:&*/
      &:hover{
        img{
          display: block;
          position: absolute;
          left: 50%;
          margin-left:-60px;
          border: 1px solid #ccc;
          border-top: none;
          top:40px;
          z-index: 100000;
        }
      }
      > div{
        display: block;
      }
    }
    

    编译后:

    @charset "UTF-8";
    .wjs_app {
      display: block;
      /*需要连接的情况:&*/
    }
    .wjs_app img {
      display: none;
    }
    .wjs_app:hover img {
      display: block;
      position: absolute;
      left: 50%;
      margin-left: -60px;
      border: 1px solid #ccc;
      border-top: none;
      top: 40px;
      z-index: 100000;
    }
    .wjs_app > div {
      display: block;
    }
    

    - Import:

    /*---------------------Import 引入------------------------*/
    @import "base";
    .f_left{
      float: @right;
    }
    

    - 函数(内置函数 运算):

    在我们的 CSS 中充斥着大量的数值型的 value,比如 color、padding、margin 等,这些数值之间在某些情况下是有着一定关系的,那么我们怎样利用 LESS 来组织我们这些数值之间的关系呢?
    http://www.1024i.com/demo/less/reference.html
    escape(@string); // 通过 URL-encoding 编码字符串
    e(@string); // 对字符串转义
    %(@string, values...); // 格式化字符串
    unit(@dimension, [@unit: ""]); // 移除或替换属性值的单位
    color(@string); // 将字符串解析为颜色值
    data-uri([mimetype,] url); // * 将资源内嵌到css中,可能回退到url()
    ceil(@number); // 向上取整
    floor(@number); // 向下取整
    percentage(@number); // 将数字转换为百分比,例如 0.5 -> 50%
    round(number, [places: 0]); // 四舍五入取整
    sqrt(number); // * 计算数字的平方根
    abs(number); // * 数字的绝对值
    sin(number); // * sin函数
    asin(number); // * arcsin函数
    cos(number); // * cos函数
    acos(number); // * arccos函数
    tan(number); // * tan函数
    atan(number); // * arctan函数
    pi(); // * 返回PI
    pow(@base, @exponent); // * 返回@base的@exponent次方
    mod(number, number); // * 第一个参数对第二个参数取余
    convert(number, units); // * 在数字之间转换
    unit(number, units); // * 不转换的情况下替换数字的单位
    color(string); // 将字符串或者转义后的值转换成颜色
    rgb(@r, @g, @b); // 转换为颜色值
    rgba(@r, @g, @b, @a); // 转换为颜色值
    argb(@color); // 创建 #AARRGGBB 格式的颜色值
    hsl(@hue, @saturation, @lightness); // 创建颜色值
    hsla(@hue, @saturation, @lightness, @alpha); // 创建颜色值
    hsv(@hue, @saturation, @value); // 创建颜色值
    hsva(@hue, @saturation, @value, @alpha); // 创建颜色值
    hue(@color); // 从颜色值中提取 hue 值(色相)
    saturation(@color); // 从颜色值中提取 saturation 值(饱和度)
    lightness(@color); // 从颜色值中提取 'lightness' 值(亮度)
    hsvhue(@color); // * 从颜色中提取 hue 值,以HSV色彩空间表示(色相)
    hsvsaturation(@color); // * 从颜色中提取 saturation 值,以HSV色彩空间表示(饱和度)
    hsvvalue(@color); // * 从颜色中提取 value 值,以HSV色彩空间表示(色调)
    red(@color); // 从颜色值中提取 'red' 值(红色)
    green(@color); // 从颜色值中提取 'green' 值(绿色)
    blue(@color); // 从颜色值中提取 'blue' 值(蓝色)
    alpha(@color); // 从颜色值中提取 'alpha' 值(透明度)
    luma(@color); // 从颜色值中提取 'luma' 值(亮度的百分比表示法)
    saturate(@color, 10%); // 饱和度增加 10%
    desaturate(@color, 10%); // 饱和度降低 10%
    lighten(@color, 10%); // 亮度增加 10%
    darken(@color, 10%); // 亮度降低 10%
    fadein(@color, 10%); // 透明度增加 10%
    fadeout(@color, 10%); // 透明度降低 10%
    fade(@color, 50%); // 设定透明度为 50%
    spin(@color, 10); // 色相值增加 10
    mix(@color1, @color2, [@weight: 50%]); // 混合两种颜色
    greyscale(@color); // 完全移除饱和度,输出灰色
    contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]); // 如果 @color1 的 luma 值 > 43% 输出 @darkcolor,否则输出 @lightcolor
    multiply(@color1, @color2);
    screen(@color1, @color2);
    overlay(@color1, @color2);
    softlight(@color1, @color2);
    hardlight(@color1, @color2);
    difference(@color1, @color2);
    exclusion(@color1, @color2);
    average(@color1, @color2);
    negation(@color1, @color2);
    iscolor(@colorOrAnything); // 判断一个值是否是颜色
    isnumber(@numberOrAnything); // 判断一个值是否是数字(可含单位)
    isstring(@stringOrAnything); // 判断一个值是否是字符串
    iskeyword(@keywordOrAnything); // 判断一个值是否是关键字
    isurl(@urlOrAnything); // 判断一个值是否是url
    ispixel(@pixelOrAnything); // 判断一个值是否是以px为单位的数值
    ispercentage(@percentageOrAnything); // 判断一个值是否是百分数
    isem(@emOrAnything); // 判断一个值是否是以em为单位的数值
    isunit(@numberOrAnything, "rem"); // * 判断一个值是否是指定单位的数值

    例子:

    /*-------------------运算和函数--------------------------*/
    @back:#333;
    .test{
      border: 1px solid @back*2;
      background: lighten(#000, 10%);
      color:darken(#000, 10%);
    }
    
    @num:5;
    ul{
      width: 100%*@num;
      li{
        width: 100%/@num;
        color: red+yellow+blue;
        background: gray*0.3;
        /*内置函数*/
        border-color: darken(red,20%);
      }
    }
    

    Less在浏览器上使用的方法:

    1.less无法在浏览器端直接使用

    2.浏览器不识别

    3.必须解析成css代码

    4.通过less解析插件(javascript)

    5.引入less文件需要加上 type="text/less"

    6.less.watch(); 无刷新预览样式

    7.以http形式打开网页预览

    <link rel="stylesheet/less" type="text/css" href="styles.less" />
    <script src="less.js" type="text/javascript"></script>
    

    调用:

    <script>less.watch();</script>
    

    相关文章

      网友评论

          本文标题:day04-移动web开发-less

          本文链接:https://www.haomeiwen.com/subject/fqaaaqtx.html