在没有jquery的情况下淡出页面上的元素

Fade out elements on page without jquery

本文关键字:元素 淡出 情况下 jquery      更新时间:2023-09-26

我想用javascript淡出页面上的一些元素,但不使用jquery。我该怎么做?

在我们对您的问题的评论中进行了小讨论后,您提到您主要针对移动设备。因此,CSS转换可能是您的最佳选择,因为它受到iOS和Android所有版本的支持,并且不执行任何昂贵的JavaScript循环。

这是一个可行的最小实现。

HTML:

<a href="#" id="doFade">fade</a>
<div id="toFade">...</div>

CSS:

#toFade {
    -webkit-transition: opacity 2s;
    opacity: 1;
}
#toFade.faded {
    opacity: 0;
}

Javascript:

document.getElementById('doFade').addEventListener('click', function() {
    document.getElementById('toFade').className += 'faded';
});
var s = document.getElementById('thing').style;
s.opacity = 1;
(function fade(){(s.opacity-=.1)<0?s.display="none":setTimeout(fade,40)})();

取自http://vanilla-js.com/

我想你会制作自己的fadeOut函数吗?

function fade(element, speed) {
    var op = 1,
        timer = setInterval(function () {
            if (op <= 0.1){
                clearInterval(timer);
                element.style.display = 'none';
            }
            element.style.opacity = op;
            element.style.filter = 'alpha(opacity=' + op * 100 + ")";
            op -= op * 0.1;
        }, speed);
}

FIDDLE

如果您只针对支持CSS3淡入淡出选项的浏览器,请选择CSS3,但如果不支持,则需要以下内容:

function addEvent(obj,event,func)
{
    if(typeof func !== 'function')
    {
        return false;
    }
    if(typeof obj.addEventListener == 'function' || typeof obj.addEventListener == 'object')
    {
        return obj.addEventListener(event.replace(/^on/,''), func, false);
    }
    else if(typeof obj.attachEvent == 'function' || typeof obj.attachEvent == 'object')
    {
        return obj.attachEvent(event,func);
    }
}
addEvent(elem,'onclick',function(e) {
    var target = e.srcElement || e.target;
    target.style.opacity = 1;
    var fadeOutInt = setInterval(function() {
        target.style.opacity -= 0.1;
        if(target.style.opacity <= 0) clearInterval(fadeOutInt);
    },50);
});

JSFiddle

CSS

.fade{
opacity: 0;
}

JavaScript

var myEle=document.getElementById("myID");
myEle.className += " fade"; //to fadeIn
myEle.className.replace( /(?:^|'s)fade(?!'S)/ , '' ) //to fadeOut