zoukankan      html  css  js  c++  java
  • JS & jQuery上下无缝滚动应用(单行或多行)

    笔者在项目中要要实现用户信息流的列表的无缝滚动效果, JS库基于jQuery其实现并不困难

    1.HTML

    <div class="scrollDiv">
      <ul class="mulitline">
        <li>这是公告标题的第一行</li>
        <li>这是公告标题的第二行</li>
        <li>这是公告标题的第三行</li>
        <li>这是公告标题的第四行</li>
        <li>这是公告标题的第五行</li>
        <li>这是公告标题的第六行</li>
        <li>这是公告标题的第七行</li>
        <li>这是公告标题的第八行</li>
      </ul>
    </div>

    2.CSS定义

    .scrollDiv{width:300px;height:100px;min-height:25px;line-height:25px;overflow:hidden}
    .scrollDiv li{height:25px;line-height:25px;}

    3.JS核心实现

    $(function(){
        //单行应用
        var _wrap=$('ul.line');//定义滚动区域
        var _interval=2000;//定义滚动间隙时间
        var _moving;//需要清除的动画
        _wrap.hover(function(){
            clearInterval(_moving);//当鼠标在滚动区域中时,停止滚动
        },function(){
            _moving=setInterval(function(){
                var _field=_wrap.find('li:first');//此变量不可放置于函数起始处,li:first取值是变化的
                var _h=_field.height();//取得每次滚动高度
                _field.animate({marginTop:-_h+'px'},600,function(){//通过取负margin值,隐藏第一行
                    _field.css('marginTop',0).appendTo(_wrap);//隐藏后,将该行的margin值置零,并插入到最后,实现无缝滚动
                })
            },_interval)//滚动间隔时间取决于_interval
        }).trigger('mouseleave');//函数载入时,模拟执行mouseleave,即自动滚动
    });
    $(function(){
        //多行应用
        var _wrap=$('ul.mulitline');//定义滚动区域
        var _interval=3000;//定义滚动间隙时间
        var _moving;//需要清除的动画
        _wrap.hover(function(){
            clearInterval(_moving);//当鼠标在滚动区域中时,停止滚动
        },function(){
            _moving=setInterval(function(){
                var _field=_wrap.find('li:first');//此变量不可放置于函数起始处,li:first取值是变化的
                var _h=_field.height();//取得每次滚动高度
                _field.animate({marginTop:-_h+'px'},600,function(){//通过取负margin值,隐藏第一行
                    _field.css('marginTop',0).appendTo(_wrap);//隐藏后,将该行的margin值置零,并插入到最后,实现无缝滚动
                })
            },_interval)//滚动间隔时间取决于_interval
        }).trigger('mouseleave');//函数载入时,模拟执行mouseleave,即自动滚动
    });

    要点:CSS定义容器的宽高&定义li的行高

    作者:Olar Tan
    出处:http://www.cnblogs.com/olartan
    ♪:没有做不到的 只有偷懒而错过的 ♪

  • 相关阅读:
    [PKUWC2018][LOJ2537]Minimax(线段树合并)
    [NOI2019][洛谷P5471]弹跳(dijkstra+KD-Tree)
    [BZOJ4770]图样(概率期望、二进制数位dp)
    [SPOJ11482][BZOJ2787]Count on a trie(广义SA+长链剖分+BIT)
    [HEOI/TJOI2016][洛谷P4094]字符串(SA+主席树)
    [BZOJ3270]博物馆(矩阵求逆)
    [NOI2016][洛谷P1117]优秀的拆分(SA)
    [NOI2018][洛谷P4770]你的名字(SAM+SA+主席树)
    设置echarts两个y轴的0点一致
    echarts中饼图或环形图的高亮效果(点击高亮/默认某一条高亮)
  • 原文地址:https://www.cnblogs.com/olartan/p/2681926.html
Copyright © 2011-2022 走看看