十个有用的Sass Mixins

Sass是世界上最成熟、最稳定、强大而又专业的CSS预处理器。我使用Sass有相当长的一段时间了。发现Sass的Mixins对于任何前端开发人员都非常有用,可以帮助前端开发人员节省很多时间,而且能更好的利用。

Sass的Mixins可以让你声明任何可重用的CSS代码块。你甚至可以通过传值,使用你的Mixins更佳灵活。它让前端开发人员节省了大量的时间,确保前端人员写出来的代码不会冗余而且便于组织和管理代码。

我推荐使用Compass,因为他创建了很多有用的Mixins,简化了前端开发人员的很多工作。

1、浏览器前缀

来源于:Useful Sass (SCSS) mixin Snippets

SCSS:

@mixin css3($property, $value) {    @each $prefix in -webkit-, -moz-, -ms-, -o-, ‘‘ {        #{$prefix}#{$property}: $value;
    }
}

使用:

.border_radius {  @include css3(transition, 0.5s);
}

CSS:

.border_radius {  -webkit-transition: 0.5s;
  -moz-transition: 0.5s;
  -ms-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s;}

2、响应式断点

来源于:Handy Sass Mixins

SCSS:

@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; }
  }
}

使用:

.page-wrap {
  width: 75%;
  @include breakpoint(large) { 
    width: 60%; 
  }  @include breakpoint(medium) { 
    width: 80%; 
  }  @include breakpoint(small) { 
    width: 95%; 
  }
}

CSS:

.page-wrap {  width: 75%;}@media (min-width: 64.375em) {  .page-wrap {    width: 60%;
  }}@media (min-width: 50em) {  .page-wrap {    width: 80%;
  }}@media (min-width: 37.5em) {  .page-wrap {    width: 95%;
  }}

3、Retina图片

来源于:Easy retina-ready images using SCSS

SCSS

@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;
  }
}

使用:

div.logo {
  background: url("logo.png") no-repeat;  @include image-2x("logo2x.png", 100px, 25px);
}

CSS:

div.logo {  background: url("logo.png") no-repeat;}@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) {        div.logo {            /* on retina, use image that‘s scaled by 2 */
            background-image: url("logo2x.png");
            background-size: 100px 25px;
        }}

4、清除浮动

来源:A new micro clearfix hack

SCSS:

@mixin clearfix() {
  &:before,
  &:after {    content: "";
    display: table;
  }
  &:after {    clear: both;
  }}

使用:

.article {  @include clearfix();
}

CSS:

.article:before, 
.article:after {  content: "";
  display: table;}.article:after {  clear: both;}

5、Black和White

来源:Useful SASS Mixins

SCSS:

@function black($opacity){
  @return rgba(0,0,0,$opacity)
}
@function white($opacity){
  @return rgba(255,255,255,$opacity)
}

特别声明,上面这个不属于Sass的Mixins范畴,是Sass的自定义函数功能。

使用:

.my-class{  background:black(0.15);
  color:white(0.9);}

CSS:

.my-class {  background: rgba(0, 0, 0, 0.15);
  color: rgba(255, 255, 255, 0.9);}

6、内阴影和外阴影

来源:Useful SASS Mixins

SCSS:

@mixin box-emboss($opacity, $opacity2){
  box-shadow:white($opacity) 0 1px 0, inset black($opacity2) 0 1px 0;
}

使用:

.box{  @include box-emboss(0.8, 0.05);
}

CSS:

.box {  box-shadow: white(0.8) 0 1px 0, inset black(0.05) 0 1px 0;}

7、透明度

来源:Handy Sass Mixins

SCSS:

