编写SASS的一些技巧
更好的为变量命名
变量是Sass中最简单的特性之一,但有时候也会使用不当。创建站点范围内有语义化的变量,是不可或缺的工作。如果命名不好,他会变得难以理解和重复使用。
这里有一些命名变量的小技巧,提供参考:
- 命名变量时不要含糊不清
- 坚持一种命名规则(Modular, BEM等等)
- 确定变量的使用是有道理的
这有一个好的示例:
$orange: #ffa600;
$grey: #f3f3f3;
$blue: #82d2e5; $link-primary: $orange;
$link-secondary: $blue;
$link-tertiary: $grey; $radius-button: 5px;
$radius-tab: 5px;
这个是不好的示例:
$link: #ffa600;
$listStyle: none;
$radius: 5px;
减少Mixins的使用
Mixins是实现代码块的一种伟大方式,可以在一个站点内多次使用。然而,@include定义好的Mixins和在CSS代码中复制、粘贴没什么不一样。它将会让你的CSS代码生成很多重复的代码,让你的文件变得越来越臃肿。
到目前为止,Mixins只适合那种需要通过传递参数来快速创建样式的情形。
例如:
@mixin rounded-corner($arc) {
-moz-border-radius: $arc;
-webkit-border-radius: $arc;
border-radius: $arc;
}
rounded-corner这个Mixins可以在任何情况下使用,仅仅通过改变其参数$arc的值,将得到不同的代码:
.tab-button {
@include rounded-corner(5px);
}
.cta-button {
@include rounded-corner(8px);
}
像这样使用Mixins是不明智的:
@mixin cta-button {
padding: 10px;
color: #fff;
background-color: red;
font-size: 14px;
width: 150px;
margin: 5px 0;
text-align: center;
display: block;
}
这个Mixins没有传递任何参数,更建议使用%placeholder来创建,这也是接下来要说的下一点。
拥抱Placeholder
与Mixins不同,%placeholder也可以多次使用,而且不会生成重复的代码。这使得输入的CSS更友好,更干净。
%bg-image {
width: 100%;
background-position: center center;
background-size: cover;
background-repeat: no-repeat;
}
.image-one {
@extend %bg-image;
background-image:url(/img/image-one.jpg");
}
.image-two {
@extend %bg-image;
background-image:url(/img/image-two.jpg");
}
编译出来的CSS:
.image-one, .image-two {
width: 100%;
background-position: center center;
background-size: cover;
background-repeat: no-repeat;
}
.image-one {
background-image:url(/img/image-one.jpg") ;
}
.image-two {
background-image:url(/img/image-two.jpg") ;
}
多个选择器运用了相同的%placeholder也只会输出一次代码。没有引用的%placeholder是不会输出任何CSS代码。
和之前的Mixins配合在一起使用,既可保持Mixins灵活性,而且还可以保持代码的简洁与干净。
/* PLACEHOLDER
============================================= */ %btn {
padding: 10px;
color:#fff;
curser: pointer;
border: none;
shadow: none;
font-size: 14px;
width: 150px;
margin: 5px 0;
text-align: center;
display: block;
} /* BUTTON MIXIN
============================================= */ @mixin btn-background($btn-background) {
@extend %btn;
background-color: $btn-background;
&:hover {
background-color: lighten($btn-background,10%);
}
} /* BUTTONS
============================================= */ .cta-btn {
@include btn-background(green);
} .main-btn {
@include btn-background(orange);
} .info-btn {
@include btn-background(blue);
}
编写SASS的一些技巧的更多相关文章
- Python 内编写类的各种技巧和方法
Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...
- Python中编写类的各种技巧和方法
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
- Lua 学习 chapter30 编写c函数的技巧 - Jow的博客
目录 数组操作 字符串操作 在c函数中保存状态 生活总需要一点仪式感,然后慢慢的像那个趋向完美的自己靠近. 数组操作 Lua中的数组就是以特殊的方式使用边.像lua_setttable and lua ...
- Step By Step(编写C函数的技巧)
Step By Step(编写C函数的技巧) 1. 数组操作: 在Lua中,"数组"只是table的一个别名,是指以一种特殊的方法来使用table.出于性能原因,Lua的C ...
- Android中实时预览UI和编写UI的各种技巧
一.啰嗦 之前有读者反馈说,你搞这个所谓的最佳实践,每篇文章最后就给了一个库,感觉不是很高大上.其实,我在写这个系列之初就有想过这个问题.我的目的是:给出最实用的库来帮助我们开发,并且尽可能地说明这个 ...
- 编写javascript的基本技巧一
自己从事前端编码也有两年有余啦,时间总是比想象中流逝的快.岁月啊,请给我把时间的 脚步停下吧.不过,这是不可能的,我在这里不是抒发时间流逝的感慨.而是想在这分享两 年来码农生活的一些javascrip ...
- JavaScript 如何工作的: 事件循环和异步编程的崛起 + 5 个关于如何使用 async/await 编写更好的技巧
原文地址:How JavaScript works: Event loop and the rise of Async programming + 5 ways to better coding wi ...
- 如何用sublime 编写sass
使用了Sublime Text也有一段时日了,然后在现在而言,小觉的coding工具已经非其莫属了,接着小觉因为近期忙着项目的原因,同时还要抽空编辑博客的原因,就暂时把它放在一旁了,现在偶然想起也就说 ...
- 编写javascript的基本技巧
第一.编写可维护的代码 什么叫着编写可维护的代码呢?就是当我的做出来的项目,拿给其它编码团队能很快的看懂 你编写的代码,你的整个项目的逻辑等等.一个项目的修改维护是要比开发一个项目的成本 是要高的.例 ...
随机推荐
- hdu 5640 King's Cake(BestCoder Round #75)
King's Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- ASP.NET MVC中Session以及处理方式
转载原地址 http://www.cnblogs.com/darrenji/p/3951065.html
- C#中的ref和out的区别
转载原地址 http://www.cnblogs.com/gjahead/archive/2008/02/28/1084871.html ref和out的区别在C# 中,既可以通过值也可以通过引用传递 ...
- Android:从程序员到架构师之路Ⅲ_高焕堂
Part-2: 从Android框架代码中学习设计 一 基础设计模式(Pattern)的代码:以Android为例 1.Template Method模式:IoC(控制反转)机制 2.Observer ...
- Linux下移植pjsip,使用QT开发
1.移植pjsip env:fedora14 arm-linuc-gcc:gcc version 4.5.1 (ctng-1.8.1-FA) #./configure \ CC=arm-linux-g ...
- 漫谈云计算与SOA (1)
SOA是什么? 英语直译是基于服务的架构,就是一种技术框架,促使企业内部与外部所有相关的系统公开和访问定义良好的服务和绑定于服务的信息,进一步抽象成流程层和组合应用,从而构成解决方案. 说人话:重用服 ...
- jeewx的使用_02 解析微信服务器post过来的数据
如果在微信公众号接入了第三方的URL,那么用户微信服务器的请求将会被推送到第三方的URL上面,那么该如何解析数据呢?下面来分析 找到MessageUtil.java 这个类中有一个parseXml的静 ...
- 蓝底白字到图形界面 主板BIOS发展简记
本文转载:http://mb.zol.com.cn/229/2295738.html http://www.360doc.com/content/12/0306/14/1309227_19219857 ...
- 【不积跬步,无以致千里】关闭631端口cups打印服务和8009端口ajp
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 创建动态组-以OU为单位
选择“Windows 计算机”为对象,因为监视对象是以计算机为单位 ==================== 以下方式则无组成员返回: 此时要求返回的对象为AD用户或组,猜测SCOM没有监视到该用户或 ...