人们广泛认为 ,不该在HTML中使用表格进行布局。 css
为何? html
我历来没有(或者说实话不多)对此有很好的论据。 一般的答案是: 编程
将内容与布局分开是很好的
但这是一个谬论。 陈词滥调思惟 。 我想这是真的,使用表格元素进行布局与表格数据无关。 因此呢? 我老板在意吗? 个人用户在意吗?
也许是我或个人同伴开发人员,他们须要维护网页……表的维护性较差吗? 我认为使用表格比使用div和CSS 更容易 。
顺便说一句...为何使用div或span不能很好地将内容与布局和表格分开? 仅使用div得到良好的布局一般须要大量嵌套的div。 浏览器
代码的可读性
我认为这是另外一回事。 大多数人了解HTML,不多人了解CSS。 安全
SEO最好不要使用表格
为何? 有人能够证实它是吗? 仍是Google声明从SEO角度不鼓励使用表? 网络
表比较慢。
必须插入一个额外的tbody元素。 这是用于现代Web浏览器的花生。 向我展现一些基准测试,在这些基准测试中使用表会大大下降页面速度。 ide
没有桌子,布局检修会更容易,请参见css Zen Garden 。
大多数须要升级的网站也须要新内容(HTML)。 新版本的网站仅须要新的CSS文件的状况不太可能发生。 Zen Garden是一个不错的网站,可是有点理论化。 更不用说它对CSS的滥用 。 工具
我真的对使用divs + CSS而不是表的良好参数感兴趣。 布局
这是一个备受争议的问题,这一事实证实了W3C没法预期将要尝试的布局设计的多样性。 使用divs + css进行语义友好的布局是一个很棒的概念,可是实现的细节是如此有缺陷,以致于它们实际上限制了创做自由。 测试
我试图将咱们公司的一个站点从桌子切换到div,这使人头疼,以致于我彻底放弃了我投入到表中的工做时间。 试图与个人div搏斗以得到对垂直对齐的控制权,使我陷入了重大的心理问题,只要这场争论不断,我就永远不会动摇。
人们必须常常想出复杂而丑陋的变通方法来实现简单的设计目标(例如垂直对齐),这一事实强烈代表,这些规则还不够灵活。 若是规范足够,那么为何备受瞩目的站点(如SO)认为有必要使用表和其余变通办法来弯腰规则呢?
CSS / DIV-这只是设计人员的工做,不是吗。 我花了数百个小时来调试DIV / CSS问题,在互联网上搜索以使用晦涩的浏览器来得到某些标记,这使我发疯。 您作了一点更改,整个布局就大错特错了-在逻辑上,食堂在哪里。 花费几个小时以这种方式移动3像素,而后再移动2像素,使它们所有对齐。 这彷佛对我来讲显然是错误的。 仅仅由于您是一个纯粹主义者而作某事是“不正确的事情”,并不意味着您应该在任何状况下均可以使用n级,尤为是当它使您的生活轻松1000倍时。
所以,我最终决定纯粹是出于商业考虑,尽管我一直在尽可能减小使用,但若是我预计20个小时的工做才能正确放置DIV,我会坚持下去。 这是错误的,它使纯粹主义者感到不安,但在大多数状况下,它花费的时间更少且管理起来更便宜。 而后,我能够专一于让应用程序按照客户的要求运行,而不是取悦纯粹主义者。 毕竟,他们确实要支付帐单,而我向强制使用CSS / DIV的经理提出论点-我只是指出,客户也要支付他的薪水!
全部这些CSS / DIV参数出现的惟一缘由是由于CSS的缺点,并且由于浏览器彼此不兼容,若是兼容的话,世界上一半的Web设计师都将失业。 。
当您设计Windows窗体时,不要在布局控件后尝试移动控件,所以我以为对于您为何要使用Web窗体来作到这一点我感到很奇怪。 我根本没法理解这种逻辑。 正确地开始布局,这是什么问题。 我认为这是由于设计师喜欢调情创造力,而应用程序开发人员则更关心实际使应用程序正常工做,建立业务对象,实施业务规则,肯定客户数据之间的相互关系,确保事物知足客户的需求。需求-就像现实世界中的东西同样。
不要误会个人意思,两个参数都是有效的,可是请不要批评开发人员选择一种更简单,更合乎逻辑的方法来设计表单。 与在div上使用表的正确语义相比,咱们一般要担忧的事情更重要。
案例分析-基于此讨论,我将一些现有的tds和trs转换为div。 45分钟的时间弄得一团糟,试图让全部东西彼此排成一排,我放弃了。 TD在10秒后返回-在全部浏览器上都可正常运行-无需执行任何操做。 请尝试让我理解-您但愿我以其余任何方式这样作有什么可能的理由!
由于维护一个使用表的站点很麻烦,而且须要花费不少时间进行编码。 若是您惧怕浮动div,请参加其中的课程。 它们并不难理解,它们的工做效率提升了约100倍,而痛苦也减小了百万倍(除非您不理解它们-嘿,欢迎来到计算机世界)。
考虑使用表格进行布局的任何人最好不要指望我维护它。 这是呈现网站的最粗暴的方式。 谢天谢地,咱们如今有一个更好的选择。 我永远不会回去。
使人恐惧的是,有些人可能没有意识到使用现代工具建立网站所节省的时间和精力。
布局应该很容易。 事实上,有文章介绍了如何在CSS中使用页眉和页脚实现动态三列布局,这代表它是一个较差的布局系统。 固然,您可使用它,可是实际上有数百篇有关如何执行此操做的文章。 对于表格的相似布局,几乎没有此类文章,由于它显然是显而易见的。 不管您对表说什么并支持CSS,这一事实都没法解决全部问题:CSS中基本的三列布局一般被称为“圣杯”。
若是那不能使您说出“ WTF”,那么您如今真的须要放下酷玩乐队。
我喜欢CSS。 它提供了惊人的样式选项和一些很酷的定位工具,但做为布局引擎,它是不足的。 须要某种类型的动态网格定位系统。 一种无需多选框就能够在多轴上对齐框的简单方法。 若是您将其命名为<table>或<gridlayout>或其余名称,我不会说该死的,但这是CSS所缺乏的基本布局功能。
更大的问题是,因为不认可缺乏某些功能,CSS狂热分子一直在阻止CSS。 若是CSS像世界上其余布局引擎同样提供了不错的多轴网格定位,我将很是乐意中止使用表。 (您确实意识到,除了W3C以外,每一个人都已经用许多语言解决了许多问题,对吗?没有其余人否定此功能颇有用。)
叹。 足够的排气。 继续前进,将头伸回到沙滩上。
我很惊讶地发现某些问题还没有解决,所以,除了早些时候提出的全部很是有效的观点以外,这是个人2美分:
.1。 CSS和SEO:
a)CSS过去经过容许将内容放置在页面中的任何位置,对SEO产生很是重要的影响。 几年前,搜索引擎很是重视“页面上”因素。 页面顶部的内容比页面底部的内容与页面更相关。 蜘蛛的“页面顶部”表示“代码的开头”。 使用CSS,您能够在代码的开头组织关键字丰富的内容,而且仍然能够将其放置在页面中的任何位置。 这仍然有些相关,可是页面因素对于页面排名愈来愈不重要。
b)当布局移到CSS上时,HTML页面变浅,所以对于搜索引擎蜘蛛来讲加载速度更快。 (蜘蛛程序没必要费心下载外部CSS文件)。 快速加载页面是包括Google在内的多个搜索引擎的重要排名考虑因素
c)SEO工做一般须要测试和更改,这对于基于CSS的布局要方便得多
.2。 生成的内容:
与等效的CSS布局相比,以编程方式生成表要容易得多。
foreach ($comment as $key=>$value) { echo "<tr><td>$key</td><td>$value</td></tr>"; }
生成表既简单又安全。 它是独立的,能够很好地集成到任何模板中。 要在CSS上执行相同的操做要困可贵多,并且可能根本没有任何好处:难以在飞行中编辑CSS样式表,而且内联添加样式与使用表没有区别(内容未与布局分开)。
此外,当生成表时,内容(在变量中)已经与布局(在代码中)分开,使其易于修改。
这就是为何某些设计良好的网站(例如SO)仍然使用表格布局的缘由之一。
固然,若是须要经过JavaScript对结果进行处理,则divs是值得的。
.3。 快速转换测试
在肯定对特定受众有用的内容时,可以以各类方式更改布局以找出得到最佳效果的方法颇有用。 基于CSS的布局使事情变得更加容易
.4。 针对不一样问题的不一样解决方案
一般不要使用布局表,由于“全部人都知道divs和CSS”是解决之道。
可是,事实仍然是,与大多数CSS布局相比,表的建立速度更快,更易于理解而且更强大。 (是的,CSS可能一样强大,可是在不一样的浏览器和屏幕分辨率下经过网络快速浏览一般并不常见)
餐桌上有不少缺点,包括维护,缺少灵活性……但不要让婴儿洗澡时再扔水。 快速可靠的解决方案有不少专业用途。
前段时间,我不得不使用表重写干净简单的CSS布局,由于很大一部分用户将使用较旧版本的IE,但对CSS的支持确实不好
我一我的讨厌膝盖的反应,“哦,不!要摆放桌子!”
至于“它不是为了这个目的,所以您不该该这样使用”人群,这不是伪善吗? 您如何看待要使大多数浏览器都能正常工做所需的全部CSS技巧? 他们是为了这个目的吗?