@mixin opacity($opacity) {  opacity: $opacity;  $opacity-ie: $opacity * 100;  filter: alpha(opacity=$opacity-ie); //IE8}

使用:

.article-heading {  @include opacity(0.8);
}

CSS:

.article-heading {  opacity: 0.8;
  filter: alpha(opacity=80);}

8、绝对定位

来源:Handy Sass Mixins

SCSS:

@mixin abs-pos ($top: auto, $right: auto, $bottom: auto, $left: auto) {
  top: $top;
  right: $right;
  bottom: $bottom;
  left: $left;
  position: absolute;
}

使用:

.abs {  @include abs-pos(10px, 10px, 5px, 15px);
}

CSS:

.abs {  top: 10px;
  right: 10px;
  bottom: 5px;
  left: 15px;
  position: absolute;}

9、行高

来源:Handy Sass Mixins

SCSS:

@mixin line-height($heightValue: 12 ){
  line-height: $heightValue + px; //fallback for old browsers
  line-height: (0.125 * $heightValue) + rem;
}

使用:

body {  @include line-height (16);
}

CSS:

body {  line-height: 16px;
  line-height: 2rem;}

10、图片标题动画

来源:4 useful SASS mixins

SCSS:

@mixin animated-caption($font-color, $bg-color, $bg-opacity, $padding, $transition-speed) {
  display:inline-block;
  position:relative;
  overflow:hidden;
  & img {
    display:block;
    width:100%;
    height:auto;
  }
  & span.outer {
    display:block;
    width:100%;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    padding:$padding;
    color:$font-color;
    position:absolute;
    bottom:-100px;
    -webkit-transition: bottom $transition-speed ease;
    -moz-transition: bottom $transition-speed ease;
    -o-transition: bottom $transition-speed ease;
    -ms-transition: bottom $transition-speed ease;
    transition: bottom $transition-speed ease;
    & span.inner{
      margin:0px;
      position:relative;
    }
    &:before{
      content: " ";
      display:block;
      position:absolute;
      z-index:0;
      left:0px;
      top:0px;
      width:100%;
      height:100%;
      background:$bg-color;
      filter: alpha(opactiy=($bg-opacity * 100));
      -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=#{$bg-opacity * 100})";
      -moz-opacity: $bg-opacity;
      -khtml-opacity: $bg-opacity;
      opacity: $bg-opacity;
    }
  }
  &:hover span.outer{
    bottom:0px;
  }
}

使用:

a{  @include animated-caption(#ffffff, #333333, 0.75, 10px, 0.5s)}

CSS:

a {  display: inline-block;
  position: relative;
  overflow: hidden;}a img {  display: block;
  width: 100%;
  height: auto;}a span.outer {  display: block;
  width: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 10px;
  color: #ffffff;
  position: absolute;
  bottom: -100px;
  -webkit-transition: bottom 0.5s ease;
  -moz-transition: bottom 0.5s ease;
  -o-transition: bottom 0.5s ease;
  -ms-transition: bottom 0.5s ease;
  transition: bottom 0.5s ease;}a span.outer span.inner {  margin: 0px;
  position: relative;}a span.outer:before {  content: " ";
  display: block;
  position: absolute;
  z-index: 0;
  left: 0px;
  top: 0px;
  width: 100%;
  height: 100%;
  background: #333333;
  filter: alpha(opactiy=75);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
  -moz-opacity: 0.75;
  -khtml-opacity: 0.75;
  opacity: 0.75;}a:hover span.outer {  bottom: 0px;}

注:这个Mixins如果在实际项目中,可以配合其它的Mixins更简单些。

时间: 2024-11-16 08:38:50

十个有用的Sass Mixins的相关文章

网页整理 --- 要换工作了,把这一堆网页先存起来

一.SASS 官方文档(函数): http://sass-lang.com/documentation/Sass/Script/Functions.html sass语法: http://www.w3cplus.com/sassguide/syntax.html sass函数: http://www.w3cplus.com/preprocessor/sass-other-function.html 颜色函数: http://www.w3cplus.com/preprocessor/sass-co

库&插件&框架&工具

nodejs 入门 nodejs 入门教程,大家可以在 github 上提交错误 2016 年最好用的表单验证库 SMValidator.js 前端表单验证工具分享 浅谈前端线上部署与运维 说到前端部署,可能大多数前端工程师在工作中都是使用的公司现成的部署系统,与SRE对接.一起完成前端的部署操作.如果我现在给你一台新注册的云主机,那么你应该怎么做才能把一个前端工程部署到一台云主机上,成为一个可以访问的网页呢?今天我们就来聊聊前端的部署~ 首先,一个前端工程要变成- 一个 jQuery 前端插件

1-7 Sass的基本特性-基础

[Sass]声明变量 定义变量的语法: 在有些编程语言中(如,JavaScript)声明变量都是使用关键词"var"开头,但是在 Sass 不使用这个关键词,而是使用大家都喜欢的美元符号"$"开头.我想用一张图来解释,我一直坚信,一图胜千言万语: 上图非常清楚告诉了大家,Sass 的变量包括三个部分: 声明变量的符号"$" 变量名称 赋予变量的值 来看一个简单的示例,假设你的按钮颜色可以给其声明几个变量: $brand-primary : dar

管理Sass项目文件结构

http://www.w3cplus.com/preprocessor/architecture-sass-project.html 编辑推荐: 掘金是一个高质量的技术社区,从 CSS 到 Vue.js,性能优化到开源类库,让你不错过前端开发的每一个技术干货. 点击链接查看最新前端内容,或到各大应用市场搜索「 掘金」下载APP,技术干货尽在掌握中. 本文由大漠根据Hugo Giraudel的<Architecture for a Sass Project>所译,整个译文带有我们自己的理解与思想

分享15款很实用的 Sass 和 Compass 工具

Sass 是 CSS 的扩展,增加了嵌套规则,变量,混入功能等很多更多.它简化了组织和维护 CSS 代码的成本.Compass 是一个开源的 CSS 框架,使得使用 CSS3 和流行的设计模式比以往任何时候都更容易. 在这篇文章中,我们已经收集了一组有用的 Sass 和 Compass 工具,将帮助您快速构建 Web 应用程序. 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScri

SASS用法指南

学过CSS的人都知道,它不是一种编程语言. 你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事. 很自然地,有人就开始为CSS加入编程元素,这被叫做"CSS预处理器"(css preprocessor).它的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 各种"CSS预处理器"之中

Sass map详解

作为一个CSS预处理器,Sass正受到越来越多的青睐,诸如Github.Codepen.CSS-Tricks.SitePoint.w3cplus等网站采用Sass组织.管理CSS文件,Sass正在逐渐成为事实上的CSS预处理器行业标准.接下来几篇文章,我们来研读下Sass中的关键功能,今天来看map,大家不妨一坐,精彩内容马上呈现. map简介 在Sass中,maps代表一种数据类型,可以包含若干键值对的对象类型,使用()包围一个map,里面的键值对用逗号隔开,键和值可以是任何的Sass数据类型

css预处理器(sass)

学过CSS的人都知道,它不是一种编程语言.你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条件语句... 学过CSS的人都知道,它不是一种编程语言. 你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事. 很自然地,有人就开始为CSS加入编程

CSS框架-SASS

学过CSS的人都知道,它不是一种编程语言.你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条件语句... 学过CSS的人都知道,它不是一种编程语言. 你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事. 很自然地,有人就开始为CSS加入编程