一直以来我的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. javascript - 浏览器对象

    Navigator对象 弹出窗口 Cookies Browser Objects 参考手册 参考手册描述了每个对象的属性和方法,并提供了在线实例. Window 对象 Navigator 对象 Scr ...

  2. windows服务 - C# U盘升级

    1.左侧工具栏里有Timer控件,但是如果调用的是系统时间,就需要添加System.timer.timer空间下的控件.   2.服务编写之后,还不能由SCM(服务控制管理器)进行管理,需要给该服务添 ...

  3. 让ASP.NET MVC不使用jsonp也可以跨域访问

    跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器 ...

  4. Delphi面向对象的方法

    方法是属于一个给定对象的过程和函数,方法反映的是对象的行为而不是数据,前一篇提到的对象的两个重要的方法:构造方法和析构方法. 为了使对象能执行各种功能,你能在对象中定制方法 创建一个方法用两个步骤,首 ...

  5. SQLAlchemy Core中的异常及事务处理样码

    这部门内容比较简单,立存. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Table, C ...

  6. python检测文件的MD5值

    python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...

  7. java.lang.UnsupportedClassVersionError: org/xwiki/xxx : Unsupported major.minor version 51.0

    此类问题主要是因为Unsupported major.minor version 51.0. 原因是JDK版本不一致导致的问题.在web应用中碰到此问题. 应用中规定使用JDK7.0,本地JDK为6. ...

  8. PHP5中使用PDO连接数据库的方法

    PDO(PHP Data Object) 是PHP 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,php_my ...

  9. 调整vbox虚拟机下的linux全屏模式及分辨率

    >>Step1 在VirtualBox菜单栏中选择[设备]->[安装增强功能] >>Step2 点击右上角的[齿轮]图标,然后选择[Log Out],重新登录即可 lin ...

  10. JDK中的设计模式

    Creational(创建模式) Abstract factory: 创建一组有关联的对象实例.这个模式在JDK中也是相当的常见,还有很多的framework例如Spring.我们很容易找到这样的实例 ...