小言_互联网的博客

vue多张图片实现TV端长图浏览组件

269人阅读  评论(0)

vue多张图片实现长图组件

上一篇写了vue中如何实现长图效果,实现的是单张图片,本文讲解多张图片实现长图,直接上代码:

1.布局代码如下:

<template>
  <div class="scroll_long" ref="scroll_long" v-if="isVisible">
    <div class="scroll_long_main">
      <div class="scroll_long_pic" @layout="layout">
        <img class="scroll_long_img" :src="scroll_long_1" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_2" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_3" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_4" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_5" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_6" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_7" postfix="jpg"/>
        <img class="scroll_long_img" :src="scroll_long_8" postfix="jpg"/>
        <img class="scroll_long_last_img" :src="scroll_long_9" postfix="jpg"/>
      </div>
    </div>
  </div>
</template>
 

2.遥控器按键滑动事件和距离计算处理如下:

<script>
import {getApp, KeyEvent} from "@/util";
import {ESLaunchManager} from "@extscreen/es-core";
export default {
  name: "scroll_long_img",
  data(){
    return {
      isVisible: true,
      offset: 0,
      height: 0,
      scrollEnded: false,
      scroll_long_1:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/a1f5c7e1-ee55-4aef-bc79-0d4da89381b1.jpg',
      scroll_long_2:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/2da44ac7-cb0d-42b2-9f1a-a32a57a73d16.jpg',
      scroll_long_3:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/80d0f2a6-7a7a-41d7-a043-beeef4d366da.jpg',
      scroll_long_4:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/159129f3-a254-45ea-bf6c-5edbeae25268.jpg',
      scroll_long_5:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/8d1c2369-b667-45b1-b182-cffff31d7011.jpg',
      scroll_long_6:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/d98f7378-37e5-4088-b7ed-76efee2096cd.jpg',
      scroll_long_7:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/dd82b665-a03c-4c29-8155-4d9eda46f7fb.jpg',
      scroll_long_8:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/27268dd4-93f8-428b-93ef-f23c360c7fff.jpg',
      scroll_long_9:'http://qcloudimg-moss.cp47.ott.cibntv.net/data_center/files/2022/10/24/d0c4d39b-8025-464a-94d7-823bf572611b.jpg',
    }
  },
  computed: {
    scrollAllHeight() {
      return this.height - 1080
    }
  },
  mounted() {
    this.app = getApp()
  },
  methods: {
    show() {
      this.isVisible = true
    },
    close() {
      this.isVisible = false
    },
    isShow() {
      return this.isVisible
    },
    scrollTo(offset) {
      this.$refs.scroll_long.scrollTo(0, offset, true)
    },
    layout(e) {
      this.height = e.height
    },
    onKeyDown(key) {
      console.log('about-vip-----onKeyDown', key.keyCode)
      if (key.keyCode === KeyEvent.down) {
        if (this.offset < this.scrollAllHeight) {
          this.offset += 100;
          if (this.offset > this.scrollAllHeight) {
            this.offset = this.scrollAllHeight
          }
          this.scrollTo(this.offset)
​
          this.scrollEnded = false
        } else {
          this.scrollEnded = true
        }
      } else if (key.keyCode === KeyEvent.up) {
        this.scrollEnded = false
        if (this.offset > 0) {
          if (this.offset >= 100) {
            this.offset -= 100;
          } else {
            this.offset = 0
          }
          this.scrollTo(this.offset)
        }
      }
      return true
    },
    onBackPressed() {
      ESLaunchManager.finishESPage();
    },
  },
}
</script>
 

3.css样式代码:

style scoped>
​
.scroll_long {
  width: 1920px;
  height: 1080px;
  position: absolute;
  background-color: transparent;
  overflow-y: scroll;
}
​
.scroll_long_img {
  width: 1920px;
  height: 1080px;
}
​
.scroll_long_last_img {
  width: 1920px;
  height: 1360px;
}
​
.scroll_long_pic {
  background-color: transparent;
}
</style>
​
 

4.实现效果如下:


转载:https://blog.csdn.net/u012556114/article/details/127711705
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场