再探CSS 中 class 命名规范
一直以来我的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 命名规范的更多相关文章
- html中css、div命名规范
html中css.div命名规范 1.类class的命名规范示例 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column ...
- iOS开发(OC)中的命名规范
开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...
- Java中的命名规范到底是怎样的
内容摘要:命名规范二,java中的方法名,对象名和字段名的第一个单词的首写字母应该小写,而后面的每个单词的首字母都应该小写 要想将java基础学的十分的牢固就必须将java中的命名规范掌握好了.俗话说 ...
- 问答:怎样规划CSS 中 的命名方式 怎样看待 CSS 中 BEM 的命名方式?
好多盆友 非常纠结 css命名规则 怎么弄,还没起步就被绊住了.那么今天蝈蝈就针对这个问题来讨论一下 没什么技术 含量.但却对效率开发至关重要的 "问题". 下文是一些知乎大神的个 ...
- css的一些命名规范
网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...
- js中的命名规范
在实际开发中规范的命名,不仅方便自己查看,理解变量的实际意义,而且在团队开发中也能提高开发效率. 下面将介绍javascript中的变量的命名规范: 1)首先,变量名要有实际意义,不建议使用单个的字母 ...
- CSS+DIV标签命名规范 搜索引擎最喜欢
搜索引擎优化(seo)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面是目前流行的CSS+DIV的命名规则: 登录条:loginBar 标志:logo 侧栏:si ...
- css样式文件命名规范
样式文件命名规范 主要 master.css, style.css, main.css 布局 layout.css 专栏 columns.css 文字 font.css 打印 print.css 主题 ...
- 浅谈Java中的命名规范
现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...
随机推荐
- web项目没有run on server时..
文章转载至:http://blog.csdn.net/hongchangfirst/article/details/7722703 web项目没有run on server 1.首先确保正确安装Tom ...
- 简单的mysql封装类
class mysql{ private $host; private $user; private $pwd; private $dbname; private $charset; private ...
- android HTTPclient
Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类. 下面分别讲一下怎么用HttpClient实现get,post请求. 1.Get 请求 1 2 3 4 ...
- 【JAVA 其它流对象】
一.PrintStream类. 该流是字节流. public class PrintStream extends FilterOutputStream implements Appendable, C ...
- sdut 2445 小学数学
小学数学 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...
- 安装oracle 10g RAC执行的几个脚本说明
1,/u01/app/oracle/oraInventory/orainstRoot.sh 脚本 #!/bin/sh if [ -d "/etc" ]; then /etc; fi ...
- PHPCMS V9 点击量排行调用方法
首先调用的标签代码如下: {pc:content action=”sitehits” siteid=”4″ num=”10″ order=”views DESC” cache=”3600″} {loo ...
- WPF QuickStart系列之数据绑定(Data Binding)
这篇博客将展示WPF DataBinding的内容. 首先看一下WPF Data Binding的概览, Binding Source可以是任意的CLR对象,或者XML文件等,Binding Targ ...
- java调用shell获取返回值
转自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839 1.shell文件return.sh echo 1 echo ...
- 在网页中显示html代码
string str = "<div>aaa</div>"; this.Literal1.Text = string.Format("<pr ...