《Web前端开发最佳实践》——3.4 停止使用不标准的标签和属性,简化HTML代码...

    xiaoxiao2023-08-16  141

    本节书摘来自华章计算机《Web前端开发最佳实践》一书中的第3章,第3.4节,作者:党 建 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    3.4 停止使用不标准的标签和属性,简化HTML代码

    W3C在制定的HTML4和HTML5标准中有独立的章节来说明哪些是不被推荐的标签和属性,这些标签和属性是Web互联网发展早期HTML标准混乱和浏览器“各自为政”的产物,有些标签甚至使用率颇高,比如滚动效果标签< marquee >,尽管在现在看来其效果不好,但在当时几乎所有的网站都会使用这样的效果,风靡一时。但是随着Web互联网的飞速发展,人们对Web的认识也逐渐提高,也开始关注如何让网页HTML代码更统一、更简洁、更易理解等,不在局限于单纯的外观。在此过程中,一些标签和属性逐渐被更好的方案代替,这些标签也不被标准所推荐,甚至是从标准规范中移除,有些特性在浏览器中也不被继续支持。从这些标签和属性的作用来看,导致不被推荐的原因主要有如下几个。(1)标签没有实际的语义,仅仅是用于设置样式不推荐使用单纯设置样式的标签,如basefont、big、center、font等。应该通过CSS设置样式,让HTML标签功能更单一。不推荐的示例如下:

    <!--不推荐代码:不推荐使用单纯设置样式的标签,应该通过CSS设置样式--> <font color=blue>don't use it!</font> <big>don't use it!</big> <center>don't use it!</center>

    不推荐在HTML标签中添加样式属性,如iframe、img、input、div等标签中的align属性,body标签上的background属性,td和tr标签上的height、width、nowrap、bgcolor、valign等属性,iframe标签中的frameborder、marginheight、scrolling等属性。此类属性应该废弃,并通过添加CSS样式来实现相同的效果。不推荐的示例如下:

    <!—不推荐代码:标签中添加border、width、height等样式属性--> <img src="#" alt="demo" border="1" width="194" height="37" /> <div id="focusViwer" align=center></div>

    不推荐使用< blink >或< marquee > (闪动或滚动)。这两个标签的职能已经超出了HTML本身,并且也存在浏览器的兼容问题。以如今的审美来说,这两个标签实现的效果不佳,如果一定要这样的效果,可以通过JavaScript代码来实现,并且效果会更好,如可以使用jQuery Marquee插件。不推荐的示例如下:

    <!--不推荐代码:效果不佳,并且存在浏览器兼容问题,不推荐使用,如果需要实现这样的效果,可以通过JavaScript代码来实现,并且效果会更好--> <blink>don't use it!</blink> <marquee scrollamount=3 scrolldelay=100 >don't use it</marquee>

    (2)让HTML标签具有更好的语义不推荐使用< b >和< i >显示黑体字和斜体,推荐使用更具有语义的< strong >和< em >,如果单纯是为了样式,推荐用CSS样式定义font-weight 和 font-style,让页面更简洁。类似的不推荐标签还有< s > 和< strike >,这两个标签是给文字添加删除线的,可以用< del >和< ins >来代替。不推荐示例:

    <!--不推荐代码:无语义的标签,单纯设置样式--> <b>don't use it!</b> <i>don't use it!</i> <s>?don't use it!</s> <strike>don't use it!</strike>

    推荐示例:

    <!--推荐代码:使用具有语义的标签,如果单纯为了样式,则应该通过CSS来设置--> <strong>important</strong> <em>emphasize</em> <del>deleted</del> <ins>insert</ins>

    (3)移除不常用的HTML标签此类标签包括acronym、applet、dir等,废弃的原因是使用率极低或者是语义有歧义,并且有其他更好代替方案可以使用。例如,表达缩写的标签< acronym >,其语义模糊,开发者更常用来代替;开发者更喜欢使用< ul >而不是 < dir >。

    最新回复(0)