先定义问题:大家都知道,CSS超链接的outline属性一直是为键盘用户增加易用性的好帮手(按Tab键focus下一条链接,是除Safari Win外的默认操作)。可以说,outline通常伴随着:focus事件出现。但如果你重新定义了:focus的样式,这个边框就显得很多余了。

对于标准的浏览器而言(IE8+,FF2.0+等),定义:focus时的outline:0足以解决问题。但不支持:focus的IE6和只支持超链接:focus的IE7的黑点边框又怎么解决呢?

今天花了点时间研究这个问题,最早发现的解决办法是通过Javascript解决。思路是:既然IE6和7的outline不是标准的outline(无法通过CSS定义),那肯定有某种JS可以解决。通过这篇Cody Lindley的老文章我们知道hideFocus可以禁用IE的特殊边框。

<a href="#test" onfocus="this.hideFocus=true;">link</a>

但这个方式要求每个链接都有onfocus属性,实在不太美观。Cody Lindley选择用getElementsByTagName对应添加,这是第一种思路。

在上述文章留言中有一个变种方案:既然只有IE不听话,我们用CSS Expression替换不就好了?把JS写入CSS文件,用Conditional Comment避开其他浏览器(只有IE支持CSS Expression,但我有洁癖,喜欢避免CSS警告)。

a { outline:expression(hideFocus='true'); }

众所周知,CSS Expression很耗费资源,若你的页面上链接很多那就更折磨CPU了。因此我们需要一个纯CSS的方式,cssplay的Stu Nicholls老头说纯CSS的方式可行,但没几个人看懂了他给的神奇例子。各位可以用IE去测试,每块拼图都是超链接,Tab键和右键点击却不会有黑色边框。

我花了点时间研究它的CSS,发现原来通过在超链接里附加其他inline标签,通过CSS定位可以做到隐藏IE边框的效果。

首先是HTML

<a href="#test"><span>关于萌番</span></a>

然后是CSS


