使用 SASS 创建语义化 HTML

告诉大家一个秘密, 自从有了 SASS 之后, 我们可以有两种方式来使用 css,
我管它们叫做 类库式框架式

这里我以 foundation 这个 scss 框架为例, 它和我们熟悉的 bootstrap 类似,
只不过 bootstrap 使用 less 写的 (bootstrap 3 也改为 SASS 了, foundation 是由 sass 写的。
foundation 是一个对 developer 友好的前端框架, 如果说 bootstrap 是一个 ui 库的话, foundation 更偏重于成为一个工具。

如果你对 foundation 不熟的话, 首先看一个这个例子

你会发现它的用法和 bootstrap 非常类似, 这就是我刚才所说的 框架式 用法。
这种用法只要是接触过 bootstrap 的同学都不会陌生。它的核心就是 ui 驱动, 你需要这个元素成为什么样子,
你就把框架提供的 class 的名字赋值给这个元素。 这就是一般框架的做法, 比如说 rails,我提供一套规范,
然后你的模型想要能绑定数据库, 那你就继承 activerecord 类, 你的 controller 要想接收 http 请求,
就要继承 application_controller。 然后 model 放 model 文件夹下, controller 放 controller 文件夹下。
这就和很多 css 框架提供的 grid (网格) 类似, 每个元素都必须处于一个 column 之内, 而 column 需要被 row 所包围。

其实还有另外一种用法, 就是 类库式, 类库和框架的区别, 其实一句话就能说明白了。

Frameworks drive you, you drive libs。

foundation 的官方文档里, 很多组件都有 Semantic Markup With Sass 这一节。
那什么是 semantic markup 呢? 简单来说就是你的 markup 要语义化。
框架式 的用法中, 博客的边栏被赋予了一个叫做 col-4 的 class, 这就不是语义化的。
因为 col-4 表达的是外观的信息, 表示这个元素占用的宽度是4。 这就不是语义化的。
markup 应该表示的是元素的功能, 而不是外观。
而使用 sass 的 mixin, 就可以实现语义化。 比如你有一个按钮, class 命名为 fire
然后你需要加载 foundation 的一个圆边的按钮样式, 使用框架式的用法那就只能给这个元素再加上
button radius 这两个 class 命名。 而使用 类库式 那就能这样写:

.fire {
    @include button
}

这两种写法最终生成的 css 当然是有所不同的, 这个后面来讲, 不过至少它们所展现出来的样式是一致的。
在 html 结构上来说, 类库式 更为简洁。

上面的那个例子中,使用 类库式 的代码如下:

@import '../../bower_components/foundation/scss/foundation/components/grid';

.main {
    @include grid-row();
}

.brother {
    @include grid-column(6);
}

点击查看结果

搞了半天, 这两种写法的区别就是在 markup 上稍微减少了几个字符而已。
事实不是这么简单的。 重点并不是少写几个单词, 重点是 html 的结构变得更稳定了。

现在的 html 结构就变得更加抽象,而把底层实现更多的交给 css。

这多亏了 scss 的强大,使得 css 变得更加灵活和抽象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,123评论 4 61
  • 婚姻是什么呢?! 我想每个人对它的理解都是不同的,朴实或深情。 而我最初对婚姻的理解和畅想却是来源于我的父母。 我...
    松木燃烧的香气阅读 395评论 0 1
  • 我是内种离中式审美里的“美女”相去甚远的类型。比如说,有个词叫三庭五眼,其中的五眼指的是太阳、两眼、鼻梁把这一条直...
    芷汀阅读 516评论 1 4
  • 最近都没发表文章了,觉得自己写的,总是缺了那么一点让人一看就一呼百应的精气神。 我写的文章,都是我自己或者身边人身...
    惜利姐阅读 980评论 13 3