- 浏览: 2076750 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
Asset Pipeline 提供了内建直接使用 Sass 撰写 CSS 的功能。
你也许会生出这样的疑惑:什么是 Sass? Why should I care?
Sass (Syntactically Awesome Stylesheets) 原先是内建在 Haml 中的一个副功能。
利用缩排设计避免製造难以 debug 的 syntax error
Haml
要谈 Sass,就不得不先来谈 Haml 这个 project。 Haml 全名为 HTML Abstract Markup Language,它是提供网页设计师撰写 HTML 的另外一条途径。
透过 Haml,你可以很快的使用它的 syntax 写出结构稳固的 HTML。
网页设计师经常有一个烦恼:在撰写 HTML 时要是忘记关一个 TAG,在浏览器中整个版面可能就会大爆炸,而这样的 Bug 却是很难被抓出来的。
Haml 主要就是让开发者,能够使用缩排的方式撰写 HTML,轻鬆做到永不忘记关 Tag 的效果。以下是 Haml 范例:
产生出来的 HTML 就会长这样
而
会产生出来这样的 HTML
Haml 是需要使用缩排撰写,再行 compile 的 markup language。它可以让你:
阻绝撰写出错误结构的 HTML TAG 的机会
只要 syntax 一错误,编译就无法成功。利用这样的特性,很容易阻绝写出会在浏览器因为 TAG 结构错误而难以 debug 出的 HTML。
轻鬆调整排版
在网页设计开发阶段,若要大幅调整 HTML 结构,对网页设计师也是很伤脑筋的一件事。因为大幅的搬动 HTML,通常有时候会造成:「少剪到一个 TAG」或 「改了开头 TAG ,却忘了改关闭 TAG 」的憾事。
在 Haml 中,这些状况都不会发生。因为 Haml 本身就属于「块状结构」、「自我 close」。因此不论怎样搬动和调整,只要符合缩排,几乎都不会爆炸。
使用 Haml 撰写 HTML 的坏处
如此 powerful 的 markup language 为何没有风行?反倒是原先属于副功能的 Sass 大红特红。
原因就在于 Haml 的特性:不只需要被机器 compile,它也需要被人脑 compile。
HTML 本身就是一门相当直观的 markup language。
在撰写 Haml 时,排版虽然相当轻鬆。但接手维护 Haml 版面的人,却通常痛苦不堪。因为「非常不直观」。
这也是 Haml 的反对者,批评最力的地方。
多数人无法接受维护不直观的「任何东西」,加上撰写 Haml 需要另外学习特殊的 syntax。没有压倒性的好处,一般人是不会贸然进行技术投资的。这也是为什么 Haml 始终处是小众技术的主要原因。
Sass / SCSS
拉回来谈 Sass,Sass 原先是附属在 Haml 裡面的一个副功能。这也是 sass-convert 这个指令必须要安装 haml 这个 gem 才能使用的原因。
Sass 的原理,是让开发者可以透过「缩排」的方式去撰写维护 CSS,同样可以避免忘记关 TAG 而大爆炸的糗事。
而因为 CSS 的结构特性,造成了 Sass 与 Haml 截然不同的命运。多数人反对 Haml,是因为 Haml 反而造成了 HTML 在阅读上的不直观。
而 Sass 的语法
产生出
反倒让 CSS 的维护变得直观了。
接触 Sass / SCSS 后的不少开发者甚至认为,缩排 block 的撰写方式才是 CSS 在被发明时应该被设计出来的样子。
现在撰写 CSS 的方式,有一个绝大缺点:只要在结构上涉及巢状或多个 class,维护者就必须複製贴上 style。不少人认为这真是愚蠢至极且烦人透顶的设计。
内建 Killer features 让维护 CSS 变得更简单
Sass 也提供了其他便利功能,如变数、函数、数学、继承、mixin …等等功能。
在进行网页 protyping 时,更改全站配色或者是直接提供两个以上的设计,对设计师来说是家常便饭的事。
但更改全站配色却是相当麻烦的一件事,因为「寻找 + 全数取代」,并不能保证最后会有正确的结果。很有可能:你更改了所有 CSS 中涉及连结的颜色,却发现在全数取代的过程中,不小心也改到边框的颜色。
若能使用变数去指定特定 style 的颜色,该有多好。
变数 ( Variables )
CSS
在调整区块宽度时,你也希望:每次调整宽度时,可不可以不要每次都按计算机,再全数手动修改…
在调整颜色亮度时,你希望可否无需再开调色盘,直接改 CSS 就让 style 暗一点?
这都还只是 Sass 所提供的当中一小部分基础功能而已,却足以让网页设计师惊艳十足了。加上撰写维护时十分直观,这也难怪为何 Sass 只是 Haml 中的副功能,后继的声势浪头却远高于 Haml 本身。
SCSS
那 SCSS 又与 Sass 有什么差别,他们看起来好像是类似的东西?
是这样的,Sass 原先使用的缩排,对于网页设计师来说,还是相当不直观。而且实务上也不能直接将旧有的 CSS 直接贴进 Sass 中。其实还是存在一定的不方便度。也因此 Sass 进行了进化,改良了 syntax,而 Sass 3 后来就被称为 SCSS ( Sassy CSS)。
它的 syntax 与 CSS 原有的 syntax 完全 compatible,使用了 { } 去取代原先的缩排方式。
比如说原有的
在 SCSS 中变成了
在撰写上,更加无比的直观,同时也能将旧有的 CSS 直接贴进去,完全没问题!SCSS 更新增了不少关于 CSS3 的 feature 函式。
就拿我最爱的背景渐变色来说好了,原先要做渐变色,CSS 必须要这样写:
但在 SCSS 中,一行就搞定了!
小结
为什么 Rails 3.1 鼓励推行 Sass?因为 Sass / SCSS 实在可以大幅节省 网页设计师 / 开发者维护网站程式的功夫。
而在这章中,其实我还没讲到 Rails 3.1 真正整合 Sass 的重点:「Compass」。「Compass」是一套 SCSS 的 Framework。它才是最强大的工具。images
http://upgrade2rails31.heroku.com/sass-scss/
你也许会生出这样的疑惑:什么是 Sass? Why should I care?
Sass (Syntactically Awesome Stylesheets) 原先是内建在 Haml 中的一个副功能。
利用缩排设计避免製造难以 debug 的 syntax error
Haml
要谈 Sass,就不得不先来谈 Haml 这个 project。 Haml 全名为 HTML Abstract Markup Language,它是提供网页设计师撰写 HTML 的另外一条途径。
透过 Haml,你可以很快的使用它的 syntax 写出结构稳固的 HTML。
网页设计师经常有一个烦恼:在撰写 HTML 时要是忘记关一个 TAG,在浏览器中整个版面可能就会大爆炸,而这样的 Bug 却是很难被抓出来的。
Haml 主要就是让开发者,能够使用缩排的方式撰写 HTML,轻鬆做到永不忘记关 Tag 的效果。以下是 Haml 范例:
%h1= "Hello World"
产生出来的 HTML 就会长这样
<h1>Hello World</h1>
而
%ul{:id => "list", :class => "menu"} %li= "Item 1" %li= "Item 2" %li= "Item 3"
会产生出来这样的 HTML
<ul id="list" class="menu"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul>使用 Haml 撰写 HTML 的好处
Haml 是需要使用缩排撰写,再行 compile 的 markup language。它可以让你:
阻绝撰写出错误结构的 HTML TAG 的机会
只要 syntax 一错误,编译就无法成功。利用这样的特性,很容易阻绝写出会在浏览器因为 TAG 结构错误而难以 debug 出的 HTML。
轻鬆调整排版
在网页设计开发阶段,若要大幅调整 HTML 结构,对网页设计师也是很伤脑筋的一件事。因为大幅的搬动 HTML,通常有时候会造成:「少剪到一个 TAG」或 「改了开头 TAG ,却忘了改关闭 TAG 」的憾事。
在 Haml 中,这些状况都不会发生。因为 Haml 本身就属于「块状结构」、「自我 close」。因此不论怎样搬动和调整,只要符合缩排,几乎都不会爆炸。
使用 Haml 撰写 HTML 的坏处
如此 powerful 的 markup language 为何没有风行?反倒是原先属于副功能的 Sass 大红特红。
原因就在于 Haml 的特性:不只需要被机器 compile,它也需要被人脑 compile。
HTML 本身就是一门相当直观的 markup language。
在撰写 Haml 时,排版虽然相当轻鬆。但接手维护 Haml 版面的人,却通常痛苦不堪。因为「非常不直观」。
这也是 Haml 的反对者,批评最力的地方。
多数人无法接受维护不直观的「任何东西」,加上撰写 Haml 需要另外学习特殊的 syntax。没有压倒性的好处,一般人是不会贸然进行技术投资的。这也是为什么 Haml 始终处是小众技术的主要原因。
Sass / SCSS
拉回来谈 Sass,Sass 原先是附属在 Haml 裡面的一个副功能。这也是 sass-convert 这个指令必须要安装 haml 这个 gem 才能使用的原因。
Sass 的原理,是让开发者可以透过「缩排」的方式去撰写维护 CSS,同样可以避免忘记关 TAG 而大爆炸的糗事。
而因为 CSS 的结构特性,造成了 Sass 与 Haml 截然不同的命运。多数人反对 Haml,是因为 Haml 反而造成了 HTML 在阅读上的不直观。
而 Sass 的语法
.content margin: 2em 0 h1 font-size: 2em
产生出
.content{ margin: 2em 0; } .content h1{ font-size: 2em; }
反倒让 CSS 的维护变得直观了。
接触 Sass / SCSS 后的不少开发者甚至认为,缩排 block 的撰写方式才是 CSS 在被发明时应该被设计出来的样子。
现在撰写 CSS 的方式,有一个绝大缺点:只要在结构上涉及巢状或多个 class,维护者就必须複製贴上 style。不少人认为这真是愚蠢至极且烦人透顶的设计。
内建 Killer features 让维护 CSS 变得更简单
Sass 也提供了其他便利功能,如变数、函数、数学、继承、mixin …等等功能。
在进行网页 protyping 时,更改全站配色或者是直接提供两个以上的设计,对设计师来说是家常便饭的事。
但更改全站配色却是相当麻烦的一件事,因为「寻找 + 全数取代」,并不能保证最后会有正确的结果。很有可能:你更改了所有 CSS 中涉及连结的颜色,却发现在全数取代的过程中,不小心也改到边框的颜色。
若能使用变数去指定特定 style 的颜色,该有多好。
变数 ( Variables )
$border-color: #3bbfce $link-color: #3bbfcf .content border-color: $border-color a color: $link-color
CSS
.content{ border-color: #3bbfce; } .content a{color: #3bbfcf; }数学
在调整区块宽度时,你也希望:每次调整宽度时,可不可以不要每次都按计算机,再全数手动修改…
.content width: (500px/2);
.content{ width: 250px; }内建函式
在调整颜色亮度时,你希望可否无需再开调色盘,直接改 CSS 就让 style 暗一点?
$color = darken(#800, 20%) .content background-color: $color .content{ background-color: #200; }
这都还只是 Sass 所提供的当中一小部分基础功能而已,却足以让网页设计师惊艳十足了。加上撰写维护时十分直观,这也难怪为何 Sass 只是 Haml 中的副功能,后继的声势浪头却远高于 Haml 本身。
SCSS
那 SCSS 又与 Sass 有什么差别,他们看起来好像是类似的东西?
是这样的,Sass 原先使用的缩排,对于网页设计师来说,还是相当不直观。而且实务上也不能直接将旧有的 CSS 直接贴进 Sass 中。其实还是存在一定的不方便度。也因此 Sass 进行了进化,改良了 syntax,而 Sass 3 后来就被称为 SCSS ( Sassy CSS)。
它的 syntax 与 CSS 原有的 syntax 完全 compatible,使用了 { } 去取代原先的缩排方式。
比如说原有的
.content margin: 2em 0 h1 font-size: 2em
在 SCSS 中变成了
.content{ margin: 2em 0; h1 {font-size: 2em } }
在撰写上,更加无比的直观,同时也能将旧有的 CSS 直接贴进去,完全没问题!SCSS 更新增了不少关于 CSS3 的 feature 函式。
就拿我最爱的背景渐变色来说好了,原先要做渐变色,CSS 必须要这样写:
#linear-gradient { background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #ffffff), color-stop(100%, #dddddd)); background-image: -webkit-linear-gradient(left top, #ffffff, #dddddd); background-image: -moz-linear-gradient(left top, #ffffff, #dddddd); background-image: -o-linear-gradient(left top, #ffffff, #dddddd); background-image: -ms-linear-gradient(left top, #ffffff, #dddddd); background-image: linear-gradient(left top, #ffffff, #dddddd); }因为你必须支援所有的 Browser。
但在 SCSS 中,一行就搞定了!
#linear-gradient { @include background-image(linear-gradient(left top, white, #dddddd)); }
小结
为什么 Rails 3.1 鼓励推行 Sass?因为 Sass / SCSS 实在可以大幅节省 网页设计师 / 开发者维护网站程式的功夫。
而在这章中,其实我还没讲到 Rails 3.1 真正整合 Sass 的重点:「Compass」。「Compass」是一套 SCSS 的 Framework。它才是最强大的工具。images
http://upgrade2rails31.heroku.com/sass-scss/
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 937heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3259reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3296alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1473问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1386这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1350以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1909首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2278这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2269开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1241class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8148TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2027刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1496这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1949面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17220git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2739简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 948第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1698开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2124又是这个date format的错误。 上次出错忘了,记录下 ... -
ruby面试系列五,面试题及其他
2011-11-05 21:18 7409周六早晨,因为早了所 ...
相关推荐
为 Bootstrap SASS、HAML、Compass 和 Coffeescript 修改的 ##与原始根的区别 grunt-haml-php - 针对最新版本的 MTHAML 进行了修改并修复了编译和 (不依赖于packages.json!) assets/sass - SASS 文件夹 assets/...
Nova 打开文件速度非常快,并且已内置对 CoffeeScript、CSS、Diff、ERB、Haml、HTML、INI、JavaScript、JSON、JSX、Less、Lua、Markdown、Perl、PHP、Python、Ruby、Sass、SCSS、Smarty、SQL、TSX、TypeScript、XML...
Prepros 是 Windows 上一个开源的程序可自动将 Less, Sass, Scss, Stylus, Jade, Coffeescript, Haml and Markdown 编译成 CSS、JS 和 HTML。 标签:Prepros
CSS /更少/ SASS / SCSS HAML /降价/纺织品/ ERB Clojure(与Cider和nRepl一起使用) Javascript / Coffeescript Python PHP 哈斯克尔 埃尔朗 常见的Lisp(带有粘液) 特别是,有一个很好的选项卡自动完成...
CSS /更少/ SASS / SCSS HAML /降价/纺织品/ ERB Clojure(与Cider和nRepl一起使用) Javascript / Coffeescript Python PHP 哈斯克尔 埃尔朗 常见的Lisp(带有粘液) 特别是,有一个很好的选项卡自动完成...
现代工具包 现代网络浏览器引擎! ModernKit 实现了新的浏览器技术,如 ... Modernkit 将支持额外的语言,如 SIML & HAML、Coffeescript 和 SASS/SCSS。 Modernkit 目前只解析 HTML,但计划在下一次提交中支持 CSS。
合理的Emacs配置 这是我的emacs配置树,... CSS /更少/ SASS / SCSS Javascript / Typescript / Coffeescript HTML / HAML /降价/纺织品/ ERB 常见的Lisp(带有粘液) Python 锈 Clojure(与Cider和nRepl一起使用)
Sass / SCSS Swift 注意:当猎犬无需检查时,它将报告成功状态。 如果您对服务有任何疑问,请参阅“或通过向我们发送电子邮件。 要贡献给Hound代码库,请参阅文件。 执照 Hound的名称和徽标是Hound Group LLC的...
此配置为以下内容添加了改进的默认设置和扩展支持,从我使用它们的大致顺序(从最大到最小)列出了以下内容: Haskell / Purescript / Elm / OCaml Ruby / Ruby on Rails SQL CSS /更少/ SASS / SCSS Javascript / ...
Nova已内置支持CoffeeScript,CSS,Diff,ERB,Haml,HTML,INI,JavaScript,JSON,JSX,Less,Lua,MarkDown,Perl,PHP,Python,Ruby,Sass,SCSS,Smarty,SQL,TSX,TypeScript,XML和YAML。
起动机 未来项目的模板 目前支持: 浏览器内的 coffeescript、livescript 和 typescript 浏览器内 sass(加上 scss?)、less 和 stylus 降价,haml,yaml,玉,会徽 ...指南针(sass 和 scss) 神话
Sass(SCSS) Stylus LESS [GitHub] Hat [GitHub] Compass [GitHub] Bourbon [GitHub] Gumby [GitHub] nib [GitHub] 基础库 模块化...