▲历史回眸--abbr和acronym的渊源
网景和微软的浏览器之战早已淡去多年,最终以微软的IE浏览器胜出,特别是IE6的出现,一度成为世界浏览器的霸主,至今无人能敌。去年IE6荣获“终身成就奖”,真是实至名归。本文涉及的两个标签abbr和acronym,与这两家公司渊源颇深,让我们一起来通过它们去回顾那段风云岁月,更深入地去了解它们吧!
从用法上来说,abbr和acronym并没有多大区别,它们作为缩写标签在HTML4.0就已经被引入。abbr缩略的范围更为广泛,可以是短语、单词首字母、甚至中文,acronym当然也都可以用,但是更精确的用法应该是用来缩写单词首字母。它们在浏览器上的表现形式主要有两点:
- 文本下方有类似border-style:dotted样式的虚线;
- 鼠标移到文本时,会有pop弹出,pop里面的文字即标签title属性的值。
其实这两点表现形式,正好把缩略标签的作用体现出来:一个是重点提示,另外就是缩略功能。
刚开始,网景发明了abbr,人们通过鼠标移到文本上方,就能看到对文本更加详细的注释。但是在IE6及其以下版本不会出现这样的效果。为什么?因为当年网景和微软在竞争白热化的情况下,微软的IE浏览器索性直接忽略abbr标签。那微软也想通过一个标签,能够实现上述那样的效果,怎么办?
在那个浏览器市场决定生杀大权的时代,无人能够阻止微软的“霸道”,于是另一个缩写标签应运而生,它就是acronym。acronym的出现当然能够解决IE6及其以下版本不显示问题,但是从此web开发中有了两个缩写标签,它们都能够通过w3c的验证,而开发人员经常是傻傻分不清楚两者的区别了。
都说三十年河东三十年河西,当年网景败给微软,网景的许多工程师纷纷离职,他们中的许多人又纷纷加入目前为大家所熟知的IT公司,如google、apple、w3c组织、mozilla,这些工程师先后开发出firefox、chrome、safari等目前世界上主流的浏览器;另一方面,由于微软IE浏览器渐显老态龙钟,不管是漏洞或者启动速度,还是访问体验。用户的抱怨越来越多,终于有一天,用户大规模地逃离,让微软意识到需要对IE6进行升级了。所以大家会发现,从06年以后,微软对IE浏览器的升级越来越频繁。
微软的“霸道”在十多年后,终于是受到了惩罚。w3c组织在HTML5明确提出,acronym将作为废弃标签而不再被应用到web开发中了。
所以,通过这段历史的阐述,我想说明的是:所有存在的东西都是由当时的历史决定的,有些东西最终被历史淘汰,跟它自身的局限性息息相关。人们渴望大一统,正所谓合久必分,分久必合。
现在,我们可以不必理会acronym了,把心放到abbr上来。先给行简单的代码:
- <abbr title="Cascading Style Sheet">CSS</abbr>
将这行代码放在body结构里,在各浏览器下查看效果。你会发现,使用ie7以上版本的trident浏览器,webkit和gecko浏览器,当鼠标移到“CSS”文字上时,会有pop弹出,其中IE和谷歌浏览器的文本下方没有虚线,而火狐和opera则有虚线。前面说过,abbr在IE6下直接被忽略,所以什么效果都没有。
为了让虚线效果都一致,你可以添加这样一段样式:
- abbr,acronym,span.abbr{
- cursor : help;
- border-bottom : 1px dotted #;
- }
这时候,再查看,除了虚线一致外,鼠标移到文本上还有一个问号提示呢。
如何解决IE6忽略abbr标签的问题?有两个办法。
- 通过嵌套无语义的span标签,来模拟acronym。具体实现代码如下:
- <abbr title="Cascading Style Sheet">
- <span class="abbr" title="Cascading Style Sheet">CSS</span>
- </abbr>
这时候,你再结合上面的样式,就会发现问题已经解决。但是这种方法不够好,代码不够健壮。如何不添加额外标签而让abbr实现应有的表现?
- <abbr title="Cascading Style Sheet">
- 脚本实现
追加脚本代码:
- function styleAbbr() {
- var oldBodyText, newBodyText, reg
- if (isIE) {
- oldBodyText = document.body.innerHTML;
- reg = /<ABBR([^>]*)>([^<]*)<\/ABBR>/g;
- newBodyText = oldBodyText.replace(reg, '<ABBR $1><SPAN class=\"abbr\" $1>$2</SPAN></ABBR>');
- document.body.innerHTML = newBodyText;
- }
- }
- window.onload = function(){
- styleAbbr()
- };
- isIE = (document.all) ? true:false;
把这段代码添加到head头部里,同样可以解决IE6不兼容abbr标签的问题。该段脚本很简单,相信大家都看得懂。不作解释...
希望本文对你有帮助,up!
申明:后半部分的代码参考自网上。
▲历史回眸--abbr和acronym的渊源的更多相关文章
- 引用、引用和术语定义<abbr><acronym><address><bdo><blockquote><q><cite><dfn>
<abbr>-缩写 <acronym>-首字母缩写 <address>-地址 <bdo>-文字方向 <blockquote>-长的引用 & ...
- 【HTML基础】<acronym>和<abbr>的区别
缩写标签<acronym> <abbr>的区别 大家都知道HTML定义缩写有<acronym> <abbr>两种标签,但是经常分不清楚他们.这两个标签虽 ...
- 学习笔记 第十二章 CSS3+HTML5网页排版
第12章 CSS3+HTML5网页排版 [学习重点] 正确使用HTML5结构标签 正确使用HTML5语义元素 能够设计符合标准的网页结构 12.1 使用结构标签 在制作网页时,不仅需要使用< ...
- Css中的两个重要概念:块状元素和内联元素
一.display:block display:block就是将元素显示为块级元素,一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(he ...
- CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset
一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...
- 【干货分享】前端面试知识点锦集01(HTML篇)——附答案
一.HTML部分 1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层分别是:HTML.CSS.JavaScript作用:HTML实现页面结构,CSS完成页面的表现与风格 ...
- 我的博客CSS
这个是按照custom标准模板来做的,博客园已经有模版了,有些细节不是很好,这个是源CSS,喜欢的可以自由DIY,完善更好. @charset "utf-8"; /* CSS Do ...
- CSS 清除默认样式
通常有以下几句就够了: *{margin:0;padding:0} li{list-style:none} img{vertical-align:top;border:none} 如果你想写全也可以: ...
- HTML元素基础学习
HTML元素 HTML文档是由HTML元素定义的.HTML元素是指从start tag(opening tag)到end tag(closing tag)的所有代码,即start tag + cont ...
随机推荐
- 导入cocos2d-x samples android官方示例
导了一晚上samples android示例,查了一晚上资料,费了很大的劲,终于成功导入并运行成功,分享一下经验: 1.下载eclipse与ADT跟android SDK,相信大家都会装了吧. 2.下 ...
- 理解OAuth 2.0--转
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...
- web.xml配置文件 taglib
web.xml的内容如下: <?xml version="1.0" encoding="UTF-8"?><web-app version= ...
- position定位问题
position属性规定了元素的定位类型,默认为static.该属性还可以有下值:absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位.fixed:生成绝对定位的 ...
- FineUI登入的例子中遇到的一些问题
对于在使用FineUI这个例子的时候我们首先就是要在form标签内部添加一个 第一步. <ext:PageManager ID="PageManager1" runat=&q ...
- wxPython ImportError DLL load failed: %1 不是有效的 Win32 应用程序 解决办法
原因:python是32位的,装了64位的Wxpython时会报错,具体错误是安装库文件与python的动态库的位数未一致. 特别留意32位/64位指的不是 系统的位数,而是Python的位数. 64 ...
- java学习笔记--1_常见输入输出语句熟悉篇章
今天上oj,想来是准备做做算法和数据结构的.看了看以前做的基础题目,想着就先熟悉一下java的语言吧! 以下是今天做的10道题目. 备注:oj有时候对格式要求非常严格,因为不在格式上纠结太久,只要ec ...
- java main函数不执行?
今天脑袋短路,对于这个问题纠结了好久.这个问题具体是这样的: public class test { public static void main(String[] args) { test2 t ...
- (转)C#中的Dictionary字典类介绍
关键字:C# Dictionary 字典 作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionar ...
- iOS--NSNetService和NSNetServiceBrowser(Bonjour网络编程)
Cocoa 网络框架: Cocoa 网络框架有三层,最底层的是基于 BSD socket库,然后是 Cocoa 中基于 C 的 CFNetwork,最上面一层是 Cocoa 中 Bonjour.通常我 ...