outline是css3的一個屬性,用的很少。
聲明,這是個不能兼容的css屬性,在ie6、ie7、遨游瀏覽器都不兼容。
outline控制的到底是什么呢?
當聚焦a標簽的時候,在a標簽的區域周圍會有一個虛線的框,這個框不同於border的是,它是不占有任何寬度的。當你取消焦點的時候,這個虛線框就會自然消失。你可以通過遨游、火狐或者ie的幾個版本看到。而safari、opera、goole瀏覽器等本身就不支持這個效果,所以看不到。
這個就是a標簽被聚焦后出現了虛線框,也就是outline;
基本上這個是沒有用的效果,大多數情況下我們會希望不要出現這種效果,於是給a標簽設置outline:none;很遺憾的是,ie6、7和遨游瀏覽器里都不能實現,只有ff,ie8在加了outline:none后會取消聚焦的虛線框。所以我說這個Outline屬性基本就是一個費屬性。
怎么樣才能取消這個虛線框呢?常用方法有三種:
1:在a標簽里加入js控制,當a標簽被聚焦時,強制取消焦點,這時候a標簽自然不會有虛線框。
<a href="#" onfocus="this.blur();">測試</a>
這里設置聚焦時觸發blur();強制取消焦點。自然是屢試不爽。
2:在a標簽里嵌套其他標簽,比如span 或者var等等,把內容放在被嵌套的標簽里。這時候點擊這個鏈接,聚焦的是a的子標簽,自然不會聚焦在a標簽上,所以也能避免這個問題。
3:不適用a標簽做鏈接,采用其他標簽,使用js做出hover的效果,在css里加入cursour:pointer;設置鼠標以上時變小手。給用戶是鏈接的錯覺。使用js做點擊時的頁面跳轉等。最大的缺點是對se友好性比前兩種差很多。
這三種方法的共同點是比較麻煩,相比較而言,推薦第一種,第二第三也視不同的情況而定。也是會用到的。
我認為outline的這個效果時瀏覽器遲早要取消掉的,所以關於這個屬性的知識也相當的雞肋。
或者還可以在css中加入body a{outline:none;blr:expression(this.onFocus=this.blur());}