javascript - 请问无缝滚动中,为何用offsetWidth代替style.width

查看:140
本文介绍了javascript - 请问无缝滚动中,为何用offsetWidth代替style.width的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }

        div{
            position: relative;
            width: 712px;
            height: 108px;
            background: red;
            margin: 100px auto;
        }

        div ul{
            position: absolute;
            top: 0;
            left: 0;
        }

        div ul li{
            width: 178px;
            height: 108px;
            list-style: none;
            float: left;
        }
    </style>
</head>
<body>
    <div id="main">
        <ul>
            <li><img src="img/1.jpg" alt=""></li>
            <li><img src="img/2.jpg" alt=""></li>
            <li><img src="img/3.jpg" alt=""></li>
            <li><img src="img/4.jpg" alt=""></li>
        </ul>
    </div>

    <script>
        window.onload=function()
        {
            var oDiv = document.getElementById('main');
            var oUl = oDiv.getElementsByTagName('ul')[0];
            var oLi = oDiv.getElementsByTagName('li');

            oUl.innerHTML+=oUl.innerHTML;
            oUl.style.width = oLi[0].offsetWidth*oLi.length+"px";

            setInterval(function(){
                oUl.style.left = oUl.offsetLeft-2+"px";
            },30)
        }
    </script>
</body>
</html>

请问,为何在代码中oUl.style.width = oLi[0].offsetWidth*oLi.length+"px";
右侧用offsetWidth?为何不能用style.width来表示每一个li的宽度呢?

解决方案

简单来说 style.width 是你设置的宽度,如果你在样式中没有设置宽度,那么就取不到这个值。而 offsetWidth 是实际宽度,不管你有没有在样式中设置宽度,只要元素有实际宽度,就可以通过这个属性取到。

这篇关于javascript - 请问无缝滚动中,为何用offsetWidth代替style.width的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