• 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>
     
     
  • 相关阅读:
    从零开始学Kotlin-使用接口(7)
    从零开始学Kotlin-类的继承(6)
    从零开始学Kotlin-类和对象(5)
    从零开始学Kotlin-控制语句(4)
    从零开始学Kotlin-操作符(3)
    从零开始学Kotlin-数据类型(2)
    从零开始学Kotlin-基础语法(1)
    Java设计模式之单例模式(七种写法)
    一个简单的可控的头像列表叠加控件
    使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突
  • 原文地址:https://www.cnblogs.com/xiewangfei123/p/12989325.html
Copyright © 2020-2023  润新知