编写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的基本技巧
第一.编写可维护的代码 什么叫着编写可维护的代码呢?就是当我的做出来的项目,拿给其它编码团队能很快的看懂 你编写的代码,你的整个项目的逻辑等等.一个项目的修改维护是要比开发一个项目的成本 是要高的.例 ...
随机推荐
- linux下的调试工具ltrace与strace
ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用. 下面是一个ltrace与strace的对比 1)系统调用的输出对比 我们用输出he ...
- Quality Center 使用IE8异常浏览器打开
需要装2个软件 1. Microsoft Visual C++ 2005 Redistributable Package (x64) 2. dotnetfx35.exe 配置IE的选项 使用兼容模 ...
- POJ 3259 Wormholes(SPFA判负环)
题目链接:http://poj.org/problem?id=3259 题目大意是给你n个点,m条双向边,w条负权单向边.问你是否有负环(虫洞). 这个就是spfa判负环的模版题,中间的cnt数组就是 ...
- python list(列表)和tuple(元组)
200 ? "200px" : this.width)!important;} --> 介绍 python中存在两种有序的类型列表,分别是list(列表)和tuple(元组) ...
- INV(库存管理)
物料 PROCEDURE update_item(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false, x_return_status OUT NO ...
- Ubuntu Kylin14.04终于可以使用root登陆了
Ubuntu Kylin14.04怎样使用root登陆? 方法:找到/usr/share/lightm/ightm.conf.d 用gedit或者vi 打开50-unity-greet ...
- On Memory Leaks in Java and in Android.
from:http://chaosinmotion.com/blog/?p=696 Just because it's a garbage collected language doesn't mea ...
- Android Camera
Android调用系统api使用照相机功能,实现拍照获取图片以及从照相机库中获取指定图片的功能. 下面是演示样例代码: <?xml version="1.0" encodin ...
- iOS开发——语法&高级Block练习
高级Block练习 一 .最简单的block使用 使用block的三个步骤:1.定义block变量 2.创建block代码块 3.调用block匿名函数 定义一个block的构成包括:返回值,bloc ...
- 隐藏gvim中的工具栏和菜单栏
在vim的配置文件.vimrc中添加如下代码: "Toggle Menu and Toolbar set guioptions-=m set guioptions-=T map <si ...