CSS样式命名之“逻辑块命名法”

本文介绍了一种适用于团队协作的CSS样式命名方法——逻辑块命名法,该方法旨在提高代码可读性和维护性,减少命名冲突,适用于大型站点建设。
    内容提要:CSS样式命名之“逻辑块命名法”,当我们依照结构与内容分离的思想去切出一个符合标准的网页时,每个人可能都有自己的样式命名习惯。

  当我们依照结构与内容分离的思想去切出一个符合标准的网页时,每个人可能都有自己的样式命名习惯。

  但这种不同的习惯一方面未必系统,即往往随意性比较强,容易重名造成麻烦,管理也很不方便,甚至有时候会为起个名字而发愁(呵呵,夸大了点^0^);另一方面,用在一个团队中,也会由于混乱性,而带来团队效率的降低。

  再者,目前的样式命名基本上都用“英文”,极少有人用中文(来回切换输入法也很麻烦的)。如果有些人习惯于全套英文式命名的话,会对团队里英文不佳者造成一定的麻烦。因为他们要为起名去查字典,而且他们查到的单词还不一定可以准确形容被命名的块逻辑结构。比如曾经有人建议使用面包屑(crumb)来作为导航命名——故事来自两个迷路的孩子沿着撒下的面包屑找回家的英文小说典故。但是,这作为个性还行,用在团队中却绝不可取。认知不同,别人说不定也有自己的典故。

  此外,还有几个忌讳之处:比如,不要出现表示方向的命名,例如“left、right、top、bottom”等等。因为一旦如果我们需要左边放右边,那么这些命名将完全失去作用,反而成为了混淆我们认知的垃圾。

  下面我提出一种命名系统设想(逻辑块命名法)供大家参考:

01.<div id="a1"> <!--第1层--> 02.   <div id="a1a"> <!--第2层--> 03.     <div id="a1a1"> <!--第3层--> 04.      <div id="a1a1a"> <!--第4层--> 05.       <ul id="a1a1a1"> <!--第5层--> 06.        <li class="li01"><a>邮箱列表1</a></li> <!--类似li的重复性标签使用“类”--> 07.        <li class="li02">邮箱列表1</li> <!--类名视需要添加,如导航的话就加全以便增强控制。--> 08.       </ul> 09.      </div> 10.     </div> 11.     <div id="a1a2"> <!--第3层--> 12.      <div id="a1a2a"> <!--第4层--> 13.       <ul id="a1a2a1"> <!--第5层--> 14.        <li><a>邮箱列表1</a></li> 15.        <li><a>邮箱列表1</a></li> 16.       </ul> 17.      </div> 18.     </div>  19.    </div> 20.  </div>  注:

(1)类样式的控制:“#相邻外层id名 .(标签名)(序列数字) {}”。比如“#a1a1a1 .li01 {}”。

(2)超链接的控制:“#相邻外层id名 [类名] a {}”,类名可选。比如“#a1a1a1 .li01 a {}”。

  解释:

  1、最外层嵌套:a(x)。

  说明:意思是区域x。括号内是数字,从“1”开始。

  2、第二层嵌套:a(x)(a)。

  说明:第二个括号内是单个字母,从“a”开始。

  3、第三层嵌套:a(x)(a)(x)。

  4、第四层嵌套:a(x)(a)(x)(a)。

  说明:四层DIV逻辑块嵌套已足够复杂,可应付绝大部分网站(包括门户型)的需要了。当然,如必要,可继续增加“(x)”和“(a)”。

  5、“页头、页脚、导航”:导航算在页头里,页头使用“head(x)”。页脚使用“foot(x)”。

  6、首页样式单独列出,不使用外置的样式表,直接加到首页“head”区。因为首页访问量通常比较大,为避免样式加载失败出现裸页,及首页的样式往往与其他页不同,故单独处理。命名规则是“a(x)”(区域x)开头。

  另外,全站页面相似的博客类网站可以看做没有首页,即把首页作为频道页之一。

  7、其他页的样式调用外部样式文件。

  样式表公用部分:页头、页脚及通用定义单独提出来作为base.css加载。base.css的加载顺序为所有样式的第一位。

  其他页再各自链接各自的样式表,比如“c(x).css”(频道页,样式命名规则:c(x)开头),“cc(x).css”(频道内容页,样式命名规则:cc(x)开头),像新浪之类大网站的频道,因为各自不同,就需要使用“c(x).css”。

  注:样式表的文件名中的“x”只指频道x,样式命名中的“x”则只指“区域x”。

  8、关于样式重复利用的规则。

  首页因单独处理故排除,只考虑频道页“c(x).css”、频道更多页“m(x).css”、内容页“cc(x).css”等有大量逻辑块重复时的情况(少量重复的情况也不考虑),此时全部样式总字节数很小,可以考虑合并为一个样式表文件。

  选择其中一个频道作为基本页,建议使用第一个频道。样式表的文件名是“c.css”,样式命名规则是“c(x)”。注:这里的“x”不是指“频道x”,而是指“频道页区域x”。

  (1)频道页局部样式发生改变:在对应的样式命名上加后缀“_c(x)”,x指“频道x”。

  (2)更多页局部样式发生改变:在对应的样式命名上加后缀“_m(x)”,x指“频道x更多”。

  (3)内容页局部样式发生改变:在对应的样式命名上加后缀“_cc(x)”,x指“频道x内容”。

  注:页头、页脚规则同样。另,改样式命名的时候需要把其内层逻辑块样式命名同时改变——加同样后缀。而且如果局部样式更改后,比公用的多出几个逻辑块,则也需要在命名后加同样的识别后缀。

  9、表单样式。命名规则:id名=name值。可以单独处理成“form.css”,但为减少不必要的http连接数,及其数量通常很少,故建议放到base.css里。多个表单时加后缀“_form(x)”。

  10、加足“id”与“class”,不能出现逻辑块遗漏及跳跃,并要求每一个有可能在未来需要它在必要的时候发生一些变化的页面标签都可以被样式直接控制到,比如某个li标签下的的第三个span标签。

  11、如果觉得外部样式表文件名使用数字不爽,或者经常改变栏目数量,则可以修改“c(x).css”规则为“c_news.css”之类的。不过页面样式命名具体规则不变,仍使用“c(x)”(频道页区域x),只在加后缀时顺应新规则“_c_(channel)”。

  12、假如网站完成后需求变动,比如增加或删除新闻栏目:删除时样式命名不变;增加的时候,照逻辑块嵌套顺序写样式名,再在后边加上修改时间后缀“_070908”,以规避重名。

  13、其实这种命名法还可在某些情况下简化后台程序的设计,但请小心使用,否则可能会造成后患。另一大好处:也将会使得所有的页面代码被统一化,无论啥站,都一个样,根本不用重新适应。^0^

  这个命名法定名“逻辑块命名法”,适合建站量较大或懒得想英文者。其基础建立在按逻辑块切图的思想上,逻辑块切图流程见拙作“写一个稍有语义的易换肤的标准化网页”一文。


  顺带多说两句其它:如果不考虑页面在不同分辨率下的居中,代码将会简化并高效许多。比如左右两个逻辑块,如果考虑居中,我们需要在其外层加个大逻辑块把左右两个逻辑块圈起来。若不考虑居中,则直接一个清除右浮动就搞定了,还优化了显示速度。

  注意,我们不能把body的宽度设置为800px并居中来简化逻辑嵌套层次。因为调整浏览器窗口大小时,最外层被相对定位的内容块将会不随之相对改变位置,必须得重新刷新才行。

『  网页设计 |  DIV+CSS 』
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值