zoukankan      html  css  js  c++  java
  • js限定内容的溢出滚动(offset,style.left)

    1.

    1.html:
    <div class="test" style="position: relative;">
        <ul id="content" style="position: relative;">
            <li>test111111111112222</li>
        </ul>
    </div>
    
    2.scss:
    .test{
        overflow: hidden;
         200px;  
    }
    ul#content{
        list-style-type: none;
        font-size: 0px;
        white-space: nowrap;
        overflow:hidden;
        padding:0px;
        li{
            display: inline-block;
            vertical-align: top;
            font-size: 13px;
        }
    }
    
    3.js:
    <script>
    $(function() {
        var width = window.innerWidth - 100;
        var content = $('#content').html();     //原内容<li>test111111112222222222</li>
        var content_width = $('#content li').width(); //原宽度
    
        $('#content').html(content + content);
        var w = $('#content li').length * $('#content li').eq(0).width(); //w 总长度
        $('#content').css('width', w);
        var timer;
        var el = $('#content')[0];
    
        function toRight() {
            window.clearInterval(timer);
            var timer = window.setInterval(function () {
            var offset = el.offsetLeft+10;  //偏移值 每次相对当前位置偏移10px
            if(offset > 0){                 //第一次进来执行一次,以后为-xx 不再执行
                                                        //每次 +10 递增 -160,-150,-140,...,0,10 一旦>0,重置为-165 
                offset = -el.offsetWidth/2;
            }
            el.style.left = offset+'px';
            },100)
        }
    
         function toLeft() {
             window.clearInterval(timer);
             var timer = window.setInterval(function () {
                 var offset = el.offsetLeft - 10;
                 if(offset<= -el.offsetWidth/2){  // 同理 当向左偏移到一半的时候重置回来
                            offset = 10;
                 }
                 el.style.left = offset+'px';
              },100)
         }
               
         //如果容器的宽度够显示内容不进行滚动,不够则进行滚动显示
         if($('.test').width() > content_width){
              $('#content').html(content);
         }
         else{
               toLeft();
         } 
    });
    </script>

    2.写了后觉得可以优化下

    // js部分:
    $(function() {
        var width = window.innerWidth - 100;
        var content_width = $('#content li').width(); 
        $('.test').width(width);
        if(width < content_width){               //如果内容长度大于显示长度
            var timer;
            var el = $('#content')[0];
            var offset = 0;             //内容的初始位置 
            var content = $('#content').html();
            $('#content').append(content);   // 将原内容复制为两条,目的:当向左偏移时,内容前部分消失,在内容的尾部后可以看到内容消失的头部
            function toLeft(){
                window.clearInterval(timer);
                timer = window.setInterval(function () {
                    offset = el.offsetLeft - 15;  //每次偏移的量 
                    if(offset < -content_width-30){                      //如果滚动到底了,重置回来
                        offset = 0;
                    }   
                    el.style.left = offset+'px'; //执行偏移                         
                },100); // 每100毫秒移动一遍
            }
            toLeft();
            console.log(content_width);
        }
    });

    //css:
    ul#content{
        list-style-type: none;
        font-size: 0px;
        white-space: nowrap;
        padding:0px;
        li{
            display: inline-block;
            vertical-align: top;
            font-size: 13px;
            padding-left: 20px;
        }
    }
  • 相关阅读:
    函数Sort()
    数据窗口中数值型对象的显示格式
    函数IsValid()
    20130109显示器无反应
    DropDownPictureListBox设置默认项
    大数据
    字符串函数Mid()
    Jquery获取当前元素所在表格的行列数
    关于模式窗口中treeView问题
    格式化字符串长度 超出指定长度用....代替
  • 原文地址:https://www.cnblogs.com/isdom/p/webclips032.html
Copyright © 2011-2022 走看看