一直以来我的CSS 的 class命名都是比较随意,有时采用驼峰式、有时采用下划线,好像没有什么统一的标准,想到什么英文单词就拿过来用,这对于自己瞎写的小项目无伤大雅,遇到冲突的问题可稍加调整改变即可。

今天,我学习并掌握了一种新的class命名规范,觉得它更加科学更加稳健。在此总结。

关注分离

class 的命名要遵循关注分离、松耦合的原则,同时注重易于理解

下面的代码展示了一些简单的 class 命名规范 ```html

 

```

css .news {} .news-list {} .news-list-title {} .news-list-description {} .news-list-detail {} class的层次分级一般不超过三级较好!

减少“多类症”

当 HTML 源代码满眼望去都是 class 时,你会完全抓狂!为了实现代码复用,减少重复冗余,我们需要把代码拆分在不同的 class 下面,并且注重寻找平衡点,减少不必要的 class

减少嵌套层级

使用 LESS 编写样式可以很方便的嵌套,但是不能过度嵌套选择符

下面这样是很low的 .news .news-list .news-list-share ul li h5 a:hover{...} 所以选择符嵌套在必要的情况下一般不超过三层;选择符叠加一般不多于两个。

公用样式

对于整个设计搞,CSS 的重用非常重要,一定要在拿到设计稿后对一些公有样式进行选择性抽取。 如: breadcrumb {} pages {} btn-default {} btn-default_type1 {} btn-default_type2 {} 在这里我们看到了 “-” 和 “_”,我是这样区分的:短线“-”表示层级关系,用“ _” 表示表示同一类对象的不同表现方式。

对于一些在公有样式的基础上有些私有特性的目标,我们选择先继承,后微调

```html

css .login btn-default {} ``` 公有样式我们可以嵌套用,堆叠用,但是不要单独用!

面向属性的命名

我们习惯在CSS命名的时候掺杂属性,这样可以让代码更易懂,但是语义其实对自身也是一种舒服,越是语义强烈的命名越是没有重用性。 比如: ```

 

``` 这时我们发现页面中间有个标题样式也是一样的,我们难道要使用一样的类名?

可见命名不合理会大大限制CSS的重用性。如何命名才能让CSS发挥最大的重用性潜力呢?答案是:面向属性的命名! 比如: css f_12px {font-size:12px;} c_Green {color:#0aac02;} a_Gray:link{color:#666;} blank24{height24px; overflow:hidden;} i_Btn_base {display:inline-block; color:@btn-color;height:32px;}

关于命名空间

如果我们采用了多个库,我们会发现命名空间的好处。 比如YUI中的 yui, Pure 中的 pure, Amaze 中的 am, 都是为了

1、多个框架共存

2、多人协作开发命名冲突

3、使用第三方服务插件时产生干扰

4、自己编写的CSS意外覆盖框架

精简高效CSS命名之“三无原则”

无ID、无层级、无标签

CSS就应该最简单,最直接,直捣黄龙。有三大原因:

1、限制重用

2、CSS文件大小(过长的选择器层级)

3、降低了渲染效率(CSS的渲染方式是”从右往左“渲染的,层级越多,渲染的开销也就越大) 例如: ```

 

//#test .test{}, ul.test{}, #test ul{} 和 .test{} 哪种写法渲染速度最快? ``` .test {} 的渲染速度是最快的(”从右往左“渲染),javascript获取最快的当然是 #test ul{}了,因为 getElementById 和 getElementByTagName 都是JS内置的方法。

扯点别的

对于一个项目,我们可以将样式分别存储在多个文件中。多个文件能够更好的管理公用样式和组件。 比如: reset.css /* 默认基础样式,或使用 normalize.css */ icon.css /* 所有的图标URL和基础样式 */ skin.css /* 页面所有预定义颜色,便于更改色调主题 */ component.css /* 公用组件样式,比如:弹窗、页码、导航、按钮等 */ main.css /* All your self */

再探CSS 中 class 命名规范的更多相关文章

  1. html中css、div命名规范

    html中css.div命名规范 1.类class的命名规范示例 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column ...

  2. iOS开发(OC)中的命名规范

    开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...

  3. Java中的命名规范到底是怎样的

    内容摘要:命名规范二,java中的方法名,对象名和字段名的第一个单词的首写字母应该小写,而后面的每个单词的首字母都应该小写 要想将java基础学的十分的牢固就必须将java中的命名规范掌握好了.俗话说 ...

  4. 问答:怎样规划CSS 中 的命名方式 怎样看待 CSS 中 BEM 的命名方式?

    好多盆友 非常纠结 css命名规则 怎么弄,还没起步就被绊住了.那么今天蝈蝈就针对这个问题来讨论一下 没什么技术 含量.但却对效率开发至关重要的 "问题". 下文是一些知乎大神的个 ...

  5. css的一些命名规范

    网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...

  6. js中的命名规范

    在实际开发中规范的命名,不仅方便自己查看,理解变量的实际意义,而且在团队开发中也能提高开发效率. 下面将介绍javascript中的变量的命名规范: 1)首先,变量名要有实际意义,不建议使用单个的字母 ...

  7. CSS+DIV标签命名规范 搜索引擎最喜欢

    搜索引擎优化(seo)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面是目前流行的CSS+DIV的命名规则: 登录条:loginBar  标志:logo  侧栏:si ...

  8. css样式文件命名规范

    样式文件命名规范 主要 master.css, style.css, main.css 布局 layout.css 专栏 columns.css 文字 font.css 打印 print.css 主题 ...

  9. 浅谈Java中的命名规范

    现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...

