zoukankan      html  css  js  c++  java
  • requestAnimationFrame 实现跑马灯

    html :

    <!-- 公告 -->
            <div class="notice-container" v-show="noticeList.length">
              <span class="notice-icon"></span>
              <div class="notice-items" ref="noticeBox">
                <div class="notice-items-inner" ref="noticeInner">
                  <p v-for="(item, index) in noticeList" :key="index">{{item.noticeContent}}</p><p>{{noticeList.length && noticeList[0].noticeContent}}</p> // 两p标签必须粘合一起
                </div>
              </div>
            </div>
    

    js:

    // 公告的走马灯
        initNoticeScroll () {
          let boxWidth = this.$refs.noticeBox.offsetWidth
          let innerWidth = 0
          let child = this.$refs.noticeInner.childNodes
          child.forEach(item => {
            innerWidth += item.offsetWidth
          })
          innerWidth += boxWidth * (child.length - 1)
          if (innerWidth > boxWidth) {
            let padding = 0
            let animation = () => {
              padding -= 1
              this.$refs.noticeInner.style.cssText = `transform: translate3d(${padding}px, 0, 0)`
              if (padding === -(innerWidth - child[0].offsetWidth)) {
                padding = 0
                this.$refs.noticeInner.style.cssText = `transform: translate3d(${padding}px, 0, 0)`
              }
              requestAnimationFrame(animation)
            }
            animation()
          }
        },

    css:

    .notice-container {

    opacity: 0.6;
    background: #141F33;

          font-size: 12px;
          color: #3E4759;
          height: 30px;
          overflow: hidden;
          box-sizing: border-box;
           100%;
          display: flex;
          align-items: center;
          position: relative;
        color:#fff;
          .notice-icon {
            display: block;
            margin-left: 10px;
            flex-shrink: 0;
             27px;
            height: 27px;
            background: url("../assets/home/icon_home_gg.png") no-repeat;
            background-size: 100% 100%;
          }
    
          .notice-items {
            margin: 0 0 0 6px;
            flex: 1;
            display: flex;
            overflow: hidden;
            height: 30px;
    
            .notice-items-inner {
              display: flex;
              align-items: center;
               100%;
    
              p {
                flex-shrink: 0;
                margin-right: 100%;
                white-space: nowrap;
              }
            }
          }
        }

    效果:

    注销、停止动画:https://www.cnblogs.com/jiangxiaobo/p/5943755.html

  • 相关阅读:
    开发时需要安装的插件
    update svn cache 慢
    eclipse cut copy paste plugin
    eclipse怎么自定义工具栏
    Eclipse Class Decompiler——Java反编译插件(转)
    2014年下半年软考系统架构设计师考试试题
    IT痴汉的工作现状36-做好准备再上路
    JSP简单练习-EL获取表单数据
    !HDU 1078 FatMouse and Cheese-dp-(记忆化搜索)
    iOS百度地图
  • 原文地址:https://www.cnblogs.com/wilsunson/p/12123677.html
Copyright © 2011-2022 走看看