常见class关键词:

布局类:header[ˈhedə(r)] 头, footer[ˈfʊtə(r)]页脚, container[kənˈteɪnə(r)] 容器, main[meɪn]主要的, content['kɒntent]内容, aside[əˈsaɪd]在一边, page[peɪdʒ] 页, section[ˈsekʃn]部分

包裹类:wrap[ræp] 包, inner[ˈɪnə(r)]内部的

区块类:region[ˈri:dʒən]区域, block[blɒk] 块, box[bɒks] 箱

结构类:hd, bd, ft, top, bottom, left, right, middle, col, row, grid, span

列表类:list, item, field

主次类:primary, secondary, sub, minor

大小类:s, m, l, xl, large, small

状态类:active, current, checked, hover, fail, success, warn, error, on, off

导航类:nav, prev, next, breadcrumb, forward, back, indicator, paging, first, last

交互类:tips, alert, modal, pop, panel, tabs, accordion, slide, scroll, overlay,

星级类:rate, star

分割类:group, seperate, divider

等分类:full, half, third, quarter

表格类:table, tr, td, cell, row

图片类:img, thumbnail, original, album, gallery

语言类:cn, en

论坛类:forum, bbs, topic, post

方向类:up, down, left, right

其他语义类:btn, close, ok, cancel, switch; link, title, info, intro, more, icon; form, label,
search, contact, phone, date, email, user; view, loading...

制定简单规则:
以中划线连接,如.item-img

使用两个中划线表示特殊化,如.item-img.item-img--small
表示在.item-img
的基础上特殊化
状态类直接使用单词,参考上面的关键词,如.active, .checked

图标以icon-
为前缀(字体图标采用.icon-font.i-name
方式命名)。
模块采用关键词命名,如.slide, .modal, .tips, .tabs
,特殊化采用上面两个中划线表示,如.imgslide--full, .modal--pay, .tips--up, .tabs--simple

js操作的类统一加上js-
前缀
不要超过四个class组合使用,如.a.b.c.d

关键词及规则都有了,现在可以进入本文的核心的核心,实战操作。
实战操作
以布局入手,大概结构如下:
header.header>.inner-centersection.section-feature>.inner-center // ifsection.section-main>.inner-centersection.section-postscript>.inner-center // iffooter.footer>.inner-center
  
具体可参考HTML整站结构设计,这里我们可以看出都是些简单的关键词,比较好理解,一看就知道是什么。
现在问题来了,如果其他地方也要用到这些关键词怎么办?
修饰关键词
以header为例,我们可以添加前缀表示不同的header,如区块头部.block-hd
(hd为header简写),modal头部.modal-hd
,文章头部.article-hd

同样标题也可以分为,页面标题.page-tt
(title的简写),区块标题.block-tt
等。
同样,这给我们提出了第二个问题,如果要特殊化某个class该怎么办?
特殊化class
以上面的tt为例,大概有三种办法:
第一种办法:直接修改class,将.page-tt
修改成.page-user-tt
(可以采用scss的%
先定义共用的代码)。
第二种办法: 追加class特殊化,根据我们上面定义的规则,在.page-tt
上追加一个class成为.page-tt.page-tt--user
,注意.page-tt--user
不是一个独立的class,它使基于.page-tt
这个基础上的。
第三种办法: 使用父类,给一个范围,于是形成.page-user .page-tt

一般我们使用的是第二种和第三种办法,因为这两种都有共同的.page-tt
,可以比较方便控制一些基础共有的样式。
由第三个通过父类控制的办法,我们进入第三个要讨论的问题,层级结构
层级
最适合层级的例子莫过于ul>li
结构了,如下面的结构:
<ul> <li> <a href="#"><img src="" alt=""></a> <h3><a href="#"></a></h3> <p></p> </li></ul>
  
一般来说我们也有两种办法定义层级,第一种为继承式,第二种为关键词式。
// 继承式ul.card-list li.list-item a.item-img-link>img.item-img h3.item-tt>a.item-tt-link p.item-text// 关键词式ul.card-list li.item a.field-img-link>img.field-img h3.field-tt>a.field-tt-link p.field-text
  
由上可以看出继承式一般子元素接着父元素的最后一个单词如li接着ul的list
,而li的子元素接着li的item
;至于关键词式则完全由关键词来表示层级,list>item>filed
正好构成三层等级。
最后由我们的层级进入我们最后一个问题,如何控制样式的范围
样式范围
这里以腾讯课堂的课程详细页右边栏为例,如下图:


三个区块的基础框架为:
.aside-block.block--xxx> h3.block-tt .block-bd
  
其中.aside-block.block--xxx
用到了我们的特殊化class,而.block-tt
,block-bd
则使用了我们的修饰关键词,至于.aside-block
与它的子元素之间则使用了我们上面说的继承式层级。现在根据这个层级结构我们定义基础样式如下:
.aside-block{ .block-tt{} .block-bd{}}
  
假设这里的联系机构区块的标题不一样,我们则可以:
.block--contact{ .block-tt{}}
  
当然如果本身有5个区块,2个标题一样,另外三个标题又一样,也许我们就有需要给.block-tt
追加一个特殊化class,或者给aside-block
特殊化一个class,如:
.aside-block{ .block-tt{ &.block-tt--special{} } .block-bd{}}// 或.aside-block{ &..aside-block--special{ .block-tt{} }}
  
基础框架讨论完毕之后,就轮到我们的内容了,以联系机构为例:
使用ul>li
结构,所以样式是另外一个独立的范围,不嵌套在之前的.aside-block
里面,html及css代码如下:
ul.contact-list li i.item-icon.icon-font.i-xxx a.item-tt p.gray
  
这里我们li没有设置class,而p使用了一个全局的class.gray

.gray{}.contact-list{ li{} .item-icon{} .item-tt}
  
同理如果我们有其他地方应用这个可以拷贝过去,而如果需要一点调整,我们可以使用父元素来控制,如这里我们可以使用.block--contact
来进一步调整contact的样式,如:
.block--contact{ .contact-list{ li{} }}
  
至此,我们的class命名方法讨论完毕,说到底就是先记住一些必备的基础关键词,然后合理应用上刚才提出的修饰关键词,特殊化class,层级及最后的样式范围就可以了。

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

推荐阅读更多精彩内容

  • 布局类:header, footer, container, main, content, aside, page...
    大道路漫漫阅读 355评论 0 0
  • 转载自(http://web.jobbole.com/83967/) 常见class关键词: 布局类:header...
    居客侠阅读 402评论 0 0
  • 常见class关键词:布局类:header, footer, container, main, content, ...
    penggelies07阅读 1,146评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 在你还未开口之前 我就自己扒下 并非不喜欢漂亮 而是你的恶语让人如梗在喉 所以我宁愿做个快乐的小狗 也比遇见你好受
    得一生二阅读 399评论 2 1