我正在偷看潜入HTML5.这看起来很有趣,但我很困惑.
在20世纪90年代,当Netscape是浏览器而HTML是HTML2或HTML3时,有很多标签:地址,引用,代码...它们中的大多数在今天尚未使用,甚至可能已经过时.
HTML5引入了标签来表达标签本身的"语义".这一切都很有趣和游戏,但我看到这种方法有些奇怪.从技术上讲,语义可以是非常开放的.HTML5包含文章,时间,导航栏,页脚的标签.为什么它不应该包含帖子图标,作者的位置,姓名和姓氏的标签,或者你想要分配特定语义的其他任何标签(我很自信
并且
将是非常重要的标签):?我认为XML是将语义分配给东西的策略.没有什么禁止您在XHTML div元素下放置XML块,并为其分配样式表以便正确设置样式,或者委托给适当的查看器处理该命名空间(例如,处理RSS或SVG时).
总而言之,我不明白这种扩展背后的原因是关注语义,当很明显语义是一个非常广泛的主题时,可以保证需要潜在的无限量的语义标签.因为我很确定在W3C有聪明的人,我认为我错了,但我想知道为什么.
为什么文章,时间,导航栏,页脚的标签有用?
因为它们有助于解析Google等文本处理工具.
它与语义无关(至少在'广义'意义上).相反,他们只是说:这是页面的主体(最重要的文本部分),还有充满链接的导航栏.通过这种方法,您可以轻松地提取您所需的内容.
我也讨厌W3C的规格.有许多我不喜欢的东西,这种"语义"时尚就是其中之一.(其他包括永远完成他们的规范并留下太多重要的细节供浏览器实现,因为他们选择)
最重要的是我不喜欢它,因为它使我作为Web开发人员的工作更加困难.我经常要做出是否使网页"语义正确"或"视觉/美学上令人愉悦"的选择.后者当然会赢,因为这是用户想要的,但结果验证开始失败,整个事情变得非语义(布局和其他事情的表).
我皱眉的另一个问题是,他们已经正式声明"class"属性是用于语义,但后来他们将它用于CSS中的视觉呈现选择器.
底线 - 不要混合语义和可视化表示.如果您使用某种机制来描述语义(如标记名称,属性值或其他内容),则不要将其用于功能/视觉目的,反之亦然.
如果我要设计HTML,我只需添加一个属性"semantic",它可以(比如"class"属性)添加到任何标签中.然后会有许多预定义的值,如所有那些页眉/页脚/文章/引号/等.
标签将定义功能.基本上你可以将HTML标签简化为少数,例如"div","table/tr/td","a","img","form","input"和"select".我可能错过了一些,但这是很大的.视觉样式将通过CSS完成.
这样,三个区域 - 语义,视觉表示和功能 - 将完全独立,并且不会在现实生活中的解决方案中发生冲突.
当然,我不认为W3C对实际解决方案感兴趣......