随机推荐

  1. DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)

    转自:http://www.360doc.com/content/14/0116/16/15528092_345730642.shtml 以及参考网络. 首先,我们先了解一下内存的大体结构工作流程,这 ...

  2. ListView + PopupWindow实现滑动删除

    原文:ListView滑动删除 ,仿腾讯QQ(鸿洋_) 文章实现的功能是:在ListView的Item上从右向左滑时,出现删除按钮,点击删除按钮把Item删除. 看过文章后,感觉没有必要把dispat ...

  3. 你可能不知道的java、python、JavaScript以及jquary循环语句的区别

    一.概述 java循环语句分为四种形式,分别是 while, do/while, for, foreach: python中循环语句有两种,while,for: JavaScript中循环语句有四种, ...

  4. 理解JavaScript中的事件处理

    什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水.当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了.事件可能是用户在某些内容上的点击 ...

  5. SSIS Dataflow使用存储过程不能检索列名

    在项目中遇到一个问题,需要在Dataflow中调用一个存储过程,然后把结果生成一个csv文件. 然而在dataflow调用存储过程中遇到了问题,SP不能正确的返回列名. 在SSMT里面明明是可以查出数 ...

  6. WPF 多语言实现

    很多国际化的程序都提供了多语言的选项,这样方便不同国家的使用者更方便的使用软件.这篇博客中将介绍在WPF中实现多语言的方式. 方式一,使用WPF动态资源的方式实现.先简单介绍下StaticResour ...

  7. hdu 1404 找sg ***

    HDU 1404  Digital Deletions 一串由0~9组成的数字,可以进行两个操作:1.把其中一个数变为比它小的数:2.把其中一个数字0及其右边的所以数字删除. 两人轮流进行操作,最后把 ...

  8. 在ASP.NET Core 1.0中如何发送邮件

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:目前.NET Core 1.0中并没有提供SMTP相关的类库,那么要如何从ASP.NE ...

  9. [Liferay6.2]Liferay Dynamic Query API示例

    介绍 Liferay提供了几种方法定义复杂的查询用来检索数据库中的数据. 通常情况下,在每个service Entity中,通过定义一些'finder'方法,可以便捷地满足基本的数据查询操作. 但是, ...

  10. 【T_SQL】基础 续+

    十.模糊查询 1.LIKE --查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容. SELECT StuName AS 姓名 FROM Stuinfo WHERE stuname ...