DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> WEB網站前端 >> 前端技巧 >> 去掉a標簽和按鈕加背景圖片虛線/陰影完美解決方案
去掉a標簽和按鈕加背景圖片虛線/陰影完美解決方案
編輯:前端技巧     

當用戶注冊都會點擊一個a標簽更換驗證碼。當點擊後a標簽上有個陰影部分。對於喜歡美觀的同學卻不可容忍!

完美去掉a標簽和按鈕加背景圖片陰影

這是什麼原因呢?原來是a標簽的href屬性惹的禍。

1、僅僅是a標簽

我了解的有兩種解決辦法

其一:對症下藥。既然是href引起的。那就去掉href屬性

當我們用href=javascript:RefreshCode();只是更新驗證碼。並沒有跳轉頁面。

復制代碼代碼如下:
<ahref="javascript:RefreshCode();"class="yellow">看不清楚?換個圖片</a>

所以可以去掉href後,給a標簽加上onclick事件,調用更新驗證碼函數即可

復制代碼代碼如下:
<aonclick="RefreshCode()"class="yellow">看不清楚?換個圖片</a>

其二:退一步。求同存異。既然你想用href屬性。好吧。那我再給你加個事件:onfocus

只要修改一下也可以完美去掉 給a標簽加個onfocus="this.blur()"

當然。如果你想讓a標簽沒有下劃線。則:style="text-decoration: none"

復制代碼代碼如下:
<a href="javascript:RefreshCode();"class="yellow"onfocus="this.blur()">看不清楚?換個圖片</a>

修改完成後的效果

完美去掉a標簽和按鈕加背景圖片陰影

而在FF等浏覽器中則相對比較容易,直接給標簽 a 定義樣式 outline:none;就可以了,即:

復制代碼代碼如下:
a{ outline:none; }

當然這僅僅是去掉單個。如果頁面有多個a標簽那豈不要挨個挨個添加onfocus事件嗎?

當然不是。我們可以在頁面加載的時候。通過:window.document.links.length(此處window可以省略)來獲取頁面所有的a標簽。然後遍歷注冊事件。

復制代碼代碼如下:
<scripttype="text/javascript">
window.onload=function(){
for(var i=0; i<document.links.length; i++)
document.links[i].onfocus=function(){this.blur()}
}
</script>

2、給button加背景圖片:

另為如果你給按鈕加了背景圖片。會有陰影。

完美去掉a標簽和按鈕加背景圖片陰影

也可以用相同的辦法實現

復制代碼代碼如下:
<asp:Button ID="imgBtnReg" runat="server"onfocus="this.blur()" OnClientClick="return chk_reg();"OnClick="imgBtnReg_Click" Text="確認提交"/>
<input type="submit"id="btnReg" value="注冊" name="regist" onfocus="this.blur()"onclick="return checkAll()" style="background-image:url('image/btn.jpg')"/>

修改後效果:

完美去掉a標簽和按鈕加背景圖片陰影

3、如果給img加a標簽,那麼給a標簽加onfocus的同時還要設置img的border屬性:border=0

復制代碼代碼如下:
<a href="#none"onfocus="this.blur()">
<img style="border:0px">
</a>

如果你頁面既有a標簽。又有button。那你可以將其封裝成一個函數

復制代碼代碼如下:
function fHideFocus(tName){
aTag=document.getElementsByTagName_r(tName);
for(i=0;i<aTag.length;i++)aTag.hideFocus=true;
//for(i=0;i<aTag.length;i++)aTag.onfocus=function(){this.blur();};
}

當前是添加一個hidefocus的屬性,它的值是一個布爾值,如hideFocus=true。也可省略賦值直接hideFocus。

代碼如果沒有hideFocus,那麼鼠標點擊該超鏈接,則外面出現一個虛線框,即為聚焦。而使用了hideFocus則不會有虛線框。

注釋掉的句子是添加onfucus=this.blur();效果相同。
然後調用fHideFocus("A");即可把a的虛線框去掉
通過傳遞不同的參數 可以去掉不同的虛線框比如"BUTTON"可以去掉button的虛線框,但要記住參數要用大寫字母

擴展:

A. map area內鏈接如何消除鏈接虛線?

這是一個觀念上的錯誤,其實應該在所在map的圖片上加以控制,而不是在area內,參考傳統辦法

B. 關於onFocus

復制代碼代碼如下:
<a href="http://blog.sina.com.cn/s/articlelist_3015911503_0_1.html"onfocus="this.blur()">
<img style="border:0px">
</a>

其中,onfocus是設置鼠標焦點事件的東西,這個可以用,也可以不用,不過為了讓更多的浏覽器識別的話,建議采用;border=0這個才是去除虛線框的關鍵所在(在網上看到大部分人都是用onfocus="this.blur()"來消除虛線框,但有的時候,僅僅用這一句是不能消除的)

對於牛人來說知識點已是很陳舊。但對於剛接觸的朋友卻是及時雨,今天正好遇到。故記錄於此。知識要靠一點一點積累。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved