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.实现效果如下: