网景和微软的浏览器之战早已淡去多年,最终以微软的IE浏览器胜出,特别是IE6的出现,一度成为世界浏览器的霸主,至今无人能敌。去年IE6荣获“终身成就奖”,真是实至名归。本文涉及的两个标签abbr和acronym,与这两家公司渊源颇深,让我们一起来通过它们去回顾那段风云岁月,更深入地去了解它们吧!

  从用法上来说,abbr和acronym并没有多大区别,它们作为缩写标签在HTML4.0就已经被引入。abbr缩略的范围更为广泛,可以是短语、单词首字母、甚至中文,acronym当然也都可以用,但是更精确的用法应该是用来缩写单词首字母。它们在浏览器上的表现形式主要有两点:

  1.   文本下方有类似border-style:dotted样式的虚线;
  2.   鼠标移到文本时,会有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标签的问题?有两个办法。

  1.   通过嵌套无语义的span标签,来模拟acronym。具体实现代码如下:

    <abbr title="Cascading Style Sheet">
       <span class="abbr" title="Cascading Style Sheet">CSS</span>
    </abbr>

      这时候,你再结合上面的样式,就会发现问题已经解决。但是这种方法不够好,代码不够健壮。如何不添加额外标签而让abbr实现应有的表现?

  2. 脚本实现

  追加脚本代码:

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的渊源的更多相关文章

  1. 引用、引用和术语定义<abbr><acronym><address><bdo><blockquote><q><cite><dfn>

    <abbr>-缩写 <acronym>-首字母缩写  <address>-地址 <bdo>-文字方向 <blockquote>-长的引用 & ...

  2. 【HTML基础】<acronym>和<abbr>的区别

    缩写标签<acronym> <abbr>的区别 大家都知道HTML定义缩写有<acronym> <abbr>两种标签,但是经常分不清楚他们.这两个标签虽 ...

  3. 学习笔记 第十二章 CSS3+HTML5网页排版

    第12章   CSS3+HTML5网页排版 [学习重点] 正确使用HTML5结构标签 正确使用HTML5语义元素 能够设计符合标准的网页结构 12.1  使用结构标签 在制作网页时,不仅需要使用< ...

  4. Css中的两个重要概念:块状元素和内联元素

    一.display:block display:block就是将元素显示为块级元素,一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(he ...

  5. CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  6. 【干货分享】前端面试知识点锦集01(HTML篇)——附答案

    一.HTML部分 1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层分别是:HTML.CSS.JavaScript作用:HTML实现页面结构,CSS完成页面的表现与风格 ...

  7. 我的博客CSS

    这个是按照custom标准模板来做的,博客园已经有模版了,有些细节不是很好,这个是源CSS,喜欢的可以自由DIY,完善更好. @charset "utf-8"; /* CSS Do ...

  8. CSS 清除默认样式

    通常有以下几句就够了: *{margin:0;padding:0} li{list-style:none} img{vertical-align:top;border:none} 如果你想写全也可以: ...

  9. HTML元素基础学习

    HTML元素 HTML文档是由HTML元素定义的.HTML元素是指从start tag(opening tag)到end tag(closing tag)的所有代码,即start tag + cont ...

随机推荐

  1. java中Map等对象转换为json

    ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString( ...

  2. css 常见兼容性问题及解决方案

    css 兼容问题一直是困扰前端开发人员的大难题,提到兼容性立马想到了万恶的ie6,说多了都是泪,还是整理一些常见的兼容性问题以及解决的方案吧. 一. 浮动元素双边距. ①条件:ie6下,如果给元素设置 ...

  3. linux Kernell crash dump------kdump 的安装设置+Linux系统崩溃的修复解决过程+mysql+kvm

    http://www.ibm.com/developerworks/cn/linux/l-cn-dumpanalyse/https://www.kernel.org/pub/linux/utils/k ...

  4. systemtap 技巧系列 +GDB

    http://blog.csdn.net/wangzuxi/article/category/2647871

  5. CCLabelAtlas创建自定义字体

    有时候游戏中要用到一些特殊的字体效果,特别是数字. CCLabelAtlas就可以从png图中读取文字. CCLabelAtlas* diceCount=CCLabelAtlas::labelWith ...

  6. 基于anyrtc的sdk实现直播连麦互动

    基于anyrtc的sdk实现直播连麦互动 前言 1.由于粘贴了较大的代码,造成内容比较长,可能会花费您较长的时间. 2.项目里面没有做权限判断,所以如果发现有页面发生崩溃可能是权限没有打开,请打开权限 ...

  7. PAT L1-009. N个数求和

    本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(<=100).随后一行按格 ...

  8. C#三元运算符

    ?:表达式1?表达式2:表达式3如果1为真则执行2,为假执行3

  9. html + ashx 实现Ajax省市联动

    基本思路:1.了解数据库中省和市的表结构及关联主键 2.创建html页面及select标签 3.通过ajax向ashx(一般处理程序)发送后台请求完成联动效果 表结构: 这里,开始创建一个命为demo ...

  10. iOS 中二维码扫描(zxingObjc和原生)

    对于网上的第三方 ZXingObjC,自我感觉是对原生的AVFoundation中关于二维码部分的一个封装,大致看看ZXingObjC的内部实现其事和原生的实现相似的,里面都用到了AVFoundati ...