我最近发现大多数主要网站都未通过 W3C 的标记和 CSS 验证测试。因此,遵循 Web 标准到底有多重要?
22 回答
标准!
一点历史
在直接回答之前,我认为说明最新标准的背景很重要。
您知道W3C一直在尝试开发XHTML 2标准吗?如果它出现了,它就不会与以前的 HTML 版本向后兼容。事实上,W3C内部形成了一场叛乱,最终以一个简单地分道扬镳创建WHATWG的团体告终。WHATWG是HTML5背后的真正大师。
你有没有问过自己为什么要花这么多时间从WC3获得标准?WC3 的工作方式非常民主。他们讨论一切,直到每个人都接受。WHATWG做这件事时有点扭曲:提出并讨论了问题,但最终决定权在于编辑。引用Jeremy Keith的话:“当WHATWG开发 HTML5 时,W3C 继续致力于 XHTML 2。说它进展不快是不准确的。它进展非常非常缓慢。”
最终 W3C放弃了XHTML 2 ,毕竟他们决定与WHATWG合作,而不是从头开始。
意大利面条标记的回归?
虽然 HTML5 不再像 XHTML 那样严格,但这并不意味着不再有良好的编码实践。HTML5 不是马基雅维利主义者。与 XHTML 2 不同,它建立在现有规范的基础上(支持现有内容)。
最重要的是,规范背后的仲裁者是不同的浏览器供应商。你见过webkit
(Safari、Chrome)、moz
(Firefox)或o
(Opera)的专有 CSS 元素吗?这实际上是正常的,因为这意味着供应商正在努力制定即将到来的规范,有时甚至是超出规范的功能。有一段时间,微软有超标的心态,因为他们垄断了浏览器份额,并创建了自己的 CSS 元素。微软创建了诸如此类的 CSS 元素filter
,但我们发现了一些奇特的东西。对于规范有两个建议,它们是在 CSS 中使用不透明度的两种不同方式:颜色元素中的 RGBA 和不透明度元素。
标准的重要性
最后,我想说网页设计师/开发人员有很大的责任跟上技术和标准(如 HTML5)的最新情况。这并不意味着要阅读那里的每一个规范。我同意这将是漫长而无聊的。实际上,阅读有关该主题的书籍,关注浏览器供应商的开发博客,不时尝试一些有趣的东西。我不再同意 100% 遵循所有 Web 标准,因为总会有例外。我更喜欢使用有助于开发人员的良好编码实践,但同时对浏览器友好。重要的是要了解 HTML5 建立在现有标准之上,并且是为了支持现有内容而设计的。
最后一个意见:http ://dowebsitesneedtobeexperiencedexactlythesameineverybrowser.com/
这取决于您的观众人数。如果是为了你的博客,你可能会很草率。然而,我做过政府网站,在这些网站上,我们遵循网络标准并遵循可访问性指南至关重要。
但是,是的,就去做吧。你为什么不呢?
很重要。可访问性、可用性、可移植性、这是规律(在某些情况下)、可扩展性、更容易与各种应用程序框架和 CMS 集成。名单还在继续,但其他海报已经很好地涵盖了这些要点。
您的普通企业主通常会像 OP 一样说“谁在乎”。到目前为止,我最有效的回应是“谷歌机器人只不过是一个盲人最终用户。你不想让它有效地列出你的网站吗?”
如果您遵循标准,任何布局错误都将更容易调试。当您忽略这些标准时,浏览器可以呈现您的页面,无论感觉如何,并且更改一个字符可以完全改变您的页面呈现方式。调试一个浏览器很困难,但调试 IE 7、IE 6、Firefox、Opera、Safari ......而忽略标准只会让你的生活变得困难。
如果您使用 jQuery 或其他 DOM 操作库,如果您的标记无效,您可能会得到意外和不一致的结果。
所以,不要浪费你的时间。确保编写有效的 HTML 和 CSS。这真的很容易,并且会节省您的时间。
您可以遵循适用于 html、css、c、java...任何东西的简单规则。
坚持标准,除非你有充分的理由不理会它们。如果您不遵守标准文档,为什么不这样做。
有时您会遇到必须违反标准来编写解决方法,或加速您的代码或...的情况。
每当您觉得必须无视标准时,您应该写下您为什么这样做,以便您或其他遇到 html(或 CMS 代码)的开发人员知道这不是错误。
是的,有时“好理由”是截止日期或服务器崩溃。只要你有文件就OK了。
额外的专业人士:如果编写不符合标准的非标准 html(或代码)是一个例外,那么您很可能习惯于编写干净的代码。
这些大网站的问题是他们有一群程序员来保证网站继续工作。
你?你愿意为此花钱吗?
不遵循标准的问题在于,您无法保证您的网站将如何在未来的浏览器中运行。
然后还有其他问题,例如可访问性,或启用自动化工具来解析您的网站。无论是搜索引擎网络爬虫还是聚合微格式信息的网站,还是盲人的屏幕阅读器,还是需要能够阅读您网站的数十种其他工具中的任何一种,您都无法保证它们能够如果它是随机标签汤,请解析您的网站。
然后是你自己我们的工具。jQuery 或其他 javascript 库能找出你奇怪的非标准 DOM 吗?也许,也许不是。请问下周的版本?谁知道?
最后,成本是多少?编写兼容的 HTML/CSS 并不难。需要一些练习来找出一些 CSS 技巧以避免依赖已弃用或非标准的 HTML,但是一旦你弄清楚了,它就像典型的草率的非标准代码一样容易编写。当然,它甚至可以让事情变得更容易,因为它允许您在调试时有意义地使用 HTML 验证器等工具。如果您的网站在任何情况下都包含 50 个 HTML 错误,则很难将其用于任何有用的事情。其中哪一个(如果有)与您要解决的问题有关?
浏览器和其他基于 Web 的阅读器依赖于开发人员来遵循标准,并且在大多数情况下,遵守这些标准并不难。所以,尽你所能,但不要让自己没有效率地跟随他们。
W3C 验证是您在寻找可能破坏站点功能(或可能破坏某些内容)的错误时要考虑的重要因素。这是一种雷达,可以在错误开始破坏您的工作之前检测到错误。
例如,如果您的网站有问题并想在 SO 上发布有关它的问题,建议您使用 W3C 验证器并确保它不会指向您问题的根源。
但是......并非所有的 HTML 都会验证。最重要但不是唯一的情况可能是 HTML5。在 CSS 中,供应商前缀也不会生效。这是否意味着您不应该使用它们?一点也不!
验证服务可以很好地发现输入错误的属性名称、未闭合的标记、缺少分号或<br>
带有 XHTML 文档类型的标记。我不会担心仅仅因为验证器不知道<video>
标签的作用而无法验证的元素。这仍然是正确的。
作为旁注 - 遵循 Web 标准并不是一项很大的努力。当你习惯它时,你很快就会注意到不这样做是多么的努力。与您想使用的任何老式布局技术相比,使用网络标准通常会产生更少的代码(= 更少的编写时间)、更具可读性的代码和“面向未来”的代码。
简而言之——非常。出于跨平台和跨浏览器兼容性的目的,这一点很重要。
你需要跟着他们去T吗?如果你不这样做,你可能会没事的。
许多不遵循严格标准的东西都是随着时间的推移而修改的遗留应用程序。
在我看来——没有理由不遵守新项目的严格标准。
伊恩
如果一切都在您想要支持的所有浏览器中运行,那么 HTML 代码实际验证并不是那么重要。但是,对于 XHTML,这很重要:使用 XHTML 意味着您希望 XML 解析器可以读取您的代码,因此任何不是有效 XHTML 的东西都不应该被声明为这样。
但是创建符合标准的代码并不难,即任何不费心修复错误的人都表现出缺乏专业精神。有时人们可能会决定忽略这些标准,但这应该始终是一个有意识的决定——例如,Google 主页针对速度和跨浏览器支持进行了优化,并且已经过广泛的测试。如果您没有进行此类测试和持续支持的资源,您应该坚持使用这些标准。
归根结底,标准意味着为开发人员提供便利。通过成为“标准”,它充当一组不同要求的代理,因此如果您遵循标准:
- 知道您的代码将适用于不同的技术(浏览器、平台、版本)
- 知道您的代码适用于不同的人(可访问性)
- 客户基于该事实接受您的代码(项目需要符合标准)
- 其他我没想到的东西
Web 标准“为我们节省时间”的记录非常复杂:我们经常花费数小时争取验证,结果却发现浏览器不支持这些标准。对我来说,让页面进行验证通常可以节省时间。
回到手头的问题:何时使用它们。这是我的务实观点:再看看你的需求(在浏览器、平台、版本、可访问性方面)。比较瞄准所有这些的方法与瞄准标准加上标准缺乏的方法。在需求列表中添加“标准”是否可以节省您的时间,或者只是增加了完成项目的负担?
我发现 HTML 验证非常方便。
在那之后(即验证取代常识)它成为一个障碍,我相信验证是一个非常有用的开发工具但没有必要100%遵守,例如XHTML Strict规范不推荐使用target=""
选择器,从而使它没有验证,但它仍然可以完美运行,要在不使用上述代码的情况下实现相同的操作,需要 javascript 代码来实现:
jQuery(document).ready(function($) {
$('a').each(function(){
if (($(this).attr('rel')=='external') ||
($(this).attr('rel')=='nofollow'))
{
$(this).attr('target','_blank');
}
});
});
现在要实现上述内容,而不是简单的target=""
违背逻辑和良好的编程,另一方面,CSS 通常确实需要验证,但也有例外;浏览器黑客和供应商特定标签,在当前浏览器环境中是必要的邪恶,它会使你的代码无效,但它会在大多数主流浏览器中工作,所以这完全取决于你,你可以追求 100% 的合规性并跳转通过箍在您的网站上有一个漂亮的小徽章,上面写着“XHTML Valid”或“HTML5 Valid”或其他任何东西,或者您可以拥有一个整洁、功能强大且代码简洁的网站。
PS 在我被激怒并被称为虚伪之前,是的,我的个人博客网站上确实有一个,但我的代码目前无效。
进一步阅读: http: //net.tutsplus.com/articles/general/but-it-doesnt-validate/
嗯,正如你所说,大多数大型网站都不遵循标准,所以如果你想要一个大型网站,你最好不要遵循标准。:)
但是不,最好遵循标准,因为这会给您带来最大的变化,即您的网站将在大多数浏览器上运行,并且将在很长一段时间内继续在大多数未来浏览器上运行。
有一些例外,主要是因为某些浏览器(或某些版本的浏览器)没有遵循标准。因此,您有时可能需要一些技巧或技巧来让您的网站在您想要支持的所有浏览器中运行。大多数这些技巧可以在遵循标准的同时应用,但其他一些技巧可能会带来更好的性能或更容易实施或维护。
因此,虽然最好遵循一般标准,但总可能有一两个例外......
Here is my take on this question.
Firstly, I'll tackle this bit:
"I recently found out that most of the major websites fail W3C's markup and CSS validation tests. Therefore [...]"
Big companies can often suffer from paralysis, which makes it very hard to get even small changes made. In most cases, the practices of "big companies" are not a good example to follow. They are not "big companies" because they have a poorly constructed website - its the other way around. They become big, and to make a change to their website to fix a validation error becomes a longer and longer process that costs more and more money (with long lists of people who need to sign off the changes!)
Now let's move onto the next bit, without the baggage of big companies to worry about!
"[...] how important is it really to follow web standards?"
This can be answered in two contexts. I think the first paragraph probably applies to you as you are asking on Stack Overflow :)
If you are a professional web developer, you should always follow the standards unless explicitly requested not to do so (see 1)). The reasons you would do this are that being able to validate your mark-up, accessibility and browser-compatibility are part of the craft of creating professional websites.
If you are a subject-enthusiast (for example, an expert on rare insects) - it should be possible for you to publish a web page that contains terrible mark-up and browsers should all treat the errors in the same way - at the very least, everyone should be able to read the information. I mention this because the web is open to anyone to publish a web page - not just expert developers.
1) "explicitly requested not to do so" ? What on Earth does that mean. It means that it is possible to create a website that works in all browsers without following the standards. Google very deliberately use some very strange mark-up on their search page as discussed in this article:
http://www.stevefenton.co.uk/Content/Blog/Date/201008/Blog/Google-Deliberately-Write-Awful-HTML/
网站设计者在历史上没有遵循网络标准的唯一原因是(1)根本不了解标准,或者(2)让不符合标准的浏览器(*cough IE咳嗽)做一些很酷的事情。但是 Internet Explorer 最近在标准兼容性方面取得了重大进展,因此原因(2)变得越来越不相关,而您显然不受原因(1)的约束,那么为什么不编写符合标准的网站呢?正如其他人所说,它将使您的代码更容易调试,因为您只需要使用一个标准而不是一堆不同的浏览器。
我做的第一件事是在我的目标环境中进行测试。如果它正在工作并且无法验证,它可能是一个较小的点,但自然值得探索。当然,您确实希望尽可能地争取可访问性。
如果您想立即交付项目,请打破您想要的所有标准。
但是,如果您希望现在和将来交付(无需任何额外努力),请严格遵守标准。
这取决于项目的规模和您的预算。如果您需要快速完成某件事,并且没有太多功能,而您的主要目的是完成某件事并继续前进,那么标准并不重要。当您的项目非常小时,您将花费双倍的时间来遵守标准。
这一切都是为了让您的网站按照您的规范运行,并在当今最常用的浏览器中始终如一地运行。务实地说,网络标准并不优先。
W3C 标准非常有用,但它们是达到目的的手段,而不是目的本身。这些标准的最终目标是跨浏览器兼容性,这一点非常重要。W3C 的标准排在第二位,以确保您的应用程序在您的受众将使用的所有不同浏览器上正确运行。当您牢记 SEO 时,Web 标准也会获得很多价值。遵守标准将使您的网站对非人类用户更加可见,因此如果您关心搜索引擎的可见性,那么网络标准也应该如此。对于“主要网站”(因为它们已经在搜索引擎中建立良好),这可能不是一个大问题,但可能对您而言。
因此,网络标准对于跨浏览器兼容性和搜索引擎优化目的很重要。
这里有人用Hotmail吗?您是否注意到,对于每个主要的 Firefox 版本,Microsoft 都必须返回并对其 Hotmail 网站进行更改,以免它们在最新的 Firefox 版本中落后?
如果开发人员尊重标准,他们是否需要这样做?他们会节省多少时间/金钱?然后他们可以将多少时间/金钱投资于更新的技术或新功能?
您说大多数主要网站都未通过 W3C 的标记和 CSS 验证测试。看看大部分网站。它们看起来很现代吗?它们看起来像那些验证的吗?他们是第一个实施最新和最伟大的功能,还是他们坚持维护旧的和过时的技术,狂热而不知疲倦地试图维护纸牌屋,并希望变革之风不会把它吹倒?
我们做出的每一个决定都有机会成本。有时,跳过标准的机会成本可以建立有利可图的商业伙伴关系。其他时候,特别是当由于无知而没有遵循标准时,由于错误、随机行为和猜谜游戏,成本被抛在后面。有时,遵循标准可以创建一个可扩展平台,可以在未来几年添加新功能。