最近有个用vue写的日历组件,日历内显示的内容有超长须要滚动显示的:

次要的思路就是:
1、监听内容变动
2、判断内容长度与父级宽度
3、给内容增加animation


html

<div class="calendar_status">  <div>{data.defvalue.text}</div>     <div class="calendar_status_text">{data.defvalue.value.status}   </div></div>

css

 /* 单元格异样文字款式 */  .calendar_status_text {    color: red;    overflow: hidden;    white-space: nowrap;  } /* 超长滚动显示 */  .calendar_status {    overflow: hidden;    /* 减少scroll类 */    & > .scroll {      text-overflow: unset;      overflow: visible;      animation: move 4s linear infinite;    }  }  @keyframes move {    0% { transform: translateX(100%); }    100% { transform: translateX(-100%); }  }

js

    checkScroll () {      this.$nextTick(() => {        // 获取选中元素        let selectedItems = [...document.querySelectorAll('.calendar_status')]        selectedItems.forEach(item => {          let child = item.querySelector('.calendar_status_text')          if (child.scrollWidth > item.offsetWidth) { // 判断child文字宽度            child.classList.add('scroll')          } else {            child.classList.remove('scroll')          }        })      })    },

参考文档:https://www.jianshu.com/p/2f8...