文字很多的横向滚动处理

思路如下:文字很多的话 ,计算下要显示的文字的长度,根据文字长度来计算滚动时间和滚动偏移的位置

 mounted 中设置:



//计算滚动文字的长度
const animateTextlength = this.meeting.importantInfo.toString().replace('<span style="color:red;">', '').replace('</span>', '').trim().length;
//因为文字的大小是 18px, 所以这里是文字的数量 * 18, + 200 是为了多给点长度 
const animateTextWidth = '-' + (animateTextlength * 20 + 200) + 'px';
document.body.style.setProperty('--animateTextlength', animateTextWidth);

//如果文字数量大于80个字,那么就延长滚动时间,基础滚动时间为23秒,超出每5个字增加一秒
if (animateTextlength > 80) {
  const animateTime = 23 + Math.ceil((animateTextlength - 80)/5) + 's';
  document.body.style.setProperty('--animateTime', animateTime);
}

css 设置

.animate {
        max-width: 100%;
        line-height: 30px;
        display: inline-block;
        white-space: nowrap;
        animation: var(--animateTime, 23s) wordsLoop linear infinite normal;
      }

      @keyframes wordsLoop {
        0% {
          transform: translateX(200px);
          -webkit-transform: translateX(200px);
        }
        100% {
          transform: translateX(var(--animateTextlength, -100%));
          -webkit-transform: translateX(var(--animateTextlength, -100%));
        }
      }

      @-webkit-keyframes wordsLoop {
        0% {
          transform: translateX(200px);
          -webkit-transform: translateX(200px);
        }
        100% {
          transform: translateX(var(--animateTextlength, -100%));
          -webkit-transform: translateX(var(--animateTextlength, -100%));
        }
      }

HTML

<div class="animate" v-html="meeting.importantInfo"></div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值