• Less基础教程


    Less基础教程

    less是较早出现的css预处理器。 LESS API 参考

    安装和使用

    安装比较简单,通过nmp或bower安装即可.

    npm install less -g
    bower install less

    新版的chrome能直接解析less样式,不进行预编译的情况下,可以在页面引入 自己写的less文件 和 less.js
    less会在页面创建<style>节点,包含编译后的样式

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

    Less的语法

    变量

    /*变量*/
    /*注意,由于变量只能定义一次,实际上他们就是“常量”.*/
    @base: #f938ab;

    函数

    /*函数 .box-shadow(), iscolor(), isnumber(), 函数重载*/
    .box-shadow(@style, @c) when(iscolor(@c)){
        -webkit-box-shadow:@style @c;
        box-shadow:@style @c;
    }
    
    .box-shadow(@style, @alpha:50%) when(isnumber(@alpha)){
        .box-shadow(@style, rgba(0,0,0, @alpha));
    }
    
    /*使用变量,调用函数*/
    .box{
        color:saturate(@base, 5%);
        border-color:lighten(@base, 30%);
        div{
            .box-shadow(0 0 5px, 30%)
        }
    }

    变量和运算符

    /*定义变量,使用运算符*/
    @nice-blue: #5B83AD;
    @light-blue: @nice-blue + #111;
    
    
    /*使用变量*/
    #header{
        color: @light-blue;
        .nav{
            font-size:20px;
        }
        .logo{
            200px;
            height:100px;
            float:left;
            background:#aaa;
        }
    }
    
    
    .bordered{
        border-top:dotted 1px green;
        border-bottom:dashed 2px blue;
    }
    .txt-none{
        text-decoration:none;
    }

    混合 mixin

    /*~~嵌入 其他样式*/
    /*混合*/
    /*混合就是一种将一系列属性从一个规则集引入(“混合”)到另一个规则集。*/
    #menu a{
        color:#111;
        .bordered;
        .txt-none
    }
    
    .post a{
        color:red;
        .bordered;
        .txt-none;
    }

    嵌套 nest

    /*~~包含 内部样式定义*/
    /*嵌套 样式规则 这样的代码更简洁, 它模仿了 HTML 的结构. & 表示当前选择器的父选择器*/
    
    .clearfix{
        display:block;
        zoom:1;
        &:after{
            content:'';
            display:block;
            clear:both;
            visibility:hidden;
            font-size:0;
            line-height:0;
            height:0;
        }
    }
    
    /*上面等价于*/
    
    .clearfix{
        display:block;
        zoom:1;
    }
    .clearfix:after{
        content:'';
        display:block;
        clear:both;
        visibility:hidden;
        font-size:0;
        line-height:0;
        height:0;
    }
    
    #header {
        color: black;
        .logo {
             300px;
        }
    }
    
    /*等价于*/
    #header {
        color: black;
    }
    #header .logo {
         300px;
    }

    包含媒体查询的嵌套

    /*~~包含 媒体查询*/
    /*嵌套 媒体查询*/
    .screencolor{
        @media screen{
            color: green;
            @media (min-768px){
                color:red;
            }
        }
    
        @media tv{
            color:black;
        }
    }

    运算

    /*定义变量 变量运算和赋值*/
    @baseAlpha: 30%;
    @filler: @baseAlpha * 2;
    @other: @baseAlpha + @filler;
    @var: 5px + 10;
    
    /*变量直接作为属性值,或运算后作为属性值*/
    .test{
        padding-top: @var;
        color:#888 / 4;
        background-color: @base + #111;
        height: 100% /2 + @filler
    }

    bundle(只minxin bundle的一部分)

    /*包含 内部元素样式定义*/
    #bundle{
        .button{
            display:block;
            border:1px solid hotpink;
            background:grey;
            &:hover{
                 padding: 0px; color: green;">#fff;
            }
        }
    }
    
    /*嵌入 包含定义的样式*/
    #header a{
        color: skyblue;
        #bundle > .button;
    }

    变量的作用域

    /*变量作为样式属性值,注意变量的作用域 {}*/
    /*变量可以在最外层声明,也可以在样式定义{}中声明*/
    @varcolor: red;
    #footer{
        color: @varcolor;
        @varcolor: green;
    }

    变量插值(插值到选择器或样式属性)

    /*变量作为插值表达式 使用在选择器中,注意格式@{varname}*/
    @myselector: banner;
    .@{myselector}hihi{
        font-weight:bold;
        line-height:40px;
    }
    
    变量作为
    @img: "../images";
    .test-img{
        color:#444;
        background-image:url("@{img}/white-brand.jpg");
    }

    动态变量(变量的值作为另一个变量的名)

    .test-var{
        @found: "i am found";
        @varfnd: "found";
        content:@@varfnd;
    
    }

    变量顺序解析 同名覆盖

    .test-lazy{
         @var2;
        @a2: 9%;
        height:@a2;
    }
    
    @var2: @a2;
    @a2: 100%;
    
    .test-lazy2{
         @var2;
        height:@a2;
    }
    
    @var3 : 0;
    .class{
        @var3:1;
        .blass{
            @var3:2;
            three: @var3;
            @var3:3;
        }
        one: @var3;
    }
    
    @import "other";
    @base-color: green;
    .test-import{
        font-size:20px;
        background: @base-color;
        color:@dark-color;
    }

    继承 extend

    nav ul{
        &:extend(.inline);
        background:blue;
    }
    
    .inline{
        color:red;
    }
    
    .a:extend(.inline){
        font-size:18px;
    }
    
    .bucket{
        tr & {
            color:blue;
        }
    }
    
    .some-class:extend(tr .bucket){
        border:1px dotted green;
    }
  • 相关阅读:
    LeetCode之“树”:Binary Tree Preorder && Inorder && Postorder Traversal
    LeetCode之“树”:Binary Tree Level Order Traversal && Binary Tree Level Order Traversal II
    LeetCode之“树”:Balanced Binary Tree
    LeetCode之“树”:Sum Root to Leaf Numbers
    LeetCode之“树”:Validate Binary Search Tree
    LeetCode之“树”:Path Sum && Path Sum II
    LeetCode之“树”:Symmetric Tree && Same Tree
    TCP中的MSS解读(转)
    IP协议详解(转)
    TCP 的那些事儿(上)(转)
  • 原文地址:https://www.cnblogs.com/ysx215/p/6904093.html
Copyright © 2020-2023  润新知