Vue 影院组件
Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:影院组件
目录
影院组件
组件渲染
组件页面
请求数据
设置样式
组件优化
增加外包装
安装
增加滚动条
盒子高度动态计算
总结
影院组件
组件渲染
组件页面
影院页面元素设置及渲染,示例如下:
<template><div><ul><li v-for="data in cinemaList" :key="data.cinemaId"><div class="left"><div class="cinema_name">{{data.name}}</div><div class="cinema_text">{{data.address}}</div></div><div class="right cinema_name"><div style="color:red">¥ {{data.lowPrice / 100}} 起</div></div></li></ul></div>
</template>
请求数据
请求数据并赋值,示例如下:
<script>
import http from '@/util/http'
export default {data () {return {cinemaList: []}},mounted () {http({url: '/api/gateway?cityId=130100&ticketFlag=1&k=8627209',headers: {'X-Host': 'mall.film-ticket.cinema.list','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777","bc":"130100"}'}}).then(res => {this.cinemaList = res.data.data.cinemas})}
}
</script>
设置样式
对页面元素进行样式美化,示例如下:
<style lang="scss" scoped>
li {padding: 0.833333rem;display: flex;justify-content: space-between;.left {width: 11.777778rem;}.cinema_text {color: #797d82;font-size: 12px;margin-top: 5px;// 超出文字隐藏overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
}
</style>
组件优化
使用betterScroll实现页面拖动滚动、拉动属性等功能对影院页面进行优化。
增加外包装
在整个组件外部div上设置类,对类设置固定高度。示例如下:
<template><div class="box"><ul><li v-for="data in cinemaList" :key="data.cinemaId"><div class="left"><div class="cinema_name">{{data.name}}</div><div class="cinema_text">{{data.address}}</div></div><div class="right cinema_name"><div style="color:red">¥ {{data.lowPrice / 100}} 起</div></div></li></ul></div>
</template>
样式设置
.box {height: 300px;overflow: hidden;
}
安装
安装命令
npm install better-scroll
增加滚动条
import BetterScroll from 'better-scroll'
等待数据获取完成 dom渲染完了,进行初始化并增加滚动条
http({url: '/api/gateway?cityId=130100&ticketFlag=1&k=8627209',headers: {'X-Host': 'mall.film-ticket.cinema.list','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777","bc":"130100"}'}}).then(res => {this.cinemaList = res.data.data.cinemasthis.$nextTick(() => {new BetterScroll('.box', {scrollbar: {fade: true}})})})
滚动条错位 使用定位解决
.box {height: 300px;overflow: hidden;position: relative;
}
盒子高度动态计算
样式中的高度设置隐藏掉
然后盒子改为动态计算后赋值
<template><div class="box" :style="{height: height}">
初始值定为0px
export default {data () {return {cinemaList: [],height: '0px'}},
计算方式:当前页面高度减去选项卡高度
mounted () {// 动态计算高度 整体高度减去底部导航栏高度this.height = document.documentElement.clientHeight - document.querySelector('footer').offsetHeight + 'px'http({url: '/api/gateway?cityId=130100&ticketFlag=1&k=8627209',headers: {'X-Host': 'mall.film-ticket.cinema.list','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777","bc":"130100"}'}}).then(res => {this.cinemaList = res.data.data.cinemasthis.$nextTick(() => {new BetterScroll('.box', {scrollbar: {fade: true}})})})}
}
总结
Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:影院组件