有时产品需要删除A标签的虚线框,如一些活动页面上的链接;事实上,这个细节可以忽略,但他们坚持要删除,哈哈,感觉很痛苦,HOHO。下面简单说说吧~
outline是css3的属性,很少使用。 声明,这是ie6中不兼容的css属性、ie7、漫游浏览器不兼容。
outline的控制是什么?
聚焦a标签时,a标签区域周围会有一个虚线框,不同于border,它不占任何宽度。当你取消焦点时,虚线框会自然消失。你可以看到几个版本的漫游,火狐或ie。而safari、opera、谷歌浏览器等本身并不支持这种效果,所以看不见。以下是outline的样子示例,也是我正在做的一个页面截取的。 这就是a标签聚焦后出现的虚线框,即outline; 基本上,这是无用的。在大多数情况下,我们希望不要有这种效果,所以我们为a标签设置outline:none;不幸的是,ie6、7和漫游浏览器都无法实现,只有ff,ie8添加了outline:在none之后,聚焦虚线框将被取消。所以我说这个Outline属性基本上是一个费属性。 如何取消这个虚线框?
有三种常用方法:
1、将js控制添加到a标签中,当a标签聚焦时,强制取消焦点,此时a标签自然不会有虚线框。
<a href=”#” onfocus=”this.blur();”>测试</a>
注:这种方法太暴力了。我们需要批量解决整个网站的超链接虚线框。一个接一个地添加这样的代码不会晕倒,所以放弃 ,^_^。
2、其他标签嵌套在a标签中,如span 或者var等,把内容放在嵌套的标签上。此时点击此链接,关注a的子标签,自然不会关注a标签,因此也可以避免此问题。
注:该方法对按钮和图片连接更实用,但对于那些新闻列表文本连接不太实用。。。。
尼玛真的很沮丧,最后只能施加暴力,看看第三种方法
3、用CSS&全站都可以使用JS方法,方便简洁:
a{outline:none;}
a:active{noOutline:expression(this.onFocus=this.blur());}
也可以这样写:
a{
blr:expression(this.onFocus=this.blur()); /* IE Opera */
outline:none; /* FF Opera */
}
a:focus{ -moz-outline-style: none; } /* FF */
说明:这种方法使用过多,效率低
另外,借题发挥吧,如果你用过 Safari 和 Chrome 可能会发现,当输入框得到焦点时,边框会产生阴影效果
如果你想去除阴影效果也可以使用 outline 属性。代码如下:
input,textarea {
outline:none;
}
嗯,以上只是我的初步总结。如果大侠有问题和建议,欢迎吐槽~~~