重构的时候有一种很简单的class命名思维,我们可能知道,可能不知道;但是知道后又很难应用上,是什么的思维呢?请看以下两段代码:
第一段:
<div class="a">
<div class="b">
<div class="c">
...
</div>
</div>
</div>对应的css写法:
.a{} .a .b{} .a .b .c{}
第二段:
<div class="a">
<div class="a_b">
<div class="a_b_c">
...
</div>
</div>
</div>对应的css写法:
.a{} .a_b{} .a_b_c{}
有什么区别呢?很明显第二种的HTML写法会冗余一点,但是CSS的写法就没那么复杂的选择结构了。在小型项目中,这两个基本上没什么区别的。但是在大型项目中就不一样了:
1、第一种写法适合局部排版
2、第二种写法适合全局公用模板
为什么呢?
第一种写法里面,由于名字复杂度低,很可能页面的其他位置存在与该结构内某个元素一样的命名(如该段代码有一个b类的div,整个页面却也有一个b的类名,在第二种写法里面极少可能出现这种情况)外层样式较易干扰内层样式(只要选择器复杂度一致即可干扰,如上结构外假如有一个.d,那么选择器”.d .b”会干扰”.a .b”),当然第一种写法明显HTML就没有那么臃肿了。
第二种写法里面,对于每个css选择器优先级都是最低的,但是类名却是可以保证极高程度的唯一性。
- 好处是:公用样式高度独立,受外部样式的干扰较难;而且由于优先级低,可以灵活更改特定元素的样式而不需考虑优先级限制的问题。非常适合用作公用模板。
- 坏处是:html会变得异常冗余,假如用于公用模板,也就是说很多地方都会用到,对于大型项目来说,公用模板增加大小的话会导致多处地方代码量变大,带宽成本变高。
那最后可以总结一点,页面编写的时候两种方法都应该用上,公用模板用第二种写法,第一种方法适用于公用性较低的地方。
以上观点由小JOE总结,不一定准确,欢迎讨论。
嗯,有道理
回复
面向对象 继承
回复
写成.a_b_c这样共用性会少了吧,当然要按要求选用。。
回复
写成a_b_c的公用性应该是比较多才对的。。。因为这种写法比较独立
回复
应该是共用性比较多.
多处可以使用一个单独的class
回复
短命名和长命名,没有最好只有最合适。
回复
+1
回复
学习了!
回复
这个不很懂,只是支持下
回复
[...] 3.思考CSS命名规则。小花正好在想跟我一样的东西,所以直接给出链接。他说这是一个简单的命名思维,其实很不简单。a_b_c的方式是鬼哥主推的方式,好处是高度独立(什么?是坏处?),稳定,耦合度低模块性强。缺点是全局性差,改版什么的时候要改的东西就太多啦。a b c这样的命名方式适合组件一致的中小型网站,我喜欢这种哦。豆瓣适合后者,soso音乐适合后者,video.qq.com适合后者,music.qq.com就适合前者。不过一个站点用什么命名方法也不是单由重构就可以决定的,最好在建站初始就和设计师、交互师一起确立好站点设计规则。 [...]
受益匪浅,很少从这些方面去想。
不过,有个地方不是特别明白,想问一下子:
1.外层样式较易干扰内层样式。(只要选择器复杂度一致即可干扰,如上结构外假如有一个.d,那么选择器”.d .b”会干扰”.a .b”)
——按照字面意思,与之相比,是不是第二种更加容易受外层样式干扰呢?假如不是的话,那么这一句的“较易”又是指的什么方面呢?
2.公用样式高度独立,受外部样式的干扰较难;而且由于优先级低,可以灵活更改特定元素的样式而不需考虑优先级限制的问题。
——什么叫做高度独立呢?是不是指的优先级低,所以其他样式大部分最多只能进行覆盖,而不能对其实质进行更改呢?(因为优先级比较低,覆盖样式并不会对其他使用这些样式的地方产生影响?)
回复
1.外层样式较易干扰内层样式,是第一种的表现(原因:第一种命名方式名字比较易跟外层发生耦合)。第二种由于命名复杂度高,很难会受到非目的性的样式干扰。
2.样式高度独立,指的是你很难会无意中写出一种样式干扰它。优先级低,也就是说你要通过外部来更改它的样式的时候,你不需要特意地提升选择器的复杂度来提升优先级
回复
我也想学代码,可是好难啊
回复
第二种好点,因为class是通用的,按第一种的写法,会有大量的重复代码,
回复
估计是没有绝对只有相对的,两种方法我认为需要结合来用
回复
网站风格很有特色啊……
回复
专业
回复
谢谢分享。期待你的更多作品!
回复
代码好难啊
回复
看来都是懂这些的,我这个代码盲就悄悄路过
回复
不明真相!我完全打酱油的!
回复
伪类。命名空间 继承
回复
我就是经常用第一种。
回复
还在学习css中呢~~~
回复