a { position:relative; margin:0 48px 0 0; }
a span { position:absolute; top:-1px; left:0; cursor:pointer; white-space:nowrap; }
a:hover { background:transparent; }
a:hover span { background:#1C72B7; height:17px; overflow:hidden; }
a:active { background:transparent; }
a:active span { background:#FFF799; height:17px; overflow:hidden; color:#F4B036; }
a:focus { background:transparent; }
a:focus span { background:#FFF799; height:17px; overflow:hidden; color:#F4B036; }

基本原理是让超链接完全坍塌,IE的focus边框就不会显示了。把文字藏在span标签中,再绝对定位于链接区域里(不理解position的请看这篇文章),这样坍塌时文字就不会被隐藏了。加入white-space:nowrap避免文字换行,cursor:pointer模仿鼠标指针,最后定义span为我们希望链接显示的样式,完成对黑点边框的回避。

当然纯CSS方式也有问题:由于链接标签坍塌,我们没办法让标签宽度自适应文字长度。为避免文字相互重叠,这里使用margin增加链接的宽度,换成display:inline-block与width的组合亦可……对于特定宽度的需求,我暂时想不到任何绕过办法。

客栈的吹毛求疵到此为止,我可以满足的休息了。有CSS恶趣味的旅客不妨进一步意淫。

继续阅读

“ 吹毛求疵:解决IE6-7给链接加黑点边框的三种方案 ” 已被炮击3次

  1. 我也研究过,最终还是没有找到一个完美的解决IE链接虚线框,可恶的IE

    万戈的头像

    #1

    万戈

    乘坐着 Firefox 3.5.7 Firefox 3.5.7 与 Windows XP Windows XP

    发射于 19:38 on January 21st, 2010 [回复]

  2. 博主,你的鼠标悬停提示是用JavaScript实现的吗?能分享一下代码吗?谢谢

    Player的头像

    #2

    Player

    乘坐着 Firefox 3.5.7 Firefox 3.5.7 与 Windows XP Windows XP

    发射于 16:12 on February 4th, 2010 [回复]

向我开炮!向我开炮! Leave a Reply

自定义头像——在 Gravatar 登录你的Email即可。留言被吃无需惊慌,请等待专人援救。

Comments will be closed in 2 months.


比特客栈的连珠合璧

比特客栈的东奔西走

比特客栈的旁门左道

News at: [2010/03/16 - 16:50] [2]

尽管两者的“专业知识”不尽相同,但对事物的好奇心却是同等的。可以说,极客是还没有爱上ACG的阿宅,阿宅是还没有跌入矩阵的极客。本来嘛,极客好好躲在欧美,阿宅好好蹲在日韩,互不相干;但互联网的发展加快了两道的互荣与互融,于是就有了以下两则趣闻。

ThinkGeek一直都卖很欧美向的产品,即便有日文,也经常是容易理解的恶搞,但最近他们开始卖“对正常人不感兴趣”的衣服了……

MAKE Magazine一直是超级DIY爱好者,他们报道的新闻与撰写的专栏围绕着生活中的简单物品展开,但最近他们开始谈“内裤飞行活动”了……据称活动很成功

相信在ACG业扩展海外市场的过程中,越来越多欧美国家会遇到亚洲各国的现象——极客不知不觉成了阿宅,阿宅不知不觉成了极客。假如我是日韩政府,我不会错过这个机会。至少,它们比色情业好推销多了。

News at: [2010/03/16 - 05:30] [6]

推特一直被誉为西方社会对非西方社会进行内政干涉的平台。伊朗暴徒上街靠它,中国暴民围观靠它,现在日本死宅又想通过它推翻东京都议会即将审理的《青少年健全与成条例修正案》。你看,推特为了它的西方情结,不惜牺牲儿童的健康成长!日本政府搞亲中连嘴还没撅起来,就被美帝报复了!

(继续阅读)…

News at: [2010/03/02 - 02:04] [2]

今天中国把Disqus.com(跨网站的留言互动服务)给封了,一如之前的Tweetmeme按钮地图炮,这次又会有一大批网站(例如mashable和scobleizer)无法直接查看留言和间接被大幅度降速(遇上Disqus的JS库时要等待超时才能继续读取页面)。现在就看哪天Google和中国闹翻,政府对Analytics或API发射地图炮了。

提问:中国IT公民安分守己的日子还可以保持多久?

更新:这次切断似乎并不完全,是不是又一次海外CDN封锁,我仍在调查中。

News at: [2010/02/27 - 03:24] [15]

原来是Daughtry的歌,后来Westlife翻唱了,于是很多网站上有MV。有趣的是,国内网站通通只有一个版本,Westlife的雪地基情版。找了很久,仍只有聊聊数个现场版与特辑……这着实让我非常的不解,一首燃歌,有啥不行的?直接跑到Youtube版,一看,原来是Daughtry燃错地方,所以他们把它浇灭了,慎密而仔细的。

但他们忘了,有些火种是不会熄灭的。它们只是在等待,等待着人性的光辉。它们仍会发光发热,一如人类祖先发现它们的那天。

进入漆黑的房间,我们知道及时开灯。若未来一片漆黑,我们会在何时点灯?

What About Now ?

via youtube

News at: [2010/02/22 - 17:49] [4]

其实中国的老百姓走向街头和我们西方是不一样的。西方人走向街头讲的是权利,而中国人走向街头的讲的是规则。

不管你是什么人,戴着什么有色眼镜去看待这篇文章,最后的结论都会是:它不仅有数据可证,还踩到了现实的脚趾,不痛是不可能的。

via 中国选举与治理网

News at: [2010/02/19 - 22:24] [4]

对于大多数社会人来说,有假期的年已经过完了。店长也是,只不过我的假期似乎都花在这个叫萌番的网站上了。正确的说,从1月中旬开始计算,我大概花了100个小时在该网站的开发和设计上……对于当前的完成度,我还是比较满意的。

在四处宣传该网站招揽白老鼠之后,萌番也从alpha进化为可以见人的beta了,于是开始公测。注册邀请码是beta,其余请见网站自身说明。

关于这个网站的开发原因,我会在今后的文章中说明清楚。现在旅客们只要知道它是捏它营萌番老站的合体,基于萌翻频道的代码库,利用了我测试贴纸生成器宅种培育室的经验就行了。呼,希望这是我做的最后一个ACG相关的网站项目……

那么,我们有空再谈。

News at: [2010/02/14 - 14:15] [4]

Is anyone except me thinking “the Stig’s Japanese cousin”?

Some say on a steel horse she rides. And that she collects Hello Kitty merchandise.

via danbooru

News at: [2010/02/13 - 21:28] [7]

他们说:你是互联网,我是防火墙!

我们应:离开小黑屋,圣战在街上!

~虎年快乐~