HTML语义化的案例分析| 青训营

77 阅读4分钟

HTML语义化定义

HTML语义化是指使用恰当语义的HTML标签,使页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容。HTML5引入了许多新的语义化标签,如<header><nav><article><section><aside><footer>等,这些标签能够更清晰地表达文档结构。

哔哩哔哩

截屏2023-08-29 19.02.55.png

打开后,不翻动页面,页面可以分为导航区、内容区,和侧边栏。

导航区又分为顶部导航和中间导航,顶部导航主要包括热门资源,搜索栏,和用户的一些信息,方便用户快速找到自己喜爱的资源,并且可以随时看到一些用户自己的个人信息。

中间导航包括用户喜欢的UP主最近的动态,热门,频道,还有一些资源的分类选项。

内容区则是一个轮播图和根据用户喜好为用户推荐的视频,点击侧边栏的“换一换”按钮可以为用户重新推荐一组视频。

当我们把页面向下滑动到底的时候,会为我们再推荐一页的视频,并且,中间导航以一种“缩略”的样式“吸附”到顶部,内容区仍然是为我们推荐的视频,侧边栏里则变成了“刷新内容”、“新版反馈“、”客服“、”顶部”几个按钮。

HTML结构:

<body>
    <div>
      <nav>顶部导航</nav>
      <nav>中间导航</nav>
    </div>
    <main>
        内容区
    </main>
    <aside>
        侧边栏
    </aside>
  </body>

jd购物

截屏2023-08-29 19.08.38.png

截屏2023-08-29 19.09.02.png

京东的网站大概分为,导航栏、搜索框、内容区、关键词和页脚部分,导航区部分包括注册/登陆,首页,我的订单,我的京东,企业采购,商家服务等几个重要的功能,然后是一个网站LOGO和搜索框的部分,用于可以点击LOGO回到主页,有搜索框中搜索自己喜欢的商品,接着是内容区,内容区是许许多多的商品,且显示格式统一,类似一个列表,在内容区中包括价格区间的选择,和底部的“上一页”、“下一页“这样的额导航,然后是一个关键词列表,猜用户想要搜索的信息,最后时页面的页脚部分,包含售后服务、配送方式、购物指南等。

HTML结构:

<body>
    <!-- 导航区 -->
    <nav>导航区</nav>
    <!-- 搜索功能区 -->
    <div>
      <img src="#" alt="页面LOGO" />
      <input type="text" value="页面搜索框" />
    </div>
    <!-- 内容区 -->
    <div>
      <div>价格选择</div>
      <ul>
        商品列表
      </ul>
      <div>商品列表页导航</div>
    </div>
    <!-- 关键词列表 -->
    <ul></ul>
    <!-- 页脚 -->
    <footer></footer>
  </body>

非语义化标签

非语义化标签例如:<div><span>等,它们的特点是没有特定的含义,本来这两个标签只是作为默认标签的补充,但现实是它们的使用频率却远超其它语义化标签。

语义化标签就非常的多了,只要是你看到后知道它表示的是什么内容的标签都是语义化标签,这是语义化标签与非语义化标签的最大不同之处,我们常常鼓励在页面中要多使用语义化标签,因为它可以提高页面的可读性,有利于SEO,更有利于有视觉障碍用其他设备阅读网页。

假如我把B站页面的HTML结构写成如下结构:

<body>
    <div>
        <div>顶部导航</div>
        <div>中间导航</div>
    </div>
    <div>内容区</div>
    <div>侧边栏</div>
</body>

从功能上来看,这段代码和上面的代码是一样的,都能实现同样的功能,不同的是,当你看到这段代码的时候,你只知道有几个div标签,而上面的代码不同,你大概能够想象出页面的大概样子,这就是大量使用非语义化标签的坏处,但是这也不是绝对的,我们也可以为这些div加上class类名来区分,这是能够通过写CSS样式的时候顺手解决的问题,至于说对于视觉障碍用户的考虑,这个需求的优先级不是很高,一些中小型公司是不会考虑,但是就目前的形式而言,一些互联网大厂已经在带头做此项工作,并且HTML5又新增了几个语义化标签以满足用户的需求,所以,以后HTML编写的语义化必然是大趋势。

概括来说,代码的语义化带来的好处只是提高可读性,我们要养成语义化编程的习惯,我们可以从一个标签,甚至一个属性开始,逐步实现语义化,养成习惯后就要从结构上考虑页面的语义化了,非语义化最主要的问题就是divspan标签的滥用,完全不使用 div 和 span 并不现实,毕竟这两个标签被发明出来也是有使用价值的,所以可以首先找出一些容易被滥用的区域,这样就能大大增加页面语义化的程度,首先要考虑的就是减少不必要的 div 和 span 标签,然后才是考虑用合适的语义化标签来取代,比如日常开发中和文本相关的内容比较多,那么考虑使用 h1~h6 , q , b ... 这些标签来取代 div span,即使是布局方面也可以使用一些结构性标签,如: main , section , footer ,aside , header 来取代 div。