js、jQuery实现文字上下无缝轮播、滚动效果

原生JS版本

  1.  
    <!DOCTYPE html>
     
    <html lang="en">
     
    <head>
     
    <meta charset="UTF-8">
     
    <title>文字上下无缝轮播</title>
     
    </head>
     
    <style>
     
    * {
     
    margin: 0;
     
    padding: 0;
     
    }
     
    #container{
     
    width: 60%;
     
    margin: 100px auto;
     
    position: relative;
     
    height: 200px;
     
    overflow: hidden;
     
    }
     
    #list-wrapper{
     
    position: relative;
     
    }
     
    ul {
     
    list-style: none;
     
    background: #f8f8f8;
     
    text-align: center;
     
    padding: 0 20px;
     
    }
     
    li{
     
    height: 35px;
     
    line-height: 35px;
     
    color: #fff;
     
    }
     
    li:nth-child(odd){
     
    background: #5077aa;
     
    }
     
    li:nth-child(even){
     
    background: #fb6b06;
     
    }
     
    </style>
     
    <body>
     
    <div id="container">
     
    <div id="list-wrapper" style="top: 0">
     
    <ul class="notice-list" id="notice-list">
     
    <li>富强、*、文明、和谐、*1</li>
     
    <li>富强、*、文明、和谐、*2</li>
     
    <li>富强、*、文明、和谐、*3</li>
     
    <li>富强、*、文明、和谐、*4</li>
     
    <li>富强、*、文明、和谐、*5</li>
     
    <li>富强、*、文明、和谐、*6</li>
     
    </ul>
     
    <ul class="notice-list" id="notice-list-2">
     
    </ul>
     
    </div>
     
    </div>
     
    <script>
     
    var ROLL_SPEED = 100
     
    var noticeList1 = document.getElementById(notice-list);
     
    var noticeList2 = document.getElementById(notice-list-2);
     
    var listWrapper = document.getElementById(list-wrapper);
     
    noticeList2.innerHTML=noticeList1.innerHTML;
     
     
     
    var timer = setInterval(rollStart, ROLL_SPEED);
     
    function rollStart() {
     
    if (Math.abs(_subStr(listWrapper.style.top)) >= noticeList1.clientHeight) {
     
    listWrapper.style.top = 0px
     
    } else {
     
    var top = listWrapper.style.top
     
    listWrapper.style.top = _subStr(top)-1+px
     
    }
     
    }
     
    // 截取px前数值
     
    function _subStr(str) {
     
    var index = str.indexOf(px);
     
    if (index > -1) {
     
    return parseFloat(str.substr(0, index + 1))
     
    }
     
    }
     
    </script>
     
    </body>
     
    </html>

     

jQuery版本

  1.  
    <!DOCTYPE html>
     
    <html lang="en">
     
    <head>
     
    <meta charset="UTF-8">
     
    <title>文字上下无缝轮播</title>
     
    </head>
     
    <style>
     
    * {
     
    margin: 0;
     
    padding: 0;
     
    }
     
    #container{
     
    width: 60%;
     
    margin: 100px auto;
     
    position: relative;
     
    height: 200px;
     
    overflow: hidden;
     
    }
     
    #list-wrapper{
     
    position: relative;
     
    top: 0;
     
    }
     
    ul {
     
    list-style: none;
     
    background: #f8f8f8;
     
    text-align: center;
     
    padding: 0 20px;
     
    }
     
    li{
     
    height: 35px;
     
    line-height: 35px;
     
    color: #fff;
     
    }
     
    li:nth-child(odd){
     
    background: #5077aa;
     
    }
     
    li:nth-child(even){
     
    background: #fb6b06;
     
    }
     
    </style>
     
    <body>
     
    <div id="container">
     
    <div id="list-wrapper">
     
    <ul class="notice-list" id="notice-list">
     
    <li>富强、*、文明、和谐、*1</li>
     
    <li>富强、*、文明、和谐、*2</li>
     
    <li>富强、*、文明、和谐、*3</li>
     
    <li>富强、*、文明、和谐、*4</li>
     
    <li>富强、*、文明、和谐、*5</li>
     
    <li>富强、*、文明、和谐、*6</li>
     
    </ul>
     
    <ul class="notice-list" id="notice-list-2">
     
    </ul>
     
    </div>
     
    </div>
     
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
     
    <script>
     
    var ROLL_SPEED = 100
     
    var noticeList1 = $(#notice-list);
     
    var noticeList2 = $(#notice-list-2);
     
    var listWrapper = $(#list-wrapper);
     
    noticeList2.html(noticeList1.html())
     
    listWrapper.css(top, 0)
     
    var timer = setInterval(rollStart, ROLL_SPEED);
     
     
     
    function rollStart() {
     
    if (Math.abs(_subStr(listWrapper.css(top))) >= noticeList1.height()) {
     
    listWrapper.css(top, 0)
     
    } else {
     
    var top = listWrapper.css(top);
     
    listWrapper.css(top, _subStr(top) - 1)
     
    }
     
    }
     
     
     
    // 截取px前数值
     
    function _subStr(str) {
     
    var index = str.indexOf(px);
     
    if (index > -1) {
     
    return parseFloat(str.substr(0, index + 1))
     
    }
     
    }
     
    </script>
     
    </body>
     
    </html>

     

 
 

js、jQuery实现文字上下无缝轮播、滚动效果

上一篇:js操作属性 类操作 事件


下一篇:Kubernetes 0-1 二进制搭建K8S(三)部署Master