码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2020-05-29 21:42:57      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:mat   numbers   ice   article   oat   doctype   time   document   height   

原生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实现文字上下无缝轮播、滚动效果

标签:mat   numbers   ice   article   oat   doctype   time   document   height   

原文地址:https://www.cnblogs.com/xiewangfei123/p/12989325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!