question_uniapp/pages/demo/shortVideo.nvue
2025-06-06 03:08:19 +08:00

249 lines
6.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<nav-bar type="transparentFixed"></nav-bar>
<swiper class="video_swiper" vertical :skip-hidden-item-layout="true" @change="onSwiperChange">
<swiper-item v-for="(item,index) of 5" :key="index">
<short-video
:play="swiperIndex == index"
src="http://v.weishi.qq.com/shg_1047_1047_0bf2vabpiaacamaltjoj4bpblkae6s7qf4ca.f20.mp4"
:index="index"
:progress="progress"
:progressValue="progressValue"
></short-video>
<view class="content_bottom_box">
<view class="content_goods_info">
<image class="content_goods_info_image" src="../../static/demo/ic_home_shoppingcart.png" mode="aspectFit"></image>
<text class="content_goods_info_text">圣芙蕾雅 照烧猪排109g</text>
</view>
<text class="content_user_name">@德丽莎·阿波卡利斯</text>
<text class="content_description">口感非常好吃的猪排,天命独门秘方,让大家垂涎欲滴~</text>
</view>
<view class="right_suspended">
<view class="suspended_user_info">
<image class="suspended_user_info_image" src="../../static/demo/1.jpg" mode="aspectFill"></image>
<!-- <image class="suspended_user_info_icon" src="../../static/icon/theme/ic_attention.png" mode="aspectFit"></image> -->
</view>
<view class="suspended_features_item">
<image class="suspended_features_icon" src="../../static/demo/ic_video_phone.png" mode="aspectFit"></image>
<text class="suspended_features_text">电话</text>
<!-- <text class="suspended_features_dot">89</text> -->
</view>
<view class="suspended_features_item">
<image class="suspended_features_icon" src="../../static/demo/ic_video_weixin.png" mode="aspectFit"></image>
<text class="suspended_features_text">微信</text>
<!-- <text class="suspended_features_dot">89</text> -->
</view>
<view class="suspended_features_item" @click="shareShow = true">
<image class="suspended_features_icon" src="../../static/demo/ic_video_share.png" mode="aspectFit"></image>
<text class="suspended_features_text">分享</text>
<!-- <text class="suspended_features_dot">999</text> -->
</view>
</view>
</swiper-item>
</swiper>
<view class="progress_drag" @touchstart="onTouchstart" @touchmove="onTouchmove" @touchcancel="onTouchcancel" @touchend="onTouchend"></view>
</view>
</template>
<script>
import shortVideo from "@/components/module/short_video.vue"
export default {
components:{
shortVideo,
},
data() {
return {
swiperIndex: 0,
progress: 10000,
progressValue: 0,
shareShow: false
};
},
//第一次加载
onLoad(e) {
// 隐藏原生的tabbar
// uni.hideTabBar();
let systemInfo = uni.getSystemInfoSync();
this.screenWidth = systemInfo.screenWidth;
},
//页面显示
onShow() {
// 隐藏原生的tabbar
// uni.hideTabBar();
// #ifdef APP-PLUS
uni.showModal({
title: "提示",
content: "APP体验效果不好暂没做兼容",
showCancel:false
});
// #endif
},
//方法
methods: {
onPageJump(url) {
uni.navigateTo({
url: url
});
},
onSwiperChange(e){
this.swiperIndex = e.detail.current;
},
onTouchstart(e) {
this.progress = 0;
},
// 手指触摸后移动
onTouchmove(e) {
//手指当前坐标
// #ifdef APP-NVUE
const clientX = e.changedTouches[0].screenX;
// #endif
// #ifndef APP-NVUE
const clientX = e.changedTouches[0].clientX;
// #endif
this.progress = parseInt((clientX / this.screenWidth) * 100);
},
// 手指触摸动作被打断,如来电提醒,弹窗
onTouchcancel(e) {
// #ifdef APP-NVUE
this.progressValue = parseInt((e.changedTouches[0].screenX / this.screenWidth) * 100);
// #endif
// #ifndef APP-NVUE
this.progressValue = parseInt((e.changedTouches[0].clientX / this.screenWidth) * 100);
// #endif
},
// 手指触摸动作结束
onTouchend(e) {
// #ifdef APP-NVUE
this.progressValue = parseInt((e.changedTouches[0].screenX / this.screenWidth) * 100);
// #endif
// #ifndef APP-NVUE
this.progressValue = parseInt((e.changedTouches[0].clientX / this.screenWidth) * 100);
// #endif
}
},
//页面隐藏
onHide() {},
//页面卸载
onUnload() {},
//页面下来刷新
onPullDownRefresh() {},
//页面上拉触底
onReachBottom() {},
//用户点击分享
onShareAppMessage(e) {
return this.wxShare();
}
};
</script>
<style lang="scss" scoped>
@import '@/style/mixin.scss';
.page {
background-color: #1a1b20;
width: 750rpx;
position: relative;
}
.progress_drag {
position: absolute;
bottom: 0rpx;
left: 0;
width: 100%;
padding: 15rpx 0;
z-index: 5;
}
.video_swiper {
width: 750rpx;
height: calc(100vh - var(--window-bottom));
}
.video_file {
width: 750rpx;
height: 100%;
}
.content_bottom_box {
position: absolute;
bottom: 0rpx;
width: 750rpx;
padding: 0 0rpx 40rpx 0rpx;
background-image: linear-gradient(to, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4));
align-items: flex-start;
z-index: 1;
}
.content_goods_info {
height: 49rpx;
flex-direction: row;
align-items: center;
background-color: rgba($color: #000000, $alpha: 0.4);
padding: 0 12rpx;
margin: 0 182rpx 0 40rpx;
}
.content_goods_info_image {
width: 24rpx;
height: 24rpx;
}
.content_goods_info_text {
font-size: 24rpx;
color: #ffffff;
margin-left: 12rpx;
}
.content_user_name {
font-size: 36rpx;
color: #ffffff;
font-weight: bold;
margin: 70rpx 182rpx 0 40rpx;
}
.content_description {
font-size: 28rpx;
color: #ffffff;
margin: 30rpx 182rpx 0 40rpx;
}
.right_suspended {
position: absolute;
right: 30rpx;
bottom: 280rpx;
align-items: center;
}
.suspended_user_info {
position: relative;
}
.suspended_user_info_image {
width: 120rpx;
height: 120rpx;
border: solid 2rpx #ffffff;
border-radius: 50%;
}
.suspended_user_info_icon {
width: 40rpx;
height: 40rpx;
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%) translateY(50%);
}
.suspended_features_item {
align-items: center;
position: relative;
margin-top: 80rpx;
}
.suspended_features_icon {
width: 48rpx;
height: 48rpx;
}
.suspended_features_text {
margin-top: 12rpx;
font-size: 28rpx;
color: #ffffff;
}
.suspended_features_dot {
font-size: 20rpx;
color: #ffffff;
position: absolute;
top: -10rpx;
right: 0;
transform: translateX(50%);
height: 24rpx;
background-color: #ff3682;
border-radius: 12rpx;
line-height: 24rpx;
padding: 0 9rpx;
}
</style>