以下代碼都是從新版的動網論壇(DV7SP2)整理出來的。
<script>
Function bbimg(o){
var zoom=parseInt(o.style.zoom, 10)||100;zoom+=event.wheelDelta/12;if (zoom>0) o.style.zoom=zoom+'%';
return false;
}
</script>
<%
Private Function bbimg(strText,ssize)
Dim s
s=strText
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="<img(.[^>]*)>"
If ssize=500 Then '顯示貼子時默認寬度為500
s=re.replace(s,"<img$1onmousewheel=""return bbimg(this)"" onload=""javascript:if(this.width>screen.width-"&ssize&")this.width=screen.width-"&ssize&";"">")
Else '顯示簽名圖片
s=re.replace(s,"<img$1onmousewheel=""return bbimg(this)"" onload=""javascript:if(this.width>screen.width-"&ssize&")this.width=screen.width-"&ssize&";if(this.height>100)this.height=100;"">")
End If
bbimg=s
End Function
%>
其中:onmousewheel=""return bbimg(this)"" 用于檢測鼠標滾輪事件,bbimg函數實現圖片大小隨鼠標滾輪滾動而變大縮小。
不過,簽名圖片在某些情況下(高度大于100時)會被壓扁,那是因為這行代碼:if(this.height>100)this.height=100; 不知道為什么,寬度自動縮放會實現“鎖定縱橫比”效果,但是縮放高度卻會把圖片壓扁(僅有部分圖片會出現變形),目前有兩個解決辦法(可任選其一,以下代碼文字來源于動網論壇,但我找不到是誰最先寫出來的了):
1、修改if(this.height>100)this.height=100; 為:if(this.height>100)this.style.height=100;
這樣做可以保證大部分圖片按比例縮放,只有少數特殊的圖片會被變形。
2、修改if(this.height>100)this.height=100; 為:if (this.height>100){var rate=100 / this.height;this.style.width=this.width * rate;}
方法二的原理說明:其實就是一個算法,把高度的縮放改為寬度的縮放,因為無論什么圖片對其width進行縮放都不會造成變形(至少我還沒有發現會變形的圖片),所以想用哪個方法就由各位自己選擇了。一般來說推薦第一個方法,如果發現還有圖片縮小后變形,再試試第二個方法。
研究完了,馬上在公司網站的文章系統上試一下(原來一直不知道怎么實現這一功能),效果果然不錯!
新聞熱點
疑難解答