Sass浅谈
对于一名前端开发来说,CSS并不陌生,几乎每天都在和CSS打交道。相处久了就会觉得CSS有些许的机械化,有些许的无趣;就会觉得写CSS很多时候都是在做一些复制粘贴性的工作,布局排版,颜色设置,边框属性,宽高取值,布局制作等等;就会觉得JQ之类的比CSS用起来顺手多了,可以设置变量、可以书写循环、可以不再机械性的写重复的代码·······
终于有一天让我遇到了Sass,让我可以用另一种方式来完成我的工作,让我不再是一个复制代码的码农,让我不再机械的进行工作,让我可以像写JQ一样为自己的样式文件设置变量书写循环,让我更有激情的完成更具意义的工作。
言归正传,开始谈下Sass。Sass是一种基于CSS的预处理语言,在CSS的基础上将代码抽象和简单化。简单的理解,Sass分为两种语法,一种是SCSS,另一种就是SASS。因为新的语法SCSS和平时使用CSS的习惯基本上一致,无须为了使用SCSS而改变以前的书写代码习惯,使得众多前端人员习喜欢使用并广为传播发扬光大(如无特别说明,本文所指的都是SCSS)。
真正的在项目中运用Sass,需要在电脑中构建好Sass的环境,包括安装Ruby环境、安装Sass、调试Sass以及编译Sass。
接着就是语法,仅Sass的语法外表看,和CSS可以说是基本一致。但若想真正的运用Sass,懂得运用CSS远远不够,首先需要熟悉Sass的基本特征:
1. 变量:用来定义变量,项目中属性值需要改变时只需改变变量值即可,不用再一个个的去改属性值。
2. 嵌套:样式和属性的嵌套,增加样式代码的可读性
3. Mixins:抽取样式定义为模块,封装好的模块可以拿来像函数那样调用,可以运用到多个页面和项目,为代码的简洁和减少冗余提供了必要的条件。
4. 选择器继承:继承选择样式
Sass为写CSS提供更多的自由,像编程语言一样,可以给你的样式定义变量,构建嵌套、增加条件判断,建立循环、赋予CSS以逻辑功能。
比如,Sass可以将颜色设置为变量,并在整个项目中重复使用他们,轻松实现多个色调的构建。复杂一点的,你可以通过Sass的mixins生成一个网格的布局功能,然后在对应的类名通过include来调用,生成所需要的网格布局。另外还可以通过extend来调用你的前面生成的类名。
诚然,具有编程特性,极大的减少CSS代码的重复性与代码的冗余,方便维护, 适应性更强,可读性更强这些都是Sass的优势。当然,优势不是说出来的,而是在代码中体验出来的。下面就选一些代码来体现这些优势:
首先是16分栏布局的(图1-1是Sass,图1-2是编译出来的CSS):
图1-1
图1-2
接着是拼合背景图片的(图2-1是Sass,图2-2是编译出来的CSS):
图2-1
图2-2
优势不言自明,看到这里估计很多前端人员都已经跃跃欲试,想在项目中运用Sass了。鉴于国内很多团队花大力气推广Sass却以流产告终,在此不得不再唠叨几句:
Sass是需要学习成本的,一个对Sass不了解或者对项目Sass库不了解的人是不能轻易去动Sass文件的,这是牵一发而动全身的,影响的可能不止一两个文件,也不止一两个项目。对项目做一个合理的规划,不要所有的sass一锅煮。指定一个拍板规划的人,避免团队合作中出现文件乱套的现象。
到这里,如果上面的准备都做足了以后,朋友们,放心大胆的开始你的Sass之旅吧!
Sass浅谈的更多相关文章
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- Linux特殊符号浅谈
Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...
随机推荐
- OMG点菜系统
算是一个项目吧,自己一个人也写了很久,有很多东西是自己写的,当然也有在网上借鉴人家大神的,不一而足,代码太多,不贴了,直接上图.(一直出现的天蓝色是使用windows自带主题壁纸上截取的一段) [原本 ...
- Sql获取第一天、最后一天
昨天面试一家公司,上机题目中要求获取每月最后一笔订单.用到了日期的选择性查询,回来在ITeye上找到了这篇文章. 原文: http://new-fighter.iteye.com/blog/17587 ...
- Python的平凡之路(7)
一.面向对象高级语法部分 1.静态方法.类方法.属性方法 ...
- IOS第三方字体
项目中想使用第三方的字体,在stackoverflow上查询解决办法,也折腾一会,添加成功,示例如下: 1.将xx.ttf字体库加入工程里面 2.在工程的xx-Info.plist文件中新添加一行Fo ...
- iOS Xcodebuild
简介 xcodebuild 是苹果发布自动构建的工具.它在一个Xcode项目下能构建一个或者多个targets ,也能在一个workspace或者Xcode项目上构建scheme,总的来说,用它没错就 ...
- oop、try_except、单例模式
本节大纲: 面向对象特性:封装.继承.多态.一:多态:python本身是多态,他的参数可以多种类型.可以是字符串.数字.列表等.当传入参数的时候,python可以判断参数的数据类型.而在java C# ...
- Scalding初探之二:动手来做做小实验
输入文件 Scalding既可以处理HDFS上的数据,也可以很方便地在本地运行处理一些test case便于debug,Source有好多种 1 TextLine(filename) TextLine ...
- POJ 1837 DP
一开始看到这个题 第一反应:暴搜! 看看数据范围 ...放弃了 然后就在各种憋状态转移方程. 各种不会 还是看了Discuss里面说的才有点儿思路 直接放状态转移方程: f[i][ j+ w[i]*c ...
- 【转载】非线性分析中的ansys跟踪显示
原文地址:http://muchong.com/html/201209/4936556.html 在ansys output windows 有 force convergenge valu 值 和 ...
- JavaScript对象属性赋值操作的逻辑
对象进行属性赋值操作时,其执行逻辑如下所示: 1. 当前对象中是否有该属性?有,进行赋值操作:没有,进行下一步判断. 2. 对象的原型链中是否有该属性?没有,在当前对象上创建该属性,并赋值:有,进行下 ...