在日常開發的網站中,常常會用到設置透明度問題,最簡單的就是圖片的淡入淡出效果。下面我介紹一下在原生js和jQuery中設置透明度的相關問題和注意點:
1 透明度樣式設置
透明度在IE浏覽器和其他相關浏覽器中的設置方法不太相同,IE使用filter:alpha屬性,firefox使用opactiy屬性,下面示例設置透明度為30%:
IE:filter: alpha(opacity:30);
firefox:opacity(0.3);
2 原生js設置透明度
為了兼容IE與其他浏覽器對透明度的設置,我們需要對以上兩種樣式分別進行設置;
復制代碼 代碼如下:
var alpha = 30; //透明度值變量
var oDiv = document.getElementById('div1'); //獲取DOM元素對象
oDiv.style.filter = 'alpha(opacity:'+alpha+')'; //設置IE的透明度
oDiv.style.opacity = alpha / 100; //設置fierfox等透明度,注意透明度值是小數
3 jQuery設置透明度
jQuery中對透明度的設置進行了整合,兼容IE和其他浏覽器,修改opactiy屬性值即可,值為小數,因此只需要設置一次即可;
復制代碼 代碼如下:
$(function(){
$("#div1").css("opacity","0.3"); //設置透明度
});
4 一個示例
示例使用原生js實現一個div的淡入淡出效果;鼠標移入div區域,透明度為100%,鼠標移出div區域透明度為30%,同時用時間控制透明度轉換效果;
復制代碼 代碼如下:
window.onload=function()
{
var oDiv = document.getElementById('div1');//獲取div的DOM對象
oDiv.onmouseover = function() //鼠標移入方法
{
startMove(100);
};
oDiv.onmouseout = function() //鼠標移出方法
{
startMove(30);
};
}
var timer = null;//時間對象
var alpha = 30;//透明度初始值
function startMove(iTarget)
{
var oDiv = document.getElementById('div1');
clearInterval(timer);//清空時間對象
timer = setInterval(function(){
var speed = 0;
if(alpha < iTarget)
{
speed =5;
}
else
{
speed = -5;
}
if(alpha == iTarget)
{
clearInterval(timer);
}
else
{
alpha +=speed; //透明度值增加效果
oDiv.style.filter = 'alpha(opacity:'+alpha+')'; //設置IE透明度
oDiv.style.opacity = alpha / 100; //設置其他浏覽器
}
},30);
}