实现如下所示工具栏:

做到标签语义化,首先要尽量减少使用<div>和<span>这两个标签。

分析:这是一个包含5个无序操作项的工具栏,因此应该使用符合语义的<ul>标签。如下:

 <ul id ="reader_main_action" class="reader-main-action">
<li class="reader-action-library"></li>
<li class="reader-action-spliter"></li>
<li class="reader-action-toc"></li>
<li class="reader-action-spliter"></li>
<li class="reader-action-note"></li>
<li class="reader-action-bookmark"></li>
<li class="reader-action-hightlight"></li>
</ul>

但总共就5个操作项,而此方案使用了7个li标签,单纯从语义上看,两个分隔符和其他5个操作项具有同等重要的地位,故去掉两个多余的<li>,使用CSS实现分隔符的效果,改进如下:

 <ul id ="reader_main_action" class="reader-main-action">
<li class="reader-action-library"></li>
<li class="reader-action-toc spliter"></li>
<li class="reader-action-note splite"></li>
<li class="reader-action-bookmark"></li>
<li class="reader-action-hightlight"></li>
</ul>

以上是使用CSS样式实现了分隔符的样式,以下是使用:before伪类实现的一种方式,当然如果考虑支持IE7以下浏览器,也可以使用设置背景图的方式。

 .reader-main-action.spliter{
margin-left:30px;
}
.reader-main-action.spliter:before{
content:'|';
line-height:28px;
font-size:20px;
color:#888;
cursor:default;
text-indent:;
float:left;
margin:0-20px; }

以上方法是将无关内容彻底从HTML中分离出来,删除干扰语义的标签。但是,假设搜索引擎解析到这段HTML代码,从语义上只能分析出这5个操作项的工具栏,具体每个操作项的作用则不得而知,可以添加文字进一步说明,修改如下:

1 <ul id ="reader_main_action" class="reader-main-action">
2 <li class="reader-action-library">Library</li>
3 <li class="reader-action-toc spliter">toc</li>
4 <li class="reader-action-note splite">Note</li>
5 <li class="reader-action-bookmark">Bookmark</li>
6 <li class="reader-action-hightlight">Hightlight</li>
7 </ul>

由于操作项在界面中显示的是图标按钮,因此需要把文字隐藏起来,如下,CSS,即可实现文字的隐藏。

 .reader-main-action li{
text-indent:-9999px;
}

验证HTML代码语义性,需要隐藏CSS代码,禁用CSS代码样式后,此方案显示效果如图:

注意:

  1.在合适的地方使用适合的标签

    <h>:标题,在网页中展示各层级的标题时使用;

    <ul>/<ol>:列表,在展现各种数据列表或者菜单时使用

    <p>,定义段落

    <em>告诉浏览器把其中的文本表示为强调的内容。对于所有浏览器来说,这意味着要把这段文字用斜体来显示。

    <strong>用加粗的字体(相对于斜体)来显示其中的内容

    <table>表格

    <br>标签仅仅用于文本内容中的换行

    <blockquote>定义块引用

    <header>定义文档的页眉(介绍信息)

    <footer>定义 section 或 document 的页脚

    <article>定义一些来自外部的内容

    <section>定义文档中的节

    <nav>定义导航链接的部分

    <aside>当前页面或文章的附属信息部分,它可以包含与当前页面或主要内容相关的引用、侧边栏、广告、导航条,以及其它类似的有别与主要内容的部分

  2.熟悉各标签上规范的属性,给HTML标签设置必要的属性

    <img>,alt是必须要设置的属性,因为<img>是自闭合标签,并没有包含可以解释说明图片的额外信息。

    <!—alt属性除了对图片做解释说明之外,也作为图片在浏览器中未加载时显示的代替文字-->

    <img src="/img/loading.gif" alt="data loading…" />

    <!—title属性是对元素的解释说明,并且作为在浏览器中当鼠标移到元素上时显示的提示文本-->

    <a href="" title=""></a>

  3.样式和结构分离

    CSS中的两个伪类:before和:after,适合以上分隔符的使用。

    例:清除元素的浮动

 <div id="main">
