• 大图滚动效果


    ps:图片大小200*200;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>大图滚动效果</title>
    </head>
    <style>
        body {
            background: skyblue;
        }
        .pic{
            width: 200px;
            height: 200px;
            margin: 50px auto;
            border: 1px red solid;
            overflow: hidden;
        }
        .imgs {
            width: 800px;
            height: 200px;
        }
        .imgs img {
            width: 200px;
            height: 200px;
            float: left;
        }
        .but {
            width: 350px;
            height: 50px;
            margin: 10px auto;
            border: 1px red solid;
            text-align: center;
        }
        .but span {
            font-size: 40px;
            padding-right: 15px;
            cursor: hand;
            cursor: pointer;
        }
        .select {
            color: red;
        }
    </style>
    <body>
        <div id="pic" class="pic">
            <div class="imgs">
                <img src="img/1.png" alt="">
                <img src="img/2.png" alt="">
                <img src="img/3.png" alt="">
                <img src="img/4.png" alt="">
            </div>
        </div>
        <div class="but" id="but">
            <span><--</span>
            <span class="select">1</span>
            <span>2</span>
            <span>3</span>
            <span>4</span>
            <span>--></span>
        </div>
        <!-- =================================================================================================================================== -->
        <script>
            var pic = document.getElementById('pic');
            var pics = pic.getElementsByTagName('img');
            var btns = document.getElementById('but').getElementsByTagName('span');
            var autoNum = 0;    //当前图片的索引值
            var imgWidth = 200; //图片宽度
            var time = null;    //第一个计时器,用于实现当前位置到新位置的运动过程
            var time2 = null;    //第二个计时器,用于实现多次滚动的发生
            window.onload = clock; //文档加载完成后,加载clock函数
    
            function moveTo(startPos,endPos){
                if(time){
                    clearInterval(time);
                }
                var startPos = startPos;
                var endPos = endPos;
                var step = 0;
                var stepMax = 50;
                var everyStep = (endPos - startPos) / stepMax;
                time = setInterval(move,25);
    
                function move(){
                    step++;
                    pic.scrollLeft += everyStep;
                    if(step == stepMax){
                        pic.scrollLeft = endPos;
                        clearInterval(time);
                    }
                }
            }
    
            function autoMove(){
                autoNum++;
                if(autoNum == pics.length){
                    autoNum = 0;
                }
                if(autoNum == -1){
                    autoNum = pics.length - 1;
                }
                btncolor();
                moveTo(pic.scrollLeft,imgWidth * autoNum);
            }
    
            for(var i = 1;i < btns.length -1;i++){
                btns[i].onclick = function(){
                    clearClock();
                    for(var j = 1;j < btns.length - 1;j++){
                        if(this == btns[j]){
                            autoNum = j - 1;
                            btncolor();
                            moveTo(pic.scrollLeft,imgWidth * (j - 1));
                        }
                    }
                    clock();
                }
            }
    
            btns[0].onclick = function(){
                clearClock();
                autoNum -= 2;  //在autoMove中会加1,因此此处减2
                autoMove();
                clock();
            }
    
            btns[btns.length - 1].onclick = function(){
                clearClock();
                autoMove();
                clock();
            }
    
            function clock(){
                //需要大于1250,原因在moveTo函数中50*25=1250,否则会使计时器重复调用
                time2 = setInterval(autoMove,3000); 
            }
    
            function clearClock(){
                if(time2){
                    clearInterval(time2);
                }
            }
    
            function btncolor(){
                //从1开始是因为有左键<--
                for(var k = 1;k < btns.length - 1;k++){
                    btns[k].style.color = 'black';
                }
                btns[autoNum + 1].style.color = 'red';
            }
        </script>
    
    </body>
    </html>

    效果图:

  • 相关阅读:
    对象比较
    ObservableCollection<T> 的同类 ListCollectionView
    数据模板--DataTemplate
    ListBox的虚拟可视化技术
    WPF 动画 和 色彩 的随笔
    Binding.RelativeSource 属性
    javascript基础DOM操作
    js dom 操作技巧
    js 内置对象和方法 示例
    javascript 编程技巧
  • 原文地址:https://www.cnblogs.com/kewenxin/p/5939050.html
Copyright © 2020-2023  润新知