【问题标题】:How do i make the image to slide move to the right from left 0,0 position to the end right side?如何使图像从左侧 0,0 位置向右滑动到右侧末端?
【发布时间】:2014-11-22 03:41:44
【问题描述】:

我有这个代码:

   <script type="text/javascript">
      var animate, left=0, imgObj=null;

function init(){

   imgObj = document.getElementById('myImage');
   imgObj.style.position= 'absolute';
   imgObj.style.top = '240px';
   imgObj.style.left = '-300px';
   imgObj.style.visibility='hidden';

   moveRight();
}

function moveRight(){
    left = parseInt(imgObj.style.left, 10);
    if (10 >= left) {
        imgObj.style.left = (left + 5) + 'px';
        imgObj.style.visibility='visible';

        animate = setTimeout(function(){moveRight();},20);

    } else {
        stop();
    }
}

function stop(){
   clearTimeout(animate);
}

window.onload = function() {init();};
   </script>
<img id="myImage" src="http://newsxpressmedia.com/files/radar-simulation-files/radar007339.Gif" style="margin-left:170px;" />

它的作用是将屏幕中间的一张图像从左侧移动到中心。 但我想要它做的是将图像从左上角 0,0 移动到右侧的末端到右上边框,而不是停止,而是图像将再次开始从右侧移动到离开了。

我从来不理解这个 px 值。现在它设置为顶部 240 和左侧 -300。我试图将其更改为 0 和 0,但它没有将它放在左上角,并且图像根本没有移动。

如何更改代码,使其开始将图像从左上角移动到右上角,以及如何添加更多图像,以便像幻灯片一样从左到右不间断地移动它们?

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    试试这个:

    <script>
        var animate, left=0, imgObj=null, right;
    
        function init(){
    
           imgObj = document.getElementById('myImage');
           imgObj.style.position= 'absolute';
           imgObj.style.top = 0;
           imgObj.style.left = 0;
           imgObj.style.visibility='visible';
    
           right = document.documentElement.clientWidth - imgObj.width;
           moveRight();
    
        }
    
        function moveRight(){
            if (left < right) {
                left += 5;
                imgObj.style.left = Math.min(left, right) + 'px';
    
                animate = setTimeout(moveRight,20); // call moveRight in 20msec
            }
        }
    
        window.onload = init;
    </script>
    <img id="myImage" src="http://newsxpressmedia.com/files/radar-simulation-files/radar007339.Gif" />
    

    DEMO

    现在你的第二个问题

    我怎样才能添加更多图像,这样它就可以像幻灯片一样从左到右不停地移动它们?

    您只需更改一点代码,即可处理多张图片:

    <script>
        var imgObjs=null;
    
        function init(){
           imgObjs = document.getElementsByTagName('img');
            for(var i = imgObjs.length; i--; ) {
               var imgObj = imgObjs[i];
               imgObj.style.position='absolute';
               imgObj.style.top = 0;
               imgObj.style.display='none';        
            }
    
           moveImage(0);
        }
    
        function moveImage(i) {
            var imgObj = imgObjs[i],
                right = document.documentElement.clientWidth - imgObj.width;
    
            left = imgObj.style.left = 0;
            imgObj.style.display='block';
    
            function moveRight(){
                if (left < right) {
                    left += 5;
                    imgObj.style.left = Math.min(left, right) + 'px';
    
                    setTimeout(moveRight,20); // call moveRight in 20msec
                } else {
                    imgObj.style.display='none';
                    moveImage((i+1)%imgObjs.length);
                }
            }
            moveRight();
        }
    
        window.onload = init;
    </script>
    <img src="http://newsxpressmedia.com/files/radar-simulation-files/radar007337.Gif" />
    <img src="http://newsxpressmedia.com/files/radar-simulation-files/radar007338.Gif" />
    <img src="http://newsxpressmedia.com/files/radar-simulation-files/radar007339.Gif" />
    

    DEMO

    【讨论】:

    • friedi,当它到达右侧时,我如何让它从左到右重新开始?我希望它继续不停地移动。
    • 我添加了你第二个问题的答案
    • friedi 它确实很好用。我不确定是否要在这里问,但我有两个子问题:我有一个图像幻灯片,但由于幻灯片位于屏幕的中间顶部,因此移动图像不会显示它在它上面移动。我怎样才能让动态图像/s代码将幻灯片推到屏幕中间,这样两张幻灯片之间就会有一些空间?这是我的 html 代码:jsfiddle.net/o4ndyzj8/1 你可以在我的网站上清楚地看到它:newsxpressmedia.com/SlideShow.php 这是 html 代码:pastebin.com/nsNvZDs2
    • 对不起,也许你可以看看如何让每个人都不会打扰另一个人。
    • 您可以在left = imgObj.style.left = 0;行后添加imgObj.style.top = document.documentElement.clientHeight - imgObj.height;
    【解决方案2】:

    结合 javascript 和 css 过渡以获得最佳效果

    <style>
        img {
            position: absolute;
            width: 100px;
            height: 100px;
            left: 0;
            top: 0;
    
            transition-property: left;
            transition-duration: 2s;
        }
    </style>
    
    <img src="pic.jpg">
    
    <script>
        function animate() {
            var img = document.getElementsByTagName('img')[0];
            var img_width = 100;
            var window_width = window.innerWidth;
            img.style.left = window_width - img_width;
        }
    
        function init() {
            setTimeout(animate, 1000);
        }
    
        window.onload = init();
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2015-10-02
      相关资源
      最近更新 更多