首页 > 其他分享 >vue + 无限滚动不同高度

vue + 无限滚动不同高度

时间:2023-12-07 11:01:29浏览次数:28  
标签:CASE vue 滚动 NAME 17 16 电磁干扰 正确率 无限


 

<div class="exbox" style="height:461px;overflow:auto" @mouseenter="handleMouseEnter()" @mouseleave="handleMouseLeave()">               <div class="main rollul" ref="textList" id="caseDatasBox" v-if="caseData.length !== 0">                 <div @click="handleItem(index, item)" class="msg msgli" :class="itemIndex === index ? 'msg-active' : ''" v-for="(item, index) in caseData" :key="index">                   <div class="content">                     <div class="icon"><img style="height: 76px;" src="./images/load01.png" /></div>                     <div class="info">                       <div>                         <div class="top-box">                           <div class="err-name" :title="item.ERR_NAME - item.STAGE_CAUSE">                             {{ item.ERR_NAME }}<span v-if="item.STAGE_CAUSE !== null">-</span>{{ item.STAGE_CAUSE }}</div>                           <div style="margin-left: 10px;margin-top: -3px;"><el-rate v-model="item.CASE_RANK" disabled text-color="#ff9900"></el-rate></div>                         </div>                         <div class="bottom-box" :title="item.CASE_INTRODUCE">{{ item.CASE_INTRODUCE }}</div>                       </div>                     </div>                     <div style="position: absolute;right: 32px;top: 8px;">                       <span style="vertical-align: middle;"><img src="./images/qi.png" /></span>                       <span>{{ item.ENTRY_NAME }}</span>                     </div>                     <div v-show="btnIndex !== 2" @click="handleCollect(item)" class="icon2"></div>                   </div>                 </div>               </div>               <div class="no-data" v-if="caseData.length === 0">暂无数据</div>             </div>   data() {     return {        itemIndex: 0,   tomShow: false,        times: null,        caseData: [         {           ERR_NAME: '1电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '2电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '3电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '4电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '5电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '6电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。2023年3月16-17日,',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '7电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。',           ENTRY_NAME: '贡献人'         },         {           ERR_NAME: '8电磁干扰',           STAGE_CAUSE: '副标题',           CASE_RANK: 4,           CASE_INTRODUCE: '2023年3月16-17日,陕西省延安站数据正确率为88.65%,电磁干扰异常频次1次,故障坏图29次。2023年3月16-17日,陕西省延安站数据正确率为88.65%,',           ENTRY_NAME: '贡献人'         }       ],   }  } methods:{    handleMouseEnter() {       // 当鼠标悬停时触发的事件       clearTimeout(this.timer)     },     handleMouseLeave() {       // 当鼠标离开时触发的事件       this.startPlay()     },     startPlay() { // 无限滚动       const that = this       clearInterval(that.timer)       that.$nextTick(() => {         that.timer = setInterval(() => {           const textList = this.$refs.textList           // 使用 CSS 过渡效果滚动           textList.style.transition = 'transform 1s ease-in-out' // 增加过渡时间           textList.style.transform = 'translateY(-39%)'           setTimeout(() => {             if (that.itemIndex <= 0) {               that.itemIndex = that.caseData.length - 1             } else {               that.itemIndex--             }             // 将第一个元素移动到数组末尾             const data = that.caseData[0]             that.caseData.splice(0, 1)             that.caseData.push(data)             textList.style.transition = 'none'             textList.style.transform = 'translateY(0)'           }, 1000) // 增加定时器间隔时间,使滚动更慢         }, 10000)       })     } }   watch: {     tomShow: {       handler() {         const textList = this.$refs.textList         textList.style.transition = 'none'         textList.style.transform = 'translateY(0)'       },       deep: true     }   },   mounted () {    clearInterval(this.timer) // 鼠标移入清除定时器     // this.tomShow = !this.tomShow  // 如有其他tab点击事件放在点击事件函数中 } <style lang="stylus" scoped>     .rollul{        height:300px;        position: relative;      }         .main {           .msg {             width: 731px;             // height: 90px;             background: url('./images/color01.png');             margin-bottom: 25px;             background: #012c5c;             border-radius: 5px;             cursor: pointer;             position: relative;             transition: top 0.5s ease;             // border-bottom: 1px dashed #00ddfd;             .content {               display: flex;               position: relative;
              .icon {                 width: 80px;                 display: flex;                 justify-content: center;                 align-items: center;               }
              .info {                 max-width: 609px;                 font-size: 16px;                 margin-top: 10px;
                .top-box {                   color: #0295d7;                   // margin-bottom: 10px;                   display: flex;
                  .err-name {                     text-overflow: ellipsis;                     overflow: hidden;                     white-space: nowrap;                     max-width: 400px;                     color: #00ddfd;                   }                 }
                .bottom-box {                   line-height: 18px;                   max-width: 609px;                   margin-top: 5px;                   margin-bottom: 5px;                   font-size:15px;                   height:54px;                 }               }
              .icon2 {                 width: 19px;                 height: 18px;                 background: url('./images/add.png');                 position: absolute;                 right: 5px;                 top: 6px;               }             }           }
          .msg-active {             background: url('./images/item-active.png');             background-size: 100% 100%;             transition: top 0.5s ease;           }
          .msg:before {             content: '';             position: absolute;             left: 0px;             bottom: -15px;             right: 0px;             border-bottom: 1px dashed #00ddfd;           }         } </style>

标签:CASE,vue,滚动,NAME,17,16,电磁干扰,正确率,无限
From: https://www.cnblogs.com/jerrycoco/p/17881230.html

相关文章

  • 【布局技巧】Flex 布局下居中溢出滚动截断问题
    在页面布局中,我们经常会遇到/使用这么一类常见的布局,也就是列表内容水平居中于容器中,像是这样:<ulclass="g-contaner"><li></li><li></li></ul>ul{width:500px;display:flex;flex-direction:row;flex-wrap:nowrap;justify......
  • Vue 配置.env.pro和.env.dev文件
    1、Vue2配置1.1新建文件.env.developmentVUE_APP_BASEURL='http://localhost:8081'.env.productionVUE_APP_BASEURL='http://localhost:8082'1.2访问importVuefrom'vue'//配置全局请求地址Vue.prototype.$baseUrl=process.env.VUE_APP_BA......
  • 开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!
    你好,我是Kagol。前言从今年2月份开源以来,有不少朋友给我们TinyVue组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些共性问题,形成了一份《组件demo和api文档编写规范》为了提升开发者阅读文档的体验,从9月......
  • Vue前端+后端实现带进度条文件分片上传
    传输参数对象packagecom.deju.provider.upload.domain;importlombok.Data;importorg.springframework.web.multipart.MultipartFile;@DatapublicclassMultipartFileParam{ //文件传输任务ID privateStringtaskId; //当前为第几分片 privateintchun......
  • VUE3引入pinia配置使用
    文档:https://pinia.vuejs.org/zh/introduction.html1.引入pinnanpminstallpinia-S2.在src文件里面创建store文件article.js在main.js中引用pinnaimport{defineStore}from'pinia'//你可以对`defineStore()`的返回值进行任意命名,但最好使用store的名字,同时以......
  • Vue动画效果-商品加入购物车
    购物类app中常有商品加入购物车的动画需求主要实现代码typeFn=(...args:any[])=>voidinterfaceEvents{[name:string]:Fn[]}exportclassEventEmitter{events:Eventsconstructor(){this.events={}}on(type:string,fn:Fn){i......
  • Vue3+Vite+ElementPlus管理系统常见问题
     本文本记录了使用Vue3+Vite+ElementPlus从0开始搭建一个前端工程会面临的常见问题,没有技术深度,但全都是解决实际问题的干货,可以当作是问题手册以备后用。本人日常工作偏后端开发,因此,文中的一些前端术语描述可能不严谨,敬请谅解。重点是:这里记录的解决方案都是行之有效果的,拿来......
  • Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
    ​简介在Vue应用程序的开发中,代码压缩、加密和混淆是优化应用程序性能和提高安全性的重要步骤。VueCLI是一个功能强大的开发工具,它提供了方便的配置选项来实现这些功能。本文将介绍如何使用VueCLI配置代码压缩、加密和混淆功能,以提高应用程序的性能和安全性。一、配置代......
  • vue 的标签内属性的各使用形式
    标签内属性形式在Vue中,v-xx、@xx和:xx是不同的语法形式,具有不同的用途和语义v-xx形式:这是用于注册或使用Vue提供的内置指令或自定义指令。v-是Vue指令的前缀,后面跟着指令的名称例如,内置指令:v-if可以根据条件控制元素的显示和隐藏,v-for可以用于循环渲染列表,......
  • vue 中初始化 ref
    在Vue中,使用ref函数创建响应式的数据:对象初始化:constaddGoodsDate=ref({});constaddGoodsDate=ref({name:'',price:0});数组初始化:constappGoodsList=ref([]);布尔值初始化:constconfirmDialog=ref(false);字符串初始化:constconfirmDia......