JavaScript进阶学习之图片操作6
沉沙 2018-10-19 来源 : 阅读 1108 评论 0

摘要:本篇教程介绍了JavaScript进阶学习之图片操作6,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript进阶学习之图片操作6,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

上一篇写的关于放大镜的,可能在实际开发中用的不是很多,接下来将的图片无缝滚动在实际工作中就是用的比较多的了。

如上图,通过定时器控制图片无缝滚动,当鼠标悬浮时停止滚动,鼠标离开,滚动继续。

主要原理是通过定位实现图片的移动,然后通过定时器实现滚动的效果,即无缝滚动。

首先是基础的结构
复制代码

<!DOCTYPE html>
<html>
<head>
    <title>无缝滚动</title>
    <style type="text/css">
    *{margin:0;padding:0;}
ul{list-style:none;float:left;}
li{margin: 5px;border:3px double #00a67c;float:left;}
li img{width:150px;float:left;}
#demo{width:800px;overflow: hidden;margin:100px auto;border: 1px solid #999;}
#indemo{width:800%;float:left;}
    </style>
</head>
<body>
<div id="demo">
    <div id="indemo">
        <ul id="demo1">
            <li><img src="img/pic1.jpg"></li>
            <li><img src="img/pic2.jpg"></li>
            <li><img src="img/pic3.jpg"></li>
            <li><img src="img/pic4.jpg"></li>
            <li><img src="img/pic5.jpg"></li>
            <li><img src="img/pic6.jpg"></li>
            <li><img src="img/pic7.jpg"></li>
        </ul>
        <ul id="demo2"></ul>
    </div>
</div>
</body>
</html>

复制代码

有了基本结构后,就要让图片动起来,为了实现图片的无缝滚动,将存放图片的ul进行复制,放在其后,模拟循环效果。其次,每当图片滚动到复制元素的最后一张图片时,就应该让图片重新回到最开始的状态再继续滚动,这样的话就形成了无缝循环滚动的效果。
复制代码

<script type="text/javascript">
       window.onload = function(){
    var age = 20;
    var tab = document.getElementById('demo');
    var tab1 = document.getElementById('demo1');
    var tab2 = document.getElementById('demo2');
    tab2.innerHTML = tab1.innerHTML;
 
    function run(){
        //tab1的宽度小于 tab被隐藏的宽度;
        if(tab1.offsetWidth - tab.scrollLeft <=0 ){
            //重置tab被隐藏的宽度
            tab.scrollLeft -= tab1.offsetWidth;
        }else {
            tab.scrollLeft++;
        }
    };
    var mymar = setInterval(run,age);
}
    </script>

复制代码

最后就是优化了,当鼠标悬浮时停止滚动,鼠标离开后继续滚动。
复制代码

<script type="text/javascript">
    tab.onmouseover = function(){
        clearInterval(mymar);
    }
    tab.onmouseout = function(){
        mymar = setInterval(run,age);
    }
 </script>

复制代码

到此,我们就实现了最开始想要的效果了,完整代码如下:
复制代码

<!DOCTYPE html>
<html>
<head>
    <title>无缝滚动</title>
    <style type="text/css">
    *{margin:0;padding:0;}
ul{list-style:none;float:left;}
li{margin: 5px;border:3px double #00a67c;float:left;}
li img{width:150px;float:left;}
#demo{width:800px;overflow: hidden;margin:100px auto;border: 1px solid #999;}
#indemo{width:800%;float:left;}
    </style>
    
</head>
<body>
<div id="demo">
    <div id="indemo">
        <ul id="demo1">
            <li><img src="img/pic1.jpg"></li>
            <li><img src="img/pic2.jpg"></li>
            <li><img src="img/pic3.jpg"></li>
            <li><img src="img/pic4.jpg"></li>
            <li><img src="img/pic5.jpg"></li>
            <li><img src="img/pic6.jpg"></li>
            <li><img src="img/pic7.jpg"></li>
        </ul>
        <ul id="demo2"></ul>
    </div>
</div>
<script type="text/javascript">
       window.onload = function(){
    var age = 20;
    var tab = document.getElementById('demo');
    var tab1 = document.getElementById('demo1');
    var tab2 = document.getElementById('demo2');
    tab2.innerHTML = tab1.innerHTML;
 
    function run(){
        if(tab1.offsetWidth - tab.scrollLeft <=0 ){
            tab.scrollLeft -= tab1.offsetWidth;
        }else {
            tab.scrollLeft++;
        }
    };
    var mymar = setInterval(run,age);
    tab.onmouseover = function(){
        clearInterval(mymar);
    }
    tab.onmouseout = function(){
        mymar = setInterval(run,age);
    }
}
    </script>
</body>
</html>    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程