警惕Div和Class的滥用

简介: 大概在06年的时候,我刚接触Div+Css的网站布局,那个时候大家对于标准的热情非常高涨,蓝色论坛里经常为了Table还是Div+Css而争论的热火朝天。现在,大家已经形成了共识,Table用来布局是不行的,但是网页里完全不用Table,也是不好的。

大概在06年的时候,我刚接触Div+Css的网站布局,那个时候大家对于标准的热情非常高涨,蓝色论坛里经常为了Table还是Div+Css而争论的热火朝天。现在,大家已经形成了共识,Table用来布局是不行的,但是网页里完全不用Table,也是不好的。

于是大家就开始都用Div+Css布局,这样做的目的本来是为了让网页文档更语义化、结构更加清晰、代码更加少、便于维护,这是一个非常好的目标。但是事实告诉我们,有好的目标,不一定能够做出好的事情来。紧接着,就开始出现了Div和Class的过渡使用。特别是在借用了一些Css框架,诸如960.gs,YUI Grid 这样的CSS框架的时候,我们会不自觉的多使用一些Div。

这些CSS框架为我们提供了一套解决方案,使用框架确实能为我们节省不少的时间(其实,我们如果经常写页面的话,也会积累一些常用的CSS,但是并没有汇集成框架),但同时也减少了我们自主考虑的空间,增加了我们的惰性。

以 960.gs 为例,这是一个很著名的理论,国内的一些博客上曾经做过介绍,其原则就是将960px的宽度进行不同程度分割,来达到标准化、模块化使用的目的。如下图,通过使用 960.gs 只需要一个简单的 class 就可以为我们提供不同的标准分割。

image 在其内部,我们可以按照自己的规划进行布局。

image 可以看到,这套框架非常好用,但同时,我们不可避免要使用很多的Div以及Class,按照这套框架的要求来进行结构的编写,同时,加上我们页面中个性化的内容时,过度就开始了。

为了避免这种情况,有几个原则可以遵循:

1、只使用必要地类。特别是框架提供的类,需要那种布局,就明确使用哪种类;
2、在除了 html、head、meta、param、script、title、style之外的元素上,都可以使用类,所以如果希望实现三栏的布局,不必一定要 <div class="grid_3"><img src… 完全可以直接在 img 标签上使用 class="grid_3",这样,无疑就减少了三对 div 的使用。而且,有时候这样用起来,更加符合语义文本的目标。
3、在父元素中使用类,而不是在每个子元素中都加。这个貌似是地球人都知道的规则,但其实真正在实际过程中,如果没有对于样式结构及其继承关系做规划的话,很容易的就需要在子元素中写上很多的特殊的类。这就要求我们必须具有抽丝剥茧的精神,将可以共用的元素样式都抽取到上一级元素上。

 

参考资料:
1、Fight Div-itis and Class-itis
2、960 Grid System
3、YUI2 Grid CSS

相关文章
|
6月前
|
安全 JavaScript Go
Vue中的v-html指令有什么潜在的安全风险?如何防范?
Vue中的v-html指令有什么潜在的安全风险?如何防范?
816 1
|
安全 JavaScript 前端开发
针对Node.js生态系统的隐藏属性滥用攻击
在本文中,通过对 Node.js 程序中客户端和服务器端代码之间的通信过程进行首次系统研究来填补这一空白。本文广泛地识别了流行的 Node.js 程序中的几个新漏洞。为了证明它们的安全含义,本研究设计并开发了一种新颖的可行攻击,称为隐藏属性滥用 (HPA,hidden property abusing)。进一步分析表明,HPA 攻击与现有的关于利用和攻击效果的调查结果略有不同。通过 HPA 攻击,远程 Web 攻击者可以获得危险的能力,例如窃取机密数据、绕过安全检查和发起 DoS(拒绝服务)攻击。
104 0
|
JavaScript
JS警惕空数组陷阱
JS警惕空数组陷阱
JS警惕空数组陷阱
|
前端开发 JavaScript 安全
使用<a>标签时,你可能会忽略的一个安全问题
使用&lt;a&gt;标签时,你可能会忽略的一个安全问题
122 0
使用<a>标签时,你可能会忽略的一个安全问题
|
JavaScript 前端开发
不应该被滥用的 input 属性
前两天接到了一个需求:手机号、身份证、验证码 需要校验,检验规则包括长度、内容。 想法是有一堆,但是不知道好使不好使,我们今天来整理一下咯。先来说说都有什么想法 html 的标签属性 type pattern min、max minlength、maxlength js 的事件监听 value 获取值(vue 使用 v-model) @input 监听改变 接下来就是我们大家都很期待的理想很丰满,现实很骨感环节。
168 0
不应该被滥用的 input 属性
|
JavaScript 前端开发 数据安全/隐私保护
使用 button 的 5 个理由
使用 button 的 5 个理由
使用 button 的 5 个理由
|
移动开发 前端开发 机器人
【译】停止滥用div! HTML语义化介绍
我们喜欢(使用)<div>标签。它们已经存在了几十年,这几十年来,当需要将一些内容包裹起来达到(添加)样式或者布局目的的时候,它们成为首选元素。
【译】停止滥用div! HTML语义化介绍
|
Web App开发 存储 移动开发
HTML5增强网络安全 同时带来新安全漏洞
面对新的安全问题,火狐浏览器的安全团队想到了使用新版本的网络超文本标记语言HTML5。  “HTML5的网络应用程序非常丰富,该浏览器正开始试图管理十分繁杂的应用程序,而不仅仅是网页,”Mozilla安全问题专家Sid Stamm近日在华盛顿召开的Usenix安全专题讨论会上表示。
1102 0