如何使用js的计时器来让一个div背景从左向右移动全部代码

JavaScript011

如何使用js的计时器来让一个div背景从左向右移动全部代码,第1张

你好,给你写了一个很基础的例子。参照着自己优化成你想要的效果吧。

示例是这样的,鼠标移动到div上,背景图片会从左往右移动直至最右端。鼠标移出div,背景图标从右往左直至最左端。

备注:考虑到宽度变化,本例背景图片使用百分比定位。根据你的实际情况也可改为使用像素(px)定位。

<style>

.bg-div {

    height: 110px

    background: url(https://gss0.bdstatic.com/7Ls0a8Sm1A5BphGlnYG/sys/portrait/item/27267a776a746b7505.jpg) 0% center no-repeat #ccc

}

</style>

<div id="J_BgDiv" class="bg-div"></div>

<script>

(function() {

    var div = document.getElementById('J_BgDiv')

    // 背景百分比(从左至右,0%-100%)

    var pos = 0

    // 背景向右移还是向左移(0:向右,1:向左)

    var dir = 0

    // 每次移动的百分比,控制速度

    var step = 3

    div.addEventListener('mouseover', function() {

        var node = div

        dir = 0

        if (!div.mover) {

            div.mover = setInterval(function() {

                // 每次移动10%

                if (dir === 0) {

                    pos += step

                } else {

                    pos -= step

                }

                pos = pos >= 100 ? 100 : pos

                pos = pos <= 0 ? 0 : pos

                node.style.backgroundPosition = pos + '% center'

            }, 20)

        }

    }, false)

    div.addEventListener('mouseout', function() {

        dir = 1

    }, false)

})()

</script>

希望能帮你解决问题,如有疑问可以追问。

setTImeout第一个参数必须是一个可执行的函数,你第二副图传的是一个表达式,是没有返回值的。

可以有如下写法:

1、你的第一种写法

2、setTimeout(handle, 1000)

function handle() {location.href=xxx}

3、setTimeout(()=>location.href=xxx)