热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

三种可编译型CSS语言Sass,Less,Stylus的使用感受

花了两天时间学习了sass,less,stylus的基本语法和简单使用,谈谈感受.1.变量的问题1.1变量的表示sass有个$var,less有@var,stylus的var直接就是

花了两天时间学习了 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

功能上 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, 就是一个全自动化的工具, 真的是很方便.



推荐阅读
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
author-avatar
Android源代码
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有