对于一名前端开发来说,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浅谈的更多相关文章

  1. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  2. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  3. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  4. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  5. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  6. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  7. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  8. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  9. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

随机推荐

  1. PHP的GD 支持和加载MySQL功能

    本机安装dedecms时发现, GD 支持 On [×]Off (不支持将导致与图片相关的大多数功能无法使用或引发警告) MySQL 支持 On [×]Off (不支持无法使用本系统) 错误,原来是环 ...

  2. Web Form 取消手机端自动转换

    将项目中的Site.Mobile.Master排除重新发布即可

  3. 2014年5月份第1周51Aspx源码发布详情

    郑州某高校学生考评系统源码  2014-5-5 [VS2008]功能介绍:   1.用户角色有部主任.教师.学生等.   2.可添加班级考评项目.学生考评项目.   3.可指定学生对班级.学生某考评项 ...

  4. public static void main(String[] args){}函数理解

    主函数的一般写法如下: public static void main(String[] args){…} 下面分别解释这些关键字的作用: (1)public关键字,这个好理解,声明主函数为publi ...

  5. spring-websocket的搭建

    Apach Tomcat 8.0.3+MyEclipse+maven+JDK1.7 spring4.0以后加入了对websocket技术的支持,撸主目前的项目用的是SSM(springMVC+spri ...

  6. JavaWeb用Jdbc操作MySql数据库(二)

    一.仍然使用前面的环境和示例数据库. 二.建立发出注册请求的页面index3.jsp. <%@ page language="java" import="java. ...

  7. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  8. timer--计时器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. windows端加密程序,lua代码,ZeroBrane调试

    发一个自己改的zerobrane版本(启动中文,快捷键改成和一样:F5启动调试,F9断点,F10逐过程,F11逐语句,F12跳出函数) 在zerobrane 1.0(2015.3.13)发布的基础上改 ...

  10. 装个centos虚拟机之设置桥接网络

    问题1:设置静态ip 虚拟机网路选择桥接后,设置静态ip: (1):先看下当前用的哪个网络 (2):打开配置文件,修改内容 内容参照mac配置,(注意:mac网络配置里的路由器就是默认网关GATEWA ...