text-indent 隐藏文字时出现的 outline 问题

今天在修改 淘宝 宝贝详情页面的时候,发现页面在 Firefox 下遇到这样一个问题: 链接用图片做背景,text-indent:-9999px; 隐藏文字,此效果在 IE 中是正常的,但在 Firefox 里,鼠标点击该链接时,虚线框却会包住被缩进的文字,结果显示为虚线框 N 长。(BTW: 因为平时是用 overflow:hidden; 属性的,所以一直也没有注意到这个问题的存在。) 虚线框,其实就是 CSS 中的 outline 属性,这也说明 IE 和 Firefox 对于 outline 和 border 的解析范围并不一致:IE 认为虚线框就是border的边缘,而 Firefox 则认为虚线框应该是文字范围。 那 W3C 中是如何定义 outline 的呢? At times, style sheet authors may want to create outlines around visual objects such as buttons, active form […]

... 3 条评论 »

如何去除点击链接时出现的虚线框

有时候在一个页面用到收放功能的时候时,总有一个虚线框在触发收放的功能按钮上,显得特别刺眼,那如何去除这个虚线框呢? 虽然从可用性的角度,隐藏虚线框的做法会让键盘偏执狂不满。但从视觉上,有时候虚线框确实影响美观。 方法一: IE 下可使用其私有的html属性:hideFocus,在标签的结构中加入 hidefocus=”true” 属性。即: <a href=”http://www.taobao.com” hidefocus=”true” title=”淘宝网,淘我喜欢”>淘宝网</a> 而在 Firfox 浏览器中则相对比较容易,直接给标签 a 定义样式 outline:none; 就可以了,即: .HideFocus { outline:none; } 方法二: 也可以仅用 CSS 来控制,即对 IE 的情形使用 expression 表达式,但不推荐使用,毕竟 expression 在性能上有问题。 .HideFocus { hide-focus: expression(this.hideFocus=true); /* for ie 5+ */ outline: none; /* for ... 9 条评论 »