继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

间歇性滚动(js实现)

SCLA
关注TA
已关注
手记 2
粉丝 6
获赞 10

练练手,用js实现信息滚动效果,若有不妥之处,欢迎指正。

相关学习视频:信息滚动效果制作


页面结构

<div id="container">
        <div class="title">
            <h2>慕课网最新课程</h2>
            <a href="#">更多>> </a>
        </div>
        <div  class="content" id="box">
            <ul >
                <li><a href="#">1.学会html5 绝对的屌丝逆袭</a><span>2017-08-07</span></li> 
                <li><a href="#">2.tob页面切换效果(案例)</a> <span>2017-08-12</span></li>
                <li><a href="#">3.圆角水晶按钮制作(案例)</a> <span>2017-06-01</span></li>
                <li><a href="#">4.HTML+CSS基础课程(系列)</a> <span>2017-07-07</span></li>
                <li><a href="#">5.分页制作(案例)</a><span>2017-08-07</span></li> 
                <li><a href="#">6.导航条菜单的制作(案例)</a> <span>2017-04-13</span></li>
                <li><a href="#">7.信息列表制作(案例)</a> <span>2017-08-19</span></li>
                <li><a href="#">8.下拉菜单制作(案例)</a> <span>2017-08-16</span></li>
                <li><a href="#">9.如何实现 “新手引导” 效果</a> <span>2017-08-18</span></li>
            </ul>

        </div>
    </div>

css样式

<style type="text/css">
    *{margin: 0;padding: 0;font: 14px "宋体";}
    #container{
        margin: 0 auto;
        margin-top: 50px;
        border: 3px solid #CCC;
        border-radius: 6px; 
        width:400px;
    }
    .title{
        background: #A00;
        opacity: 0.9;
        height: 45px;
        margin: 0;
        border-radius: 4px 4px 0 0;
        position: relative;
        border-bottom: 5px solid #FFF; 
    }
    .title h2{
        display: inline-block;
        height: 30px;
        line-height: 30px;
        color:#FFF;
        font: bold 18px "微软雅黑";
        margin: 10px 0 0 30px;
    }
    a{
        text-decoration: none;
        color: #000;
    }
    .title a{   
        color:#FFF;
        font: bold 14px "微软雅黑";
        position: absolute;
        bottom: 8px;
        right: 5px;
    }
    .content{
        border-radius: 0 0 5px 5px;
        height: 150px;
        overflow: hidden; 
    }
    ul,li{
        list-style: none;
    }
    .content ul{
        margin: 0 21px;
        width: 350px;
        /*border: 1px solid red;*/
    }
    .content span{
        clear:both;
        font:  12px "微软雅黑";
        margin: 0;
        float: right;
    }
    .content ul li{

        margin-left: 10px;
        padding-top: 8px;
        overflow: hidden;

    }
    .content a{
        font: bold 12px "微软雅黑" ;
    }
    .content a:hover{
        color: red;
        font: bold 12px "微软雅黑";
    }
</style>

js代码(有待优化)

<script type="text/javascript">

var scrollCount = 2,//每次滚动的条数
    speed = 60, //滚动的速度
    displayCount = 6, //显示的条数
    delay = 2000;   //延迟时间

var timer = null,
    timeout =  null;
    json =null;
var box = document.getElementById('box');
window.onload = function(){
    //复制出一份ul来填充,以达到无缝滚动
    box.innerHTML += box.innerHTML;

    //获取li的高度
    liHeight = box.getElementsByTagName('li')[0].offsetHeight;
    //获取div的初始高度
    divHeight = box.offsetHeight;
    //如果设置显示的条数超出了初始div的高度,将其设置为能显示的最大条数。
    //显示的条数不能小于1
    if(displayCount*liHeight>divHeight || displayCount<1){
            displayCount = Math.floor(divHeight/liHeight); //默认值
    }
    //每次滚动的条数不能大于可见条数
    if(displayCount<scrollCount){
        scrollCount = displayCount;
    }

    //根据显示的条数,设置显示区div的高度
    box.style.height = divHeight-(Math.floor(divHeight/liHeight)-displayCount)*liHeight +'px';
    //开始滚动
    setTimeout('startMove()',delay);
    //鼠标移入停止滚动
    box.onmouseover = function(){
        clearInterval(timer);
        clearTimeout(timeout);
    }
    //鼠标移出继续滚动
    box.onmouseout = function(){
        startMove();
    }

}

function startMove(){
    box.scrollTop++;
    timer = setInterval(function(){
        //每次滚动指定条数后间歇一段时间
        if(box.scrollTop % (scrollCount*24) == 0 ){
            clearInterval(timer);
            timeout = setTimeout('startMove()',delay);
        }else{
            box.scrollTop++;
            //当整个ul的内容显示完,让scrollTop回到初始状态
            if(box.scrollTop >=box.scrollHeight/2){
                box.scrollTop = 0;
            }
        }
    },speed);       
}
</script>

声明:html中出现的课程只是演示需要,不代表慕课网存在或在相同时间发布过相关课程。
最后,若觉得css样式没眼看的,轻点喷......

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP