CSS概念:命名准则 命名规范

前端之家收集整理的这篇文章主要介绍了CSS概念:命名准则 命名规范前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

[链接]
无层级,无标签 面向属性 无ID

1icon_1font //error
icon_1font //true
icon-font //true

一、命名规则说明:

1、所有的命名最好都小写
2、属性的值一定要用双引号("")括起来,且一定要有值如class="divcss5",id="divcss5"
3、每个标签都要有开始和结束,且要有正确的层次,排版有规律工整
4、空元素要有结束的tag或于开始的tag后加上"/"
5、表现与结构完全分离,代码中不涉及任何的表现元素,如style、font、bgColor、border等
6、的定义,应遵循从大到小的原则,体现文档的结构,并有利于搜索引擎的查询
7、给每一个表格和表单加上一个唯一的、结构标记id
8、给图片加上alt标签
9、尽量使用英文命名原则
10、尽量不缩写,除非一看就明白的单词
11、类名的第一个字符不能使用数字!它无法在 Mozilla 或 Firefox 中起作用

”help-guest-regist”就是”帮助-顾客-注册”,很nice,很人性化的命名。作为在单一的首页上使用,我是很难挑出什么毛病来的。
把中间的标题也用”side-item-header”这个class吗?这里”side”就是表示“边”的意思,这就意味着这个样式用在非侧边栏就是不合理的。

但是,从道家“无”的哲学思想来看,语义其实是对自身的一种束缚,越是语义强烈的命名越是没有重用性(尤其是内容语义的)。

如何命名才能让CSS发挥最大的重用性潜力呢?答案就是“面向属性的命名”。这种命名就是要让你把页面啊设计啊什么的通通塞到马桶里冲走,不要管页面什么位置,什么内容,there is noting,这儿什么都没有,既然什么都没有,也就没有了任何限制,于是CSS可以自由出入于任何地方,无限重用,而且不用担心冲突,因为“面向属性的命名”就是针对自身属性的一种命名方式,只会overwrite,不会冲突。

记住精简高效的CSS命名准则之一:对于网站非通用元素,如果样式简单(1~2个属性),对其分离并使用面向属性的命名方法

对于分离,我反复强调,“千万不要对网站通用的元素进行分离”。

什么意思? 就是这种组合情况出现次数很多。如:
{
text-align:right;
padding-bottom:8px;
}
你把它分成

.tr{text-align:right;}
.pb8{padding-bottom:8px;}

页面里到处是 tr,pb8,你怎么改。

所以,不要让相同的东西 出现次数太多。(写前多思考 可读性 变更 等)

(这里的意思就是考虑到笛卡尔积的影响,某个集合内元素要尽可能少)

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

“无层级”,“无标签”。
对于原则第一条“无ID”,其实与性能没有多大关系,只是一般ID都与JavaScript有奸情,如果再牵扯到CSS样式,如此复杂的三角关系,日后不好处理啊。

下面四种写法哪个渲染速度最快?

#test .test{}, ul.test{},#test ul{} 以及.test{}。

如果单纯的ul与.test PK,我还真拿不定谁的渲染速度更快些。但是,一旦牵扯到层级与标签,我100%确定,.test这种最直接的命名方式渲染效率是最高的。要知道,CSS渲染元素和使用JavaScript获取页面元素那是完全不一样的。(倒着来的)

例如#test .test{}这种写法,里面的CSS重用性多大,完全限死在了id为test的元素下,哪有重用性可言;又如ul.test,我勒个去,这个ul标签十有八九就是装饰用的,往这儿一放,同样CSS样式的div标签可以用吗?哭爹喊娘,眼泪汪汪也不管用啊。

正如上面讲的,层级,标签可以避免样式冲突,虽然“面向属性的命名”不存在冲突问题,但是,页面上很多样式是无法分离使用“面向属性的命名”的,此时,一不能有层级,二不能有标签,如果避免冲突呢?

首先,规范。项目组所有人的命名方法,习惯都要统一。其次,也是实际的做法,同一内容,使用同一前缀。就如上面的那张图片所示,所有class同一使用od前缀,这样,就绝不会与其他页面的CSS产生冲突了。

现在,还隐藏着一个会让人心存疑惑的遗留问题。如下:

点评网是使用的一个大写的”B”作为此样式,无论这里的”B”是有background之意,还是邪恶的*之意,其命名比“面向属性命名”更甚一筹,可以说是接近真正意义上的nothing,后面可以跟任意属性,用在任意页面,这就是“无”哲学,“无”的境界。

总结

“面向属性命名”和“无层级、无标签”属于两个不同的系列,一个针对短命名属性,一个针对长命名属性。但是,两个又互相依存。没有“面向属性命名”,“无层级、无标签”命名最后是以不堪重负,HTML膨胀致死结局。而仅仅是“面向属性命名”,前端开发人员会因维护过劳喷血而死。总之,两者缺一不可。

文件合还是分?

  • 合:合并多个文件到一个大文件还是有好处的,比如说可以减少请求数,但是我们应该只把跟当前页面有关的样式打包到一起。

其实这也不算什么新发现了,Page Speed 早就有过这条建议。不过,我还被它的效果吓到了,去掉多余样式让我节省了大约 200-300ms 的选择器匹配时间(根据Opera 调试工具的结果)。

  • 分:很多网站CSS模块都组队放在一个CSS文件中,比方说你有10个CSS模块,每个模块都有一个.module_a a{} .module_b a{} ...的CSS命名,然后你访问只有模块C的页面,结果如何?不要天真地以为这个页面不管模块a和模块b的事情。正如文中所说的,CSS从右往左渲染,你的页面是没有.module_a 也没有.module_b,到时你页面有a标签啊,a标签大大的多哈!

于是,
.module_a a{}的时候,页面上,所有的a标签扫一遍;
.module_b a{}的时候,页面上,所有的a标签扫一遍;
.module_b c{}的时候,页面上,所有的a标签扫一遍,恩,这个有效果
.module_b d{}的时候,页面上,所有的a标签扫一遍;

猜你在找的程序笔记相关文章