原生js移动端列表无缝间歇向上滚动

在项目开发中尤其是在项目的活动页面的开发中,经常需要将用户的购买信息或中奖信息等以列表的形式展示在页面当中,并可以使其自动间歇向上滚动来达到在有限的区域内展示所有信息的目的。通常的做法是通过将列表父元素的margin-toptop在一定间隔内以负值逐渐减小一行的高度的形式来实现,那么今天,我们就通过列表父元素的scrollTop属性来实现这样的效果(其实原理都差不多)。

688074-20171215133926761-1159942779.jpg

具体代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
<meta name="format-detection" content="telephone=no">
<title>原生js移动端列表无缝间歇向上滚动</title>
<script>
//计算根节点HTML的字体大小
function resizeRoot(width){
    var deviceWidth = document.documentElement.clientWidth,
        num = width,
        num1 = num / 100;
    if(deviceWidth > num){
        deviceWidth = num;  
    }
    document.documentElement.style.fontSize = deviceWidth / num1 + "px";
}
//根节点HTML的字体大小初始化
resizeRoot(750);

window.onresize = function(){
    resizeRoot(750);
};
</script>
<style>
*{margin:0;padding:0;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
body{font-family:"Helvetica";color:#909090;background:#f1f4f7;font-size:.28rem;max-width:750px;min-width:300px;margin:0 auto;}
li{list-style-type:none;}
.scroll_tit{overflow:hidden;background:#ff8644;margin:.3rem .3rem 0;}
.scroll_tit li{float:left;height:.72rem;line-height:.72rem;color:#fff;width:33.33%;}
.scroll_tit li:nth-child(1), .scroll_content li span:nth-child(1){padding-left:.3rem;}
.scroll_tit li:nth-child(2), .scroll_content li span:nth-child(2){text-align:center;}
.scroll_tit li:nth-child(3), .scroll_content li span:nth-child(3){text-align:right;padding-right:.3rem;}
.scroll_content{background:#fff;border:1px solid #ff8644;padding:.1rem 0;margin:0 .3rem;overflow:hidden;}
.scroll_content li{overflow:hidden;height:.54rem;line-height:.54rem;font-size:.26rem;color:#333;}
.scroll_content li span{float:left;width:33.33%;}
</style>
</head>
<body>
<ul class="scroll_tit">
    <li>用户名</li>
    <li>购买金额</li>
    <li>收益率</li>
</ul>
<div class="scroll_content" id="scroll_content">
    <ul>
        <li><span>152*****066</span><span>1000</span><span>30%</span></li>
        <li><span>136*****121</span><span>1000</span><span>30%</span></li>
        <li><span>158*****356</span><span>1000</span><span>30%</span></li>
        <li><span>134*****258</span><span>1000</span><span>30%</span></li>
        <li><span>137*****122</span><span>1000</span><span>30%</span></li>
        <li><span>159*****523</span><span>1000</span><span>30%</span></li>
        <li><span>151*****885</span><span>1000</span><span>30%</span></li>
        <li><span>183*****461</span><span>1000</span><span>30%</span></li>
        <li><span>185*****052</span><span>1000</span><span>30%</span></li>
        <li><span>136*****551</span><span>1000</span><span>30%</span></li>
    </ul>
</div>
<script>
var scrollArea = document.getElementById('scroll_content');
var li = scrollArea.getElementsByTagName("li");
if(li.length < 10){
    scrollArea.style.height = (li[0].offsetHeight * li.length) + 10 + "px";
}else{
    scrollArea.style.height = (li[0].offsetHeight * 9 ) + 10 + "px";
    //滚动
    var liHeight = li[0].offsetHeight;   //单行滚动的高度
    var speed = 20;      //滚动的速度
    var timer;
    var delay = 3000;    //滚动的间隔
    scrollArea.scrollTop = 0;
    scrollArea.innerHTML += scrollArea.innerHTML;
    function startScroll(){
        timer = setInterval(scrollUp, speed);
        scrollArea.scrollTop++;
    }
    function scrollUp(){
        if(scrollArea.scrollTop % liHeight == 0){
            clearInterval(timer);
            setTimeout(startScroll, delay);
        }else{
            scrollArea.scrollTop++;
            if(scrollArea.scrollTop >= scrollArea.scrollHeight / 2){
                scrollArea.scrollTop = 0;
            }
        }
    }
    setTimeout(startScroll, delay);
}       
</script>
</body>
</html>

转载于:https://www.cnblogs.com/tnnyang/p/8042624.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现列表内容自动向上滚动的效果,可以使用原生的JavaScript来操作DOM元素和定时器。 首先,可以通过getElementById或querySelector等方法获取到包含列表内容的元素。 然后,通过获取元素的高度、内容等信息来判断是否需要滚动。 接着,可以利用定时器setInterval来不断改变元素的scrollTop属性值,实现滚动效果。 具体步骤如下: 1. 首先,获取到包含列表内容的元素: ```javascript var listContainer = document.getElementById("listContainer"); //或者使用querySelector根据CSS选择器选择元素: var listContainer = document.querySelector("#listContainer"); ``` 2. 判断是否需要滚动,比如当元素内容的高度大于元素本身的高度时才需要滚动: ```javascript if(listContainer.scrollHeight > listContainer.clientHeight){ // 需要滚动,执行后续操作 } ``` 3. 设置定时器,不断改变元素的scrollTop属性值,实现滚动效果: ```javascript var isScrolling = true; // 表示是否正在滚动 setInterval(function(){ if(isScrolling){ listContainer.scrollTop += 1; // 每次滚动1个像素,可根据需要调整滚动速度 if(listContainer.scrollTop === (listContainer.scrollHeight - listContainer.clientHeight)){ listContainer.scrollTop = 0; // 滚动到底部后,回到顶部 } } }, 50); // 每50毫秒滚动一次,可根据需要调整滚动速度 ``` 4. 可以添加一些事件来控制滚动的开始和停止,比如鼠标进入和离开时暂停和恢复滚动效果: ```javascript listContainer.onmouseover = function(){ isScrolling = false; // 鼠标进入时停止滚动 } listContainer.onmouseout = function(){ isScrolling = true; // 鼠标离开时恢复滚动 } ``` 以上就是用原生JavaScript实现列表内容自动向上滚动效果的基本步骤。根据具体需求,还可以进行一些定制和调整,比如添加缓动效果、点击按钮控制滚动等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值