花了两天时间学习了 sass, less, stylus的基本语法和简单使用, 谈谈感受.

1. 变量的问题

1.1变量的表示

sass有个$var, less有@var, stylus 的var直接就是var=值, 也可以使用$var

1.2 变量的赋值

sass, $var: value,

less: @var: value

stylus: var=10

2. 缩进的问题

sass, less均不需要缩进, 缩进无关

stylus也可以不用缩进, 使用默认的css花括号, 也可以使用缩进, 如果缩进不匹配就麻烦了

3. 宿主的问题

sass, 原来是用在ruby界的, 是haml的衍生品.

less,倒是原生的nodejs货

stylus, 也是nodejs的东西, 但是语法明显抄袭Python的感觉.

4. if条件判断的问题

sass的if和stylus的if引入很早了

但是less的if就没出现过, 渣一样的when, 让人蛋疼

stylus的if 类似与python的语法, if a is ‘unit‘

5.学习的难度

sass和less估计sass最好用了, less稍差, 也不是不能用, 就是感觉差了一点点, 连条件控制都没有

stylus的缩进, 开始给人耳目一新的感觉, 连 width: 100px; 这种, 冒号和分号都可以省略, 感觉, 哇哦, 还能这么省啊!

时间一长, 就觉得坑爹了, 我以前写的几十K的css, 难道都要按照你这个语法重新写一遍吗? 所以觉得, 这种省略花括号({}括号), 冒号(:号)甚至分号(;号), 只是一个噱头, 实际上是很坑爹的做法. 好在stylus及时弥补了, 支持原生的css写法. 那回过头来说, 你缩进个毛啊, 该不是嫌的蛋疼吧.

我觉得学习的难度, sass<less<stylus

功能上 sass不是最强的, stylus应该是最强的, 我看好stylus, 但是stylus这个名字不好拼写. 只能说less还有潜力可挖.

6. 关于函数

sass, less, stylus各自都有内置的函数, 尤其是关于颜色方面的函数, 都是很丰富的.

值得一提的是stylus的函数可以自己定义, 可以有一些数学运算啥的. 另外还支持python的列表一样的索引, 比如a=[1,2,3]  a[0]是1, a[-1]是3

我觉得可以自定义函数是stylus的优点, 比sass和less都强.

7. 在自由度上

我觉得less最不自由了, 没有if判断, 函数又不能自己定义, 只能反复写mixin了, 想要less更好, 只能期待官方添加了, 可是都发展了这么久了, 到如今还不是那么令人满意, 真不知道啥时候能爽.

sass的if比less强多了.

stylus的if有点python风格. 如果纯粹前端用, 还是不太好, 没js的好.

8. 周边工具

sass是ruby界的, gem啥的我不懂, 就不瞎扯了

less, 和grunt, cssmin, contat?配合还是很好的

stylus也是nodejs的, 周边工具和less想当, 不占优势

9. 集成方案

现有的一个集成方案是 fireshell, 看我写的文章:  Fireshell的使用说明 http://blog.csdn.NET/huyoo/article/details/41013989

作者是toddmotto, 这个FireShell主要是集成了sass, 项目地址在 https://github.com/toddmotto/fireshell
主要的工作就是你编写sass格式的scss文件, 然后搭配grunt-contrib-sass(要求安装ruby和sass 的gem包), 就可以实现自动编译sass/scss为css文件, 并最后合成并且压缩成一个style.min.css文件.

同时在http://localhost:9000端口开启了一个web服务, 可以方便的在本地查看你的网页的效果(在你的网页中引用这个style.min.css即可).

由于sass是分散的, 按照功能或者模块来分解一个网站所需要的css, 具有模块化的思维, 是很好的开发方式, fireshell就提供 了这个集成的方案.

这个集成方案中可以被替换的就是 sass 编译scss 替换成 less编译less文件, 或者stylus编译*.styl文件, 最后还是组合压缩.

因此, 一个fireshell中是可以实现集成sass, less, stylus的.

当然, 很多人可能只需要一个, 那么, 在fireshell的基础上, 做个分支就是很好方式了.

我就把sass替换为less了, 怎么替换的, 以及最终的代码, 请看:

把Fireshell中的sass模块替换为less编译css  http://blog.csdn.net/huyoo/article/details/41016175

过几天再整 stylus的分支.

10. 对这种模块化, 编译型的css来说, 我希望的有

1. 支持原生css的解析, 别在搞啥花花肠子了, 如果不是比现有方式更方便的东西, 就不要弄了, 比如缩进

2. 变量的问题, 目前为止, 我比较认同变量有个标记, 不管是$var还是@var, 直接var, 我有时候分不清到底是css的内置tag, 还是变量.

3. if条件控制, less太不给力了

4. 代码替换的问题, 一个要求, 好用

5. 自有特性, 别太饶, 简单点

6. 还是期待nodejs的版的编译型css, 因为周边工具很多, 尤其是grunt, 光是这三个东西grunt-contrib-sass, grunt-contrib-less, grunt-contrib-stylus, 就让我觉得很好了, 满足了

另外, nodejs里的 autoprefixer 更是一个让人觉得很爽的东西. https://github.com/nDmitry/grunt-autoprefixer

就是你能不能在某个浏览器上使用某个css特性 在这里有个很全的数据库 http://caniuse.com/

autoprefixer 就是基于这个数据库来给你的css代码自动添加 -webkit-  -moz-  -ms- -o-等前缀, 是结合grunt的task, 就是一个全自动化的工具, 真的是很方便.

时间: 2024-08-07 04:32:43

花了两天时间学习了 sass, less, stylus的基本语法和简单使用, 谈谈感受.的相关文章

如何花更少的时间学习更多的知识

花时间学习不见得就是真正的学习. 因为你的学习方法一开始就是错的话,那么花再多的时间在学习上也是无济于事. 所以你得看看这篇文章,如何花少量的时间却仍然学习到更多的知识.上帝给了我们每个人同样的时间,但是不同的人的效率确实不一样的,如果你觉得你的世界浪费了,先补习一下这篇文章:<暗时间>读书笔记与读后感. 一.知识整合法 聪明人不仅是学习成绩优异,更重要的是有独到的学习方法. 不像大多数学生凭记忆来求取好成绩,聪明的学生追求的是把知识串联起来构成一幅大的画面. 这也就是我所说的知识整合法. 知

PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用

如果你喜欢使用PostCSS,但又不想抛弃你最喜欢的预处理器.不用担心,你不需要作出二选一的选择,你可以把PostCSS和预处理器(Sass.Stylus或LESS)结合起来使用. 有几个PostCSS插件配合预处理器得到很好的赞誉,因为他们将功能添加到你的工作流中,让你工作变得更加轻松.如果你只使用一个预处理器,而不使用这些插件,你的工作流至少会变得更加困难. 我们会涉及一些免费的PostCSS插件,然后我们将会介绍一些配置的阐述,告诉您如何将PostCSS和你喜欢的预处理器(Sass.Sty

PHP用strtotime()函数比较两个时间的大小实例详解

在PHP开发中,我们经常会对两个时间的大小进行判断,但是,在PHP中,两个时间是不可以直接进行比较,因为时间是由年.月.日.时.分.秒组成的,所以,如果需要将两个时间进行比较的话,我们首先要做的就是将时间解析为时间戳的格式,这就要用到我们前面学习的利用strtotime()函数将日期和时间解析为UNIX时间戳的知识了,只有将时间转化为时间戳的格式,才能够进行比较.本章就给大家讲解一下,在PHP中,怎么比较两个时间的大小. 假如现在有两个时间: 2017-4-15 2018-4-15 我们首先就要

java 判断两个时间相差的天数!

package com.datedaycha;     import java.text.SimpleDateFormat;     import java.util.Calendar;     import java.util.Date;     import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;     /*      * java 判断两个时间相差的天数     1.实现目标     输入:两

Java中判断两个时间是否相隔一天

/**      * 判断两个时间是否相隔一天      */     public static boolean overOneDay(String date1,String date2){         Date startTime =stringToDate(date1);         Date endTime =stringToDate(date2);         long  between = endTime.getTime() - startTime.getTime();

js实现的计算两个时间之间的时间差

js实现的计算两个时间之间的时间差:在实际应用中,需要计算两个时间点之间的差距,一般来说都是计算当前时间和一个指定时间点之间的差距,并且有时候需要精确到天.小时.分钟和秒,下面就简单介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.

js计算两个时间相差的天数

day1='2014-03-31 00:00:01'; function get_day(day1,day2){ var s = day1; var dt = Date.parse(s.replace(/-/g,"/")); var day1 = new Date(dt); var s = day2; var dt = Date.parse(s.replace(/-/g,"/")); var day2 = new Date(dt); var date3=day1.g

花了一年时间完成的 在线G代码编辑,加工系统

G代码是数控程序中的加工指令.一般都称为G指令.可以直接用来驱动机床,各种控制系统.是一种数控行业标准.传统的G代码编写以及编辑无法在线编辑,也不能实时看到g代码编辑的最后加工路径已经不能直接对编辑的G代码进行加工. 为此我花了一年时间做了一款在线G代码编辑,加工系统,除了支持传统的G代码编辑,路径预览外,还可以支持G代码在线加工,通过加载固高,雷塞,众为兴,gail等主流的控制卡或控制系统的驱动,直接对当前编辑的G代码进行加工,做到在线编辑,在线加工,大大提高加工效率,可以用在一些简单的常用的

java计算两个时间相差(天、小时、分钟、秒)

public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格式生成一个simpledateformate对象 SimpleDateFormat sd = new SimpleDateFormat(format); long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 long nh = 1000 * 60 * 60;// 一小时的毫