可视区外的div快速滚动到可视区上方

这段代码展示了一个Vue.js组件,用于在事件列表中遍历div元素。当点击某个div时,它会应用样式selectEvent并使用scrollIntoView方法平滑滚动到该元素,确保其在视口内可见。同时,内容根据item的数据动态渲染,包括事件内容、等级、类型和上报人员信息,部分过长的内容通过el-tooltip组件进行省略显示。

      

scrollIntoView

  

 

// 遍历出来的div 
<div
                v-for="(item, index) in eventList"
                :key="index"
                :class="eventId === item.id ? 'selectEvent' : 'eventItem'"
                @click="openDetails(item.id, 'left')"
              >
                <div
                  class="eventTitle"
                  :style="eventId === item.id ? 'font-weight: bold;' : ''"
                >
                  {{
                    item.content.length < 16
                      ? item.content
                      : item.content.substr(0, 16) + "..."
                  }}
                </div>
                <div style="display: flex">
                  <div class="eventTips">
                    事件等级 :<span class="eventContent">{{
                      item.levelName
                    }}</span>
                  </div>
                  <div class="eventTips">
                    事件类型 :<span
                      v-if="item.typeName !== null && item.typeName.length < 5"
                      class="eventContent"
                      >{{ item.typeName }}</span
                    >
                    <el-tooltip
                      v-else
                      class="item"
                      effect="dark"
                      :content="item.typeName"
                      placement="top"
                    >
                      <span class="eventContent"
                        >{{
                          item.typeName ? item.typeName.substring(0, 4) : ""
                        }}...</span
                      >
                    </el-tooltip>
                  </div>
                  <div class="eventTips">
                    上报人员 :<span
                      v-if="item.reportPerson.length < 5"
                      class="eventContent"
                      >{{ item.reportPerson }}</span
                    >
                    <el-tooltip
                      v-else
                      class="item"
                      effect="dark"
                      :content="item.reportPerson"
                      placement="top"
                    >
                      <span class="eventContent"
                        >{{ item.reportPerson.substring(0, 4) }}...</span
                      >
                    </el-tooltip>
                  </div>
                </div>
                <div class="eventBottom">
                  <!-- 左侧列表的 指挥调度 按钮 -->
                  <span class="eventContent">{{ item.createTime }}上报</span>
                  <div @click.stop="goDetailsItem(item.id)">
                    <i class="iconfont if-biaodancaozuo-shenshu" />
                    指挥调度
                  </div>
                </div>
              </div>

 看下面这一块就可以了 

       /* 将可视区外的div移动到可视区范围内 */
        this.$nextTick(() => {
          let selectEventDom = document.querySelector('.selectEvent')
          selectEventDom.scrollIntoView({ behavior: 'smooth' });
        })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值