WEB学习笔记10-高可读性的HTML之HTML 语义化
实现如下所示工具栏:

做到标签语义化,首先要尽量减少使用<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 语义化的更多相关文章
- [原创]java WEB学习笔记10:GenericServlet
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)
绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限 ...
- golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- JavaScript:学习笔记(10)——XMLHttpRequest对象
JavaScript:学习笔记(10)——XMLHttpRequest对象 XHR对象 使用XMLHttpRequest (XHR)对象可以与服务器交互.您可以从URL获取数据,而无需让整个的页面刷新 ...
- JAVA Web学习笔记
JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
随机推荐
- python--多线程多进程
一.进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程.进程是很多资源 ...
- go生成不重复的纯数字6位的随机数
最近在学go, 按照入门指南学完go的基础语法, 开始学习go的标准库; 借用生成这个小任务复习一下go的基础语法. 推荐go编辑, jb公司的goland, 超级好用. 推荐go入门指南, htt ...
- MATLAB绘图hist
刚登上号,已经学了一半了,就从现在开始写吧 以前学过的东西老忘,所以就注册个账号就当做记笔记吧 MATLAB在原来的数组中增加新行 A=[A;B]%B是要增加的行: hist使用方法 y=4*rand ...
- ORM概念
ORM概念: 指对象结构和数据库架构间的映射,对象和数据库架构有一定的映射关系,让程序员可以不必编写sql
- 【原创】KMP算法代码(C)
//s是模式字符串,t是匹配字符串(可以看我上一篇文章中的叙述) int KMP(const char * s , const char * t) { int slen = strlen(s) , t ...
- js操作BOM对象
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- node.js http接口调试时请求串行特性分析
缘起: 产品业务上有个类数据库服务的请求时间比较长(类似mysql的sql查询),为了优化减少并发时的请求数,做了一个并发时共用请求的优化. 通过单元测试后,想通过手动模拟看下效果,发现优化一直不能生 ...
- 【算法】单源最短路——Dijkstra
对于固定起点的最短路算法,我们称之为单源最短路算法.单源最短路算法很多,最常见的就是dijkstra算法. dijkstra主要用的是一种贪心的思想,就是说如果i...s...t...j是最短路,那么 ...
- Python随笔--代理ip
- 试试Markdown哈
目录 一级标题 二级标题 三级标题 二级标题? 我擦了? 这什么语法.文字下面加-号,实现二级标题? 看看是几级标题 还真的是二级标题. ...... # 看来四个空格是个,嗯,默认的东西 ??中间是 ...