mixin.scss
//-----------------------------------浏览器前缀----------------------------------------- //例子:@include css3(transition, 0.5s); @mixin css3($property, $value) { @each $prefix in -webkit-, -moz-, -ms-, -o-, '' { #{$prefix}#{$property}: $value; } } //-----------------------------------Retina图片----------------------------------------- @mixin image-2x($image, $width, $height) { @media (min--moz-device-pixel-ratio: 1.3), (-o-min-device-pixel-ratio: 2.6/2), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) { /* on retina, use image that's scaled by 2 */ background-image: url($image); background-size: $width $height; } } //-----------------------------------清除浮动----------------------------------------- //引用例子:@include clearfix(); @mixin clearfix() { &:before, &:after { content: ""; display: table; } &:after { clear: both; } } //-----------------------------------Black和White----------------------------------------- //特别声明,上面这个不属于Sass的Mixins范畴,是Sass的自定义函数功能。 //background:black(0.15); //color:white(0.9);} @function black($opacity) { @return rgba(0, 0, 0, $opacity) } @function white($opacity) { @return rgba(255, 255, 255, $opacity) } //-----------------------------------内阴影和外阴影----------------------------------------- //引用例子:@include box-emboss(0.8, 0.05); @mixin box-emboss($opacity, $opacity2) { box-shadow: white($opacity) 0 1px 0, inset black($opacity2) 0 1px 0; } //-----------------------------------行高----------------------------------------- //引用例子:@include line-height (16); @mixin line-height($heightValue: 12) { line-height: $heightValue + px; //fallback for old browsers line-height: (0.125 * $heightValue) + rem; } //-----------------------------------隐藏文字----------------------------------------- //引用例子: //.logo{ // background: url("logo.png"); // height:100px; // width:200px; // @include hide-text; //} @mixin hide-text { overflow: hidden; text-indent: -9000px; display: block; } //-----------------------------------响应式断点----------------------------------------- //引用例子: //@include breakpoint(large) { // width: 60%; //} //@include breakpoint(medium) { // width: 80%; //} //@include breakpoint(small) { // width: 95%; //} @mixin breakpoint($point) { @if $point==large { @media (min-width: 64.375em) { @content; } } @else if $point==medium { @media (min-width: 50em) { @content; } } @else if $point==small { @media (min-width: 37.5em) { @content; } } } //-----------------------------------正三角----------------------------------------- //正三角的通用属性 %triangleBase { _font-size: 0; _line-height: 0; _overflow: hidden; width: 0; height: 0; } //regulaTriangle:正三角(dashed默认透明) //例子:@include regulaTriangle(top,red); @mixin regulaTriangle($derection:bottom, $color: #000, $width: 20px) { @extend %triangleBase; border-width: $width; //向右 @if $derection==right { border-style: dashed dashed dashed solid; border-color: transparent transparent transparent $color; } //向左 @if $derection==left { border-style: dashed solid dashed dashed; border-color: transparent $color transparent transparent; } //向上 @if $derection==top { border-style: dashed dashed solid dashed; border-color: transparent transparent $color transparent; } //向下 @if $derection==bottom { border-style: solid dashed dashed dashed; border-color: $color transparent transparent transparent; } } //-----------------------------------直角三角形----------------------------------------- //right-angledTriangle:直角三角形 //例子:@include right-angledTriangle(1,red); @mixin right-angledTriangle ($derection:1, $color:#000, $width: 20px, $opacity:transparent, $border:dashed) { @extend %triangleBase; border-width: $width; //向右 @if $derection==1 { border-style: $border dashed dashed $border; border-color: $color $opacity $opacity $color; } //向右 @if $derection==2 { border-style: $border $border dashed dashed; border-color: $color $color $opacity $opacity; } //向右 @if $derection==3 { border-style: dashed $border $border dashed; border-color: $opacity $color $color $opacity; } //向右 @if $derection==4 { border-style: dashed dashed $border $border; border-color: $opacity $opacity $color $color; } } //-----------------------------------圆角----------------------------------------- //radius:圆角 //例子:@include radius(24,100%); @mixin radius($num:1234, $size: 5px) { @if $num==1234 { -webkit-border-radius: $size; //Saf3+, Chrome -moz-border-radius: $size; //FF1+ border-radius: $size; //Opera 10.5, IE 9 -ms-border-radius: $size; } @if $num==12 { -webkit-border-top-left-radius: $size; border-top-left-radius: $size; -webkit-border-top-right-radius: $size; border-top-right-radius: $size; -moz-border-top-left-radius: $size; -ms-border-top-left-radius: $size; -moz-border-top-right-radius: $size; -ms-border-top-right-radius: $size; } @if $num==23 { -webkit-border-top-right-radius: $size; border-top-right-radius: $size; -webkit-border-bottom-right-radius: $size; border-bottom-right-radius: $size; -moz-border-top-right-radius: $size; -moz-border-bottom-right-radius: $size; -ms-border-top-right-radius: $size; -ms-border-bottom-right-radius: $size; } @if $num==34 { -webkit-border-bottom-right-radius: $size; border-bottom-right-radius: $size; -webkit-border-bottom-left-radius: $size; border-bottom-left-radius: $size; -moz-border-bottom-left-radius: $size; -moz-border-bottom-right-radius: $size; -ms-border-bottom-left-radius: $size; -ms-border-bottom-right-radius: $size; } @if $num==14 { -webkit-border-top-left-radius: $size; border-top-left-radius: $size; -webkit-border-bottom-left-radius: $size; border-bottom-left-radius: $size; -moz-border-top-left-radius: $size; -moz-border-bottom-left-radius: $size; -ms-border-top-left-radius: $size; -ms-border-bottom-left-radius: $size; } @if $num==13 { -webkit-border-top-left-radius: $size; -webkit-border-bottom-right-radius: $size; -ms-border-top-left-radius: $size; -ms-border-bottom-right-radius: $size; border-top-left-radiu: $size; -moz-border-top-left-radius: $size; border-bottom-right-radiu: $size; -moz-border-bottom-right-radius: $size; } @if $num==24 { -webkit-border-top-right-radius: $size; border-top-right-radius: $size; -webkit-border-bottom-left-radius: $size; border-bottom-left-radius: $size; -moz-border-top-right-radius: $size; -moz-border-bottom-left-radius: $size; -ms-border-top-right-radius: $size; -ms-border-bottom-left-radius: $size; } } //-----------------------------------边框阴影----------------------------------------- //boxshadow:边框阴影 //例子:@include boxshadow(24,100%); @mixin boxshadow($x: 3px, $y: 3px, $shadowcolor: #cccccc) { -moz-box-shadow: $x $y 4px $shadowcolor; // FF3.5+ -webkit-box-shadow: $x $y 4px $shadowcolor; // Saf3.0+, Chrome box-shadow: $x $y 4px $shadowcolor; // Opera 10.5, IE 9.0 filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=#{$x}, OffY=#{$y}, Color='#{$shadowcolor}'); /* IE6,IE7 */ -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=#{$x}, OffY=#{$y}, Color='#{$shadowcolor}')"; /* IE8 */ } //-----------------------------------透明度----------------------------------------- //myOpacity:透明度 //例子:@include myOpacity(0.3,93,197,16); @mixin myOpacity($opacity:0.5, $r:0, $g:0, $b:0) { $xx: $opacity * 100; filter: alpha(opacity=$xx); background-color: rgba($r, $g, $b, $opacity); // rgba()和opacity都能实现透明效果,但最大的不同是opacity作用于元素,以及元素内的所有内容的透明度,而rgba()只作用于元素的颜色或其背景色.两种都不被IE支持(IE9开始支持) //如果要兼容ie文字不透明,需要用元素把文字包裹起来,然后色值position:relative或者absolute。 //opacity: $opacity;//opacity属性是css3的属性,也可以实现透明效果,跟background-color: rgba同样效果。 } //-----------------------------------透明度----------------------------------------- //引用例子:@include opacity(0.8); @mixin opacity($opacity) { opacity: $opacity; $opacity-ie: $opacity * 100; filter: alpha(opacity=$opacity-ie); //IE8 } //-----------------------------------动画keyframes生成----------------------------------------- //动画keyframes生成 //例子:@include keyframes(动画名称); //@include keyframes(move-the-object) { // 0% { // transform: translateX(0); // } // 100% { // transform: translateX(200px); // } //} @mixin keyframes($animationName) { @-webkit-keyframes #{$animationName} { @content; } @-moz-keyframes #{$animationName} { @content; } @-o-keyframes #{$animationName} { @content; } @keyframes #{$animationName} { @content; } }
.