<div class="sidebar">this is the side bar.</div>
<div class="content">this is the main content.</div>
<div class="clear"></div>
</div>

    对应的CSS样式为:

 .sidebar { float: left; width:150px; }
.container { float:right; width:450px;}
.clear { clear:both; }

    但是这种写法破坏了HTML代码的语义,并不是一种好的方案,应该删除这个多余的<div>元素,并改用CSS样式来实现,代码如下:

 <div id="main clearfix">
<div class="sidebar">this is the side bar.</div>
<div class="content">this is the main content.</div>
</div>

    对应的CSS类clearfix的声明为:

 .clearfix {
*zoom:;
}
.clearfix:before,----before伪类
.clearfix:after {---after伪类
display: table;
content: "";
}
.clearfix:after {
clear: both;
}

    另外,在构建页面的时候,经常会要添加图片,原则是,如果图片是作为页面内容的一部分,则应该使用<img>元素,如果图片仅仅是起装饰作用,则应该使用背景图方式。

  4.给空标签中添加隐藏文字,用于说明标签的实际功能

    把原来该用文字表达的效果替换为图片,建议给空标签添加一定的说明文字,并让文字隐藏起来,这样既提高了代码的语义,又满足了设计上的需求。一般可通过设置text-indent来达到隐藏文字的目的。

  

WEB学习笔记10-高可读性的HTML之HTML 语义化的更多相关文章

  1. [原创]java WEB学习笔记10:GenericServlet

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)

    绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限 ...

  4. golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息

    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...

  5. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  6. JavaScript:学习笔记(10)——XMLHttpRequest对象

    JavaScript:学习笔记(10)——XMLHttpRequest对象 XHR对象 使用XMLHttpRequest (XHR)对象可以与服务器交互.您可以从URL获取数据,而无需让整个的页面刷新 ...

  7. JAVA Web学习笔记

    JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...

  8. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  10. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

随机推荐

  1. 在java程序代码中打开文件

    class     TEST {      public  static  void  main(String[]  args){        System.out.println("He ...

  2. C# List<string> to string

    List<string> names = new List<string>() { "John", "Anna", "Moni ...

  3. 中文乱码 URLEncode之后,后台获取仍是乱码问题详解

    java中获取到参数的时候,这时候默认使用的是iso8859-1进行解码的,那么就再使用URLEncode的encoe方法对其进行编码一次,编码格式使用iso8859-1,这样我们就获得最初使用utf ...

  4. php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)

    上节讲到配置wkhtmltopdf,这节讲下如何批量操作 首先讲下wkhtmltopdf如何使用 直接命令行输入: wkhtmltopdf http://www.baidu.com/  baidu.p ...

  5. 出发a链接里面的div,a链接不进行跳转

    HTML <a href="http://www.baidu.com" style="display: inline-block; width: 100%; hei ...

  6. git命令简介

    git作为版本控制器,多分支功能能够很好的协同开发.其中分支中分为主分支和辅助分支 主分支包括:master分支和develop分支,不多做解释 辅助分支包括一下三种分支,其中 需求分支(Featur ...

  7. GDAL——命令使用专题——gdallocationinfo命令

    GDAL——命令使用专题——gdallocationinfo命令  前言 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数 ...

  8. python中os模块在windows下的使用

    今天学习了一下Python的os模块,主要是针对文件夹和文件路径的一系列操作. 与Python内置函数相比这里这里的函数功能更多样化,功能也更强大.但是学习过程中我发现很多函数都是只适用于unix系统 ...

  9. git 删除与撤回

    Git 删除与撤回 标签: git 版本管理 删除文件 撤回删除操作 2017年01月13日 22:56:27786人阅读 评论(0) 收藏 举报  分类: Git(4)  版权声明:本文为博主原创文 ...

  10. java(第十五章)

    一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名=“值”; String 对象名=new String(“值”) ...