zoukankan      html  css  js  c++  java
  • css预处理器less和scss之sass介绍(二)

    本来打算整理jQuery Mobile来着,但是没有研究明白,所以接着上个周的继续介绍。。。

    【scss中的基础语法】
     
     
     1.scss中的变量
     ①声明变量:$变量名:变量值

    $100px;
    $position : left;
    #div1{
         $width;
        height: $width;
        background-color: red;
        border-#{$position}: 10px solid yellow;
    }


     scss中,允许将变量嵌套在字符串中,但是变量必须使用井号包裹
     2.scss中的运算,会将单位进行运算,使用时注意最终的单位是否正确,
     3.scss中的嵌套:选择器嵌套、属性嵌套、伪类嵌套
     ①选择器嵌套ul{li{}}
     嵌套默认后代选择器,如果需要子代选择器,则需加大于号
     可以在选择器的大括号中使用and表示上一层的选择器。
     ②伪类嵌套 li{&:hover()}
     在选择器{}中配合&使用伪类事件,可以表示当前选择器的
     

    font:{
                        size: 16px;
                        weight:bold;
                        family:"微软雅黑";
                        style:"italic";
                    };


    对于属性名有分割为多段的属性,可以使用属性嵌套,属性名的前半部分必须紧跟,才能用()包裹属性的后半部分。
    4.混合宏、继承、占位符
    ①混合宏使用 @mixin 声明混合宏,在其他选择器中使用 @include调用混合宏、
    声明时可以有参数可以无参数,参数可以有默认值也可以咩有默认值,但是调用时,必须符合声明时的要求,与less中的混合相同。
    优点,可以传参,不会产生同名的class
    缺点,调用时会把混合宏中的所有代码copy到选择器中,产生大量冗余代码

    例如

    @mixin hunhe($color:green){
        color: $color;
    }
    .class3{
        @include hunhe;
        background-color: yellow;
    }
    .class4{
        @include hunhe;
        background-color: blue;
    }

    ②继承 声明一个普通的class,在其他选择器中使用@extend集成这个class
    class1{} .class2(@extend.class1;)
    优点,将相同的代码,提取到并集选择器,减少冗余代码
    缺点,不能传入参数,生成多余的class

    例如

    .calss1{
        color: wheat;
    }
    .class{
        @extend .calss1;
    }  

    ③占位符使用%声明占位符,在其他选择器中使用@expend继承占位符;
    优点,将相同的代码,提取到并集选择器,减少冗余代码
    不会产产生一个多余的class
    缺点不能传参   

    例如

    %class1{
        color: wheat;
    }
    .class4{
        @extend .calss1;
        background-color: yellow;
    }
    .class5{
        @extend .calss1;
        background-color: green;
    } 


    5.if条件结构
    条件结构的大括号要写在选择器里面,条件结构的大括号直接包裹样式属性
    @if条件{}
    @else{}

    例如

    .class6{
         100px;
        height: 100px;
        @if 1>2{
            background-color: yellow;  
        }
        @else{
            background-color: blue;
        }   
    
    }
    $i : 0;
    @while $i<10{
        .while-#{$i}{
            border: #{$i}px soild red;
        }
        $i : $i + 1;
    }
    //
    @for $i from 1 through 3 {
      .item-#{$i} {  2em * $i; }
    }


    6.for循环

    @for $i from 1 to 10{}//不包含10
    @for $i from 1 through10{}//包含10

    例如

    @for $i from 1 through 3 {
      .item-#{$i} {  2em * $i; }
    }


    7.@while循环
    $i : 0
    @while $i<10{
         $i : $i + 1;
    }

    .class6{
         100px;
        height: 100px;
        @if 1>2{
            background-color: yellow;  
        }
        @else{
            background-color: blue;
        }   
    
    }
    $i : 0;
    @while $i<10{
        .while-#{$i}{
            border: #{$i}px soild red;
        }
        $i : $i + 1;
    }
    //
    @for $i from 1 through 3 {
      .item-#{$i} {  2em * $i; }
    }


    8.@each循环遍历
    @each $item in a,b,c,d{
        //$item表示a,b,c,d每一项
    }

    @each $item in c1,c2,c3,c4{
        $i : $i + 1;
        .#{$item}{
            border: #{$i}px soild red;
        }
    }
    @function func($num){
        @return $num*2;
    }
    .functest{
         func(10px);
    }

    本人不是技术大神,写不出多么多么复杂的代码,但我会努力的!谢谢大家抽时间来看,希望对新手有所帮助~

  • 相关阅读:
    Node.js缓冲模块Buffer
    hashMap底层put和get方法逻辑
    减少GC开销的措施
    mybatis中#{}和${}的区别
    AngularJS 用 Interceptors 来统一处理 HTTP 请求和响应
    点击页面的悬浮窗口实现随意拖动
    RabbitMQ 基本概念介绍-----转载
    Spring+Quartz实现定时执行任务的配置
    springmvc导出excel并弹出下载框
    AtomicInteger类保证线程安全的用法
  • 原文地址:https://www.cnblogs.com/zhanghaoxiaoan/p/7589198.html
Copyright © 2011-2022 走看看