无为清净楼资源网 Design By www.qnjia.com
理论基础是必要的,实践是提升和理解理论的方法,两者同样重要,任何设计和开发人员离开这两者的平衡,不论偏向哪一方,都会范或左或右的错误。不过我所讲的这个方法在实际应用中到底有什么用呢。显然,它不能够给我们创造出圆角矩形,也不能够给我们创造出分列布局,更加不可能给我们一个固定在文档头部的导航栏。这个算法的实践应用在于: 良好的CSS编程规范 。这是一个宏观的实践,与我刚才提到的微观实践同样重要,但却更加难以掌握。
本文并不想包含所有的良好的CSS编程规范,也不可能,我所能够提供的也只是我个人编写CSS的规范小结,我想这些规范是尽可能靠近CSS的运作本质的。
不要使用inline CSS
user style不在你的掌控之内
不要使用important规则
按照特殊性从低到高编写CSS
前三条不是我说的重点,我将一笔带过。
inline CSS的特殊性是最高的,如果你CSS文件中的属性与inline CSS冲突,那么你CSS文件中的属性无效,这和我们仅在CSS文件中对样式进行debug的习惯不符。inline CSS也是丑陋的,它将样式插入HTML文档,所以应当放弃使用inline CSS。
如果用户将user style设置为important,那么不论怎么写CSS规则,总是不能覆盖用户的important语句,所以试图覆盖所有的user style是徒劳的。高兴的是我们不需要考虑这些了。
important规则是个异类,它不符合我们惯有的思维方式,不论我们如何增加CSS规则的特殊性和先后顺序,important规则都将覆盖与它竞争的规则,这也会打乱CSS规则的习惯规律,给debug带来麻烦。如果你要 使用important规则来hack浏览器 ,那么你应当在一个指向唯一元素的selector中应用该规则。(PS. hack应当是解决方法中最后考虑的一项,因为它长得太丑陋了。)
最后一点,如何做到按照特殊性从低到高编写CSS?
关键在于 模块化CSS 。
添加全局CSS
添加当前页面统一CSS
将页面分成几个模块
在每个不同模块上使用id挂钩,相同模块上使用class挂钩
添加每个模块的统一CSS
将每个模块分成几个子模块,并且回到第4步开始循环直至样式添加完成。
编写良好的CSS是一个设计问题,而不是一个实现问题。我们首先应当将编写特殊性非常低的全局CSS内容,也就是我们 常用的reset.css 。它是我们整个网站中所有页面的默认样式。
如果有哪个页面具有独特的统一样式,如某一页的背景与其他页面不同,那么我们可以给某一页面添加ID,然后在ID下编写当前页面的统一CSS。
body#special{
background-color:black;
}
统一样式编写好后,我们将页面分成几个模块,如果这些模块具有基本相同的样式,那么使用class挂钩,如果样式并非相同,那么使用id挂钩,以后每次分模块时都应当遵循这一原则,因为class的特殊性不高,所以如果不是看起来显然类似的模块,就不应当使用class。id的名字通常可以模块的用途作为名字。如 head 、 bottom 等。id selector在层叠中起了关键作用,因为id具有排他性,还具有较高的特殊性,能够防止CSS规则被不经意的覆盖。
在某个模块中我们可能有一些统一CSS,那么我们就需要在使用id selector来编写当前模块下的统一样式。
#head p{
color:red;
}
添加class挂钩时,我建议使用父模块(或者页面本身)的id在作为class名的第一部分。如果我添加一个独立的页面(body#special),那么为该页面分好模块后,我应当将该页的模块命名为 special_head 、 special_bottom 等。
或者在某些页面模块中使用class挂钩时应当使用 head_col 等。这样做的好处是我们不用使用
#head .col{
/* 头部中每一列的样式 */
}
而可以直接使用
.head_col{
/* 头部中每一列的样式 */
}
从而不用担心命名冲突。
而对于模块下直接添加了id selector的元素,我们可以直接使用该selector,并且也在其名字前添加父模块的id。
#head_navigator{
/* 头部中导航栏的样式 */
}
要做到模块化CSS我们应当尽量防止跨模块的CSS出现,我想一条好的原则是:如果某一样式的跨模块特性不是你一目了然的,那么就不要使用跨模块的CSS。一个例外是全局CSS或者模块内的统一CSS。而对于那些并非一目了然的,并非具有统一样式的,建议在每个子模块下分别定义。这就像是编写Java程序中的面向对象的设计一样,我们要降低模块之间的互相依赖,使得相同模块的CSS规则在一起,略有不同的就完全分开,这样不但易于维护,还能够保证特殊性从低到高地编写CSS,从而防止CSS规则被意外的覆盖
本文并不想包含所有的良好的CSS编程规范,也不可能,我所能够提供的也只是我个人编写CSS的规范小结,我想这些规范是尽可能靠近CSS的运作本质的。
不要使用inline CSS
user style不在你的掌控之内
不要使用important规则
按照特殊性从低到高编写CSS
前三条不是我说的重点,我将一笔带过。
inline CSS的特殊性是最高的,如果你CSS文件中的属性与inline CSS冲突,那么你CSS文件中的属性无效,这和我们仅在CSS文件中对样式进行debug的习惯不符。inline CSS也是丑陋的,它将样式插入HTML文档,所以应当放弃使用inline CSS。
如果用户将user style设置为important,那么不论怎么写CSS规则,总是不能覆盖用户的important语句,所以试图覆盖所有的user style是徒劳的。高兴的是我们不需要考虑这些了。
important规则是个异类,它不符合我们惯有的思维方式,不论我们如何增加CSS规则的特殊性和先后顺序,important规则都将覆盖与它竞争的规则,这也会打乱CSS规则的习惯规律,给debug带来麻烦。如果你要 使用important规则来hack浏览器 ,那么你应当在一个指向唯一元素的selector中应用该规则。(PS. hack应当是解决方法中最后考虑的一项,因为它长得太丑陋了。)
最后一点,如何做到按照特殊性从低到高编写CSS?
关键在于 模块化CSS 。
添加全局CSS
添加当前页面统一CSS
将页面分成几个模块
在每个不同模块上使用id挂钩,相同模块上使用class挂钩
添加每个模块的统一CSS
将每个模块分成几个子模块,并且回到第4步开始循环直至样式添加完成。
编写良好的CSS是一个设计问题,而不是一个实现问题。我们首先应当将编写特殊性非常低的全局CSS内容,也就是我们 常用的reset.css 。它是我们整个网站中所有页面的默认样式。
如果有哪个页面具有独特的统一样式,如某一页的背景与其他页面不同,那么我们可以给某一页面添加ID,然后在ID下编写当前页面的统一CSS。
body#special{
background-color:black;
}
统一样式编写好后,我们将页面分成几个模块,如果这些模块具有基本相同的样式,那么使用class挂钩,如果样式并非相同,那么使用id挂钩,以后每次分模块时都应当遵循这一原则,因为class的特殊性不高,所以如果不是看起来显然类似的模块,就不应当使用class。id的名字通常可以模块的用途作为名字。如 head 、 bottom 等。id selector在层叠中起了关键作用,因为id具有排他性,还具有较高的特殊性,能够防止CSS规则被不经意的覆盖。
在某个模块中我们可能有一些统一CSS,那么我们就需要在使用id selector来编写当前模块下的统一样式。
#head p{
color:red;
}
添加class挂钩时,我建议使用父模块(或者页面本身)的id在作为class名的第一部分。如果我添加一个独立的页面(body#special),那么为该页面分好模块后,我应当将该页的模块命名为 special_head 、 special_bottom 等。
或者在某些页面模块中使用class挂钩时应当使用 head_col 等。这样做的好处是我们不用使用
#head .col{
/* 头部中每一列的样式 */
}
而可以直接使用
.head_col{
/* 头部中每一列的样式 */
}
从而不用担心命名冲突。
而对于模块下直接添加了id selector的元素,我们可以直接使用该selector,并且也在其名字前添加父模块的id。
#head_navigator{
/* 头部中导航栏的样式 */
}
要做到模块化CSS我们应当尽量防止跨模块的CSS出现,我想一条好的原则是:如果某一样式的跨模块特性不是你一目了然的,那么就不要使用跨模块的CSS。一个例外是全局CSS或者模块内的统一CSS。而对于那些并非一目了然的,并非具有统一样式的,建议在每个子模块下分别定义。这就像是编写Java程序中的面向对象的设计一样,我们要降低模块之间的互相依赖,使得相同模块的CSS规则在一起,略有不同的就完全分开,这样不但易于维护,还能够保证特殊性从低到高地编写CSS,从而防止CSS规则被意外的覆盖
标签:
css,规则
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 海来阿木《西楼情歌》开盘母带[WAV+CUE][1.1G]
- TheGesualdoSix-QueenofHeartsLamentsandSongsofRegretforQueensTerrestrialandCele
- 王建杰2011-荣华富贵[喜玛拉雅][WAV+CUE]
- 孙悦2024-时光音乐会[金蜂][WAV+CUE]
- 秦宇子.2020-#YUZI【海蝶】【FLAC分轨】
- 苏有朋.1994-这般发生【华纳】【WAV+CUE】
- 小虎队.1990-红蜻蜓【飞碟】【WAV+CUE】
- 雷婷《寂寞烟火HQⅡ》头版限量[低速原抓WAV+CUE][1G]
- 赵传1996《黑暗英雄》台湾首版[WAV+CUE][1G]
- 张敬轩2005《我的梦想我的路》几何娱乐[WAV+CUE][1G]
- 群星《人到四十男儿情(SRS+WIZOR)》[原抓WAV+CUE]
- 马久越《上善若水HQCDII》[低速原抓WAV+CUE]
- 龚玥《女儿情思》6N纯银SQCD【WAV+CUE】
- 张惠妹《你在看我吗》大碟15 金牌大风[WAV+CUE][1G]
- 群星《左耳·听见爱情》星文唱片[WAV+CUE][1G]