sasscore学习之_mixin.scss

_mixin scss
包括常用的mixin,%及@function
mixin,通过@include调用,样式通过拷贝的方式使用,尤其适用于传递参数
%,通过@extend调用,样式通过组合申明的方式使用,适用于不传参数的代码片段
@function,返回一个值,用于调用
-----------------------------------------------------

mixin & %
既定义了mixin也定义了%,根据需求使用@include或@extend调用

// inline-block
// ie6-7 *display: inline;*zoom:1;
@mixin inline-block ($extend:true) {
  @if $extend {
    @extend %inline-block;
  } @else {
    display: inline-block;
    @if $lte7 {
      *display: inline;*zoom:1;
    }
  }
}
%inline-block{
  @include inline-block(false);
}

对于这一块的理解:

$lte7:true;
@mixin inline-block ($extend:true) {   //提供一个参数。来确定是否使用继承
  @if $extend {
    @extend %inline-block;
  } @else {
    display: inline-block;
    @if $lte7 {        //是否需要针对IE7编写样式。
      *display: inline;*zoom:1;
    }
  }
}
%inline-block{
  @include inline-block(false);
}

.aa{ @include inline-block(true); } .bb{ @include inline-block(false); } .cc{ @include inline-block(true); } .dd{ @extend %inline-block; }

编译出来之后:

.aa, .cc, .dd {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

.bb {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

Center-align a block level element(中心对齐一个块级元素)
block得有宽度margin左右为auto才能居中

用法和inline-block一样;

@mixin center-block ($extend:true) {
  @if $extend {
    @extend %center-block;
  } @else {
    margin-left: auto;
    margin-right: auto;
  }
}
%center-block{
  @include center-block(false);
}

float left & right

@mixin float($float:left) {
  float: $float;
  @if $lte7 {
    display: inline;
  }
}
%float{
  @include float;
}

继承没有float:right(使用默认的float:left);

clearfix:

闭合子元素的浮动

@mixin clearfix ($extend:true) {
  @if $extend {
    @extend %clearfix;
  } @else {
    @if $lte7 {
      *zoom: 1;
    }
    &:before,
    &:after {
      content: "";
      display: table;
    }
    &:after {
      clear: both;
    }
  }
}
%clearfix{
  @include clearfix(false);
}

Hide from both screenreaders and browsers: h5bp.com/u(从浏览器和屏幕阅读器无法隐藏:h5bp.com/u)

既隐藏于视觉也隐藏于屏幕浏览器

@mixin hidden ($extend:true) {
  @if $extend {
    @extend %hidden;
  } @else {
    display: none !important;
    visibility: hidden;    
  }
}
%hidden{
  @include hidden(false);
}
原文地址:https://www.cnblogs.com/qianduanjingying/p/5462368.html