less AND sass/scss

2019-02-25  本文已影响0人  虾_DOIT

一. Sass/Scss、Less是什么?

Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更容易阅读。

Less也是一种动态样式语言. 对CSS赋予了动态语言的特性,如变量,继承,运算, 函数.  Less 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可在服务端运行 (借助 Node.js)。

Sass与Scss是什么关系?

Sass的缩排语法,对于写惯css前端的web开发者来说很不直观,也不能将css代码加入到Sass里面,因此sass语法进行了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是用{}取代了原来的缩进。

二. Sass/Scss与Less区别

1.编译环境不一样

sass的安装需要Ruby环境,是在服务端处理的,而Less是需要引入less.js来处理Less代码输出css到浏览器

2、标识变量的方法不同  Less是@,而Scss是$,

3、而且变量的作用域也不一样

在sass 3.4.0之前,sass可以说是没有局部变量和全局变量之分的,即后声明的同名变量总是会覆盖之前的同名变量,不管后声明的变量是位于何处。

4.Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持。

三 less/scss讲解

scss 

1、变量 $

$nav-color: #F90;

nav {

  $width: 100px;

  width: $width;

  color: $nav-color;

}

将局部变量转换为全局变量可以添加 !global 声明:

#main {

  $width: 5em !global;

  width: $width;

}

2、Mixins

@mixin link-colors($normal, $hover, $visited) {

  color: $normal;

  &:hover { color: $hover; }

  &:visited { color: $visited; }

}

a {

  @include link-colors(blue, red, green);

}

3. 嵌套CSS 规则;

article a {

  color: blue;

  &:hover { color: red }

  h1, h2, h3 {margin-bottom: .8em}

}

4、计算

p {

  font: 10px/8px;             // Plain CSS, no division

  $width: 1000px;

  width: $width/2;            // Uses a variable, does division

  width: round(1.5)/2;        // Uses a function, does division

  height: (500px/2);          // Uses parentheses, does division

  margin-left: 5px + 8px/2px; // Uses +, does division

}

5、控制 @if @else    @for $var from  to    @each $var in  @while

@if @else 

$type: monster;

p {

  @if $type == ocean {

    color: blue;

  } @else if $type == matador {

    color: red;

  } @else if $type == monster {

    color: green;

  } @else {

    color: black;

  }

}

@for $var from to 

@for $i from 1 through 3 {

  .item-#{$i} { width: 2em * $i; }

}

   @each

@each $animal in puma, sea-slug, egret, salamander {

  .#{$animal}-icon {

    background-image: url('/images/#{$animal}.png');

  }

}

@while

$i: 6;

@while $i > 0 {

  .item-#{$i} { width: 2em * $i; }

  $i: $i - 2;

}

6、函数

$grid-width: 40px;

$gutter-width: 10px;

@function grid-width($n) {

  @return $n * $grid-width + ($n - 1) * $gutter-width;

}

#sidebar { width: grid-width(5); }

less

1、变量 @    1)(选择器名称,属性名称,URL和@import等都可以使用@{my-selector}) 2) 延迟加载 (不必在使用前声明)

@nice-blue: #5B83AD;

@light-blue: @nice-blue + #111;

#header {

  color: @light-blue;

}#header {

  color: @nice-blue;

}

属性中使用

.widget {

  @{property}: #0ee;

  background-@{property}: #999;

@property: color;

}

结果

.widget {

  color: #0ee;

  background-@{property}: #999;

}

2、Mixins

.bordered {

  border-top: dotted 1px black;

  border-bottom: solid 2px black;}

#menu a {

  color: #111;

  .bordered;

}

.border-radius(@radius: 5px) {

  -webkit-border-radius: @radius;

     -moz-border-radius: @radius;

          border-radius: @radius;

}

3、嵌套   1)引用父选择器 &

#header {

  color: black;

  &.navigation {

    font-size: 12px;

  }

  .logo {

    width: 300px;

  }

}

&多级套用

.grand {

  .parent {

    & > & {

      color: red;

    }

  }

}

结果

.grand .parent > .grand .parent {

  color: red;

}

4、计算

@base: 5%;

@filler: @base * 2; // result is 10%

@other: @base + @filler; // result is 15%

5、函数

.average(@x, @y) {

  @average: ((@x + @y) / 2);

}

div {

  .average(16px, 50px); // "call" the mixin

  padding: @average;    // use its "return" value

}

结果div {

  padding: 33px;

}

上一篇下一篇

猜你喜欢

热点阅读