zoukankan      html  css  js  c++  java
  • swiper视频优化

    wxml

    <view class="detail-container" >
      <view class="det-inner" >
        <swiper class="inner-swiper" interval="3000" duration="500" vertical="true" bindanimationfinish="changeWofan" current="{{nowIndex}}">
          <block wx:key="list" wx:for="{{videoList}}">
            <swiper-item class="swiper-only">
              <view class="only-box" wx:if="{{nowIndex>index-3}}">
                <view class="only-b-back">
                  <view class="back-v">
                   <view class="back-v-pic wh flexca">
                      <image mode="aspectFill" class="wh" src="{{item.videoLogo}}"></image>
                    </view>
                    <video id="myVideo{{item.id}}" style="{{nowIndex==index?'':'opacity:0'}}" initial-time="{{0}}" class="back-v-start" src="{{item.videoUrl}}" controls="{{false}}" show-play-btn="{{false}}" show-fullscreen-btn="{{false}}" loop="{{false}}" show-center-play-btn="{{false}}" bindended="endVideoFn"  ></video>
                   
                  </view>
                  <view class="back-v-zhe flexca" catchtap="startStopBtn">
                    <view class="zhe-start-btn" wx:if="{{!videoStart&&index==nowIndex}}">
                      <image mode="aspectFill" class="wh" src="../../resources/pic/school_detail_star.png"></image>
                    </view>
                  </view>
                </view>
                <view class="only-b-btm flexa" wx:if="{{index==nowIndex}}">
                  <view class="b-btm-per">
                    <image wx:if="{{item.isSelf==1}}" mode="aspectFill" class="wh" src="../../../../image/home/zj_xnjz_logo.png"></image>
                    <image wx:if="{{item.isSelf==0}}" mode="aspectFill" class="wh" src="{{item.logo}}"></image>
                  </view>
                  <view class="b-btm-text corfff ml20">
                    <view class="f32" wx:if="{{item.isSelf==1}}" style="line-height:32rpx;">小鸟家装{{nowIndex+3>index}}</view>
                    <view class="f32" wx:else style="line-height:32rpx;">{{item.designerUserName}}</view>
                    <view class="f24 mt15" style="line-height:24rpx;">{{item.brownNum}}次播放</view>
                  </view>
                  <view class="b-btm-btn bgc2z corfff f24" catchtap="backHome">查看设计师</view>
                </view>
                <view class="only-b-rt" wx:if="{{index==nowIndex}}">
                  <view class="b-rt-pic flexca">
                    <button class="b-rt-pic-btn wh" open-type="share">
                      <image mode="aspectFill" class="wh" src="../../resources/pic/school_detail_share.png"></image>
                    </button>
                  </view>
                  <view class="b-rt-text tc">分享</view>
                </view>
                <view class="only-b-before" wx:if="{{endVideo&&index==nowIndex}}">
                  <view class="b-before-in">
                    <view class="before-in-top flexb">
                      <view class="in-top-tem" catchtap="play">
                        <view class="top-tem-box">
                          <image class="wh" src="../../resources/pic/school_detail_restart.png"></image>
                        </view>
                        <view class="tem-box-text corfff f32">
                          <view class="tc box-text-t">重播</view>
                        </view>
                      </view>
                      <view class="in-top-tem">
                        <view class="top-tem-box">
                          <button class="b-rt-pic-btn wh" open-type="share">
                            <image class="wh" src="../../resources/pic/school_detail_bieshare.png"></image>
                          </button>
                        </view>
                        <view class="tem-box-text corfff f32">
                          <view class="tc box-text-t">分享给好友</view>
                        </view>
                      </view>
                    </view>
                    <view class="before-in-dwon">
                      <view class="dwon-pic">
                        <image class="wh" src="../../resources/pic/school_detail_up.png"></image>
                      </view>
                      <view class="f26 corfff tc mt5">上滑查看更多</view>
                    </view>
                  </view>
                </view>
              </view>
            </swiper-item>
          </block>
        </swiper>
       
    
        <view class="det-back corfff flexa" wx:if="{{!cheuid}}" catchtap="backFn">
          <view class="det-back-lf">
            <image class="wh" src="../../../../image/flow/flow_rt.png"></image>
          </view>
        </view>
        <view class="det-end tc pb10" wx:if="{{nowIndex==(videoList.length-1)}}">
          <text class="cor9 f26">没有更多数据了</text>
        </view>
        <view class="det-start tc pt50" wx:if="{{nowIndex==0}}">
          <text class="cor9 f26">已经到顶了</text>
        </view>
      </view>
    
    </view>

    wxss

    page {
      width: 100%;
      height: 100%;
      background-color: #000
    }
    
    .detail-container {
      width: 100%;
      height: 100%;
    }
    .det-back{
      width: 20%;
      position: absolute;
      left: 0;
      top: 0;
      padding: 24rpx;
      padding-top: 35px;
      z-index: 20;
    }
    .det-back-lf{
      width: 20rpx;
      height: 38rpx;
      transform: rotateY(180deg);
    }
    .det-inner {
      width: 100%;
      height: 100%;
      position: relative;
    }
    
    .inner-swiper {
      width: 100%;
      height: 100%;
      position: relative;
      z-index: 1;
    }
    
    .swiper-only {
      position: relative;
    }
    
    .only-box {
      width: 100%;
      height: 100%;
      position: relative;
    }
    
    .only-b-back {
      width: 100%;
      height: 100%;
      overflow: hidden;
      position: relative;
    }
    .back-v{
      width: 100%;
      height: 100%;
      overflow: hidden;
    }
    .back-v-start{
      width: 100%;
      height: 100%;
      position: relative;
      z-index: 2;
    }
    .back-v-pic{
      position: absolute;
      left: 0;
      top: 0;
      z-index: 1;
    }
    .back-v-zhe{
      width: 100%;
      height: 100%;
      overflow: hidden;
      position: absolute;
      top: 0;
      left: 0;
      z-index: 5;
    }
    .zhe-start-btn{
      width: 100rpx;
      height: 100rpx;
      animation: danru 1s ease;
    }
    @keyframes danru {
      0% {
        opacity: 0;
      }
    
      100% {
        opacity: 1;
      }
    }
    .only-b-btm{
      position: absolute;
      left: 24rpx;
      bottom: 100rpx;
      z-index: 10;
    }
    .b-btm-per{
      width: 100rpx;
      height: 100rpx;
      background-color: #fff;
      border-radius: 50%;
      overflow: hidden;
    }
    .b-btm-btn{
      width: 165rpx;
      height: 70rpx;
      border-radius: 5rpx;
      margin-left: 45rpx;
      text-align: center;
      line-height: 70rpx;
    }
    .only-b-rt{
      width: 90rpx;
      height: 90rpx;
      position: absolute;
      right: 24rpx;
      bottom: 450rpx;
      z-index: 10;
      overflow: visible;
    }
    .b-rt-pic{
      width: 100%;
      height: 100%;
      border-radius: 50%;
      
     
    }
    .b-rt-text{
      width: 100%;
      color: #fff;
      font-size: 30rpx;
      position: absolute;
      top: 100%;
      left: 0;
      padding-top: 10rpx;
    }
    .b-rt-pic-btn{
        background-color: transparent;
      border: 1px solid transparent;
       padding: 0;
       overflow: hidden;
    }
    
    .b-rt-pic-btn:after {
      border: 0;
    }
    .only-b-before{
      width: 100%;
      height: 100%;
      position: absolute;
      left: 0;
      top: 0;
      z-index: 15;
      background-color: rgba(0,0,0,0.7);
    }
    .b-before-in{
      width: 100%;
      position: absolute;
      left: 0;
      bottom: 0;
      padding-bottom: 330rpx;
    }
    .before-in-top{
      width: 375rpx;
      margin: 0 auto;
    }
    .in-top-tem{
      width: 100rpx;
      position: relative;
    }
    .top-tem-box{
      width: 100rpx;
      height: 100rpx;
    }
    .tem-box-text{
      width: 100%;
      position: absolute;
      left: 0;
     top: 100%;
    
    }
    .box-text-t{
        padding-top: 20rpx;
      width: 200rpx;
      position: relative;
     transform: translateX(-25%);
    }
    .before-in-dwon{
      width: 375rpx;
    margin: 0 auto;
    margin-top: 110rpx;
    }
    .dwon-pic{
      width: 45rpx;
      height: 45rpx;
      margin: 0 auto;
    }
    .det-end{
      width: 100%;
      position: absolute;
      left: 0;
      bottom: 0;
      z-index: 0;
    }
    .det-start{
        width: 100%;
      position: absolute;
      left: 0;
      top: 0;
      z-index: 0;
    }

    js

    const FZ = require('../../../../util/util.js');
    const Upj = require('../../../../util/user.js');
    
    // const videoList = urls.map((url, index) => ({ id: index + 1, url }))
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        videoList: [],
        nowIndex: 0,
        videoStart: true,
        endVideo: false,
        pageNo: 2,
        chetype: '',
        checolumid: '',
        cheuid: '',
        cheVideoid: 0, //dom 的id
      },
      backFn: function() {
        wx.navigateBack({
          delta: 1
        })
    
      },
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function(opt) {
        let that = this;
        let cheuid = '';
        let jsonParam = JSON.parse(decodeURIComponent(opt.jsonParam));
        let user = wx.getStorageSync('user');
        console.log(opt)
        console.log(jsonParam)
        let chenowIndex = 0;
        if (opt.index) {
          chenowIndex = opt.index;
        }
        if (opt.cheuid) {
          cheuid = opt.cheuid;
        }
        console.log(chenowIndex)
        console.log(cheuid)
        // this.setData({ videoList: [jsonParam] })
        let videoList = jsonParam;
        for (let i = 0; i < videoList.length;i++){
          videoList[i].url = videoList[i].videoUrl;
        }
        console.log(videoList)
        this.setData({
          cheuid,
          videoList,
          nowIndex: chenowIndex,
          pageNo: (jsonParam[jsonParam.length - 1].page + 1),
          chetype: opt.type,
          checolumid: opt.columid
        })
        if (!user) {
          that.startLogin();
        }
        if (user) {
          if (chenowIndex > (jsonParam.length - 2)) {
            this.nexVideoList()
          }
          this.detailFn();
        }
      },
      backHome: function() {
        wx.switchTab({
          url: '/page/tabBar/home/index'
        })
      },
      onReady() {
    
        
        let videoList = this.data.videoList;
        let nowIndex = this.data.nowIndex;
        this.videoCtx = wx.createVideoContext('myVideo' + videoList[nowIndex].id)
        console.log(videoList)
        this.videoCtx.play()
      },
      startStopBtn() {
        let videoStart = this.data.videoStart;
        if (videoStart) {
          this.pause()
        } else {
          this.play()
        }
      },
      play() {
    
        console.log(1)
        this.videoCtx.play()
        this.setData({
          videoStart: true,
          endVideo: false
        })
      
       
      },
      detailFn() {
        let that = this;
        let nowIndex = this.data.nowIndex;
        let videoList = this.data.videoList;
        let user = wx.getStorageSync('user');
        if (!user){return}
        let datVal = {
          userId: user.id,
          contentId: videoList[nowIndex].id
        }
        console.log(datVal)
        FZ._postJ3('column/v1/columncontentdetail', datVal).then(function(data) {
          console.log(data)
          let resoult = data.data;
    
          if (resoult) {
          } else {
            if (data.message != "正常") {
              wx.showToast({
                icon: 'none',
                title: data.message,
              })
            }
          }
        })
      },
      haveEndAddfn:function(e){
    
      },
      pause() {
        console.log(2)
        this.videoCtx.pause()
        this.setData({
          videoStart: false
        })
      },
    
      changeWofan: function (e) {
        console.log(e)
        this.videoCtx.pause()
        let videoList = this.data.videoList;
        this.videoCtx = wx.createVideoContext('myVideo' + videoList[e.detail.current].id)
    
        console.log(e.detail.current)
        this.setData({
          cheVideoid: videoList[e.detail.current].id,
          endVideo: false,
          nowIndex: e.detail.current,
          videoStart: true,
        })
        this.videoCtx.play()
    
    
    
        this.detailFn();
        console.log(e.detail.current, 'dangqian')
        if (e.detail.current == (videoList.length - 2)) {
    
          console.log(this.data.pageNo)
          this.nexVideoList()
        }
    
    
      },
      // 加载更多
      nexVideoList: function() {
        let that = this;
        let pageNo = this.data.pageNo;
        let navItem = this.data.navItem;
        let user = wx.getStorageSync('user');
        let videoList = this.data.videoList;
        let chetype = this.data.chetype;
        let checolumid = this.data.checolumid;
        let nowIndex = this.data.nowIndex;
        let datVal = {
          userId: user.id,
          type: chetype,
          columnId: checolumid,
          pageSize: 10,
          pageNo: pageNo
        }
        console.log("啥情况")
        FZ._postJ3('column/v1/listcolumncontents', datVal).then(function(data) {
          console.log(data)
          let resoult = data.data;
          if (resoult) {
            if (resoult.length > 0) {
              for (let i = 0; i < resoult.length; i++) {
                resoult[i].url = resoult[i].videoUrl;
              }
              videoList = videoList.concat(resoult)
              console.log(videoList)
              pageNo++
              that.setData({
                videoList: videoList,
                pageNo
              });
            } else {
              // that.setData({
              //   pageTottomText: getApp().globalData.endText
              // });
              if (videoList.length - 1 == nowIndex) {
                wx.showToast({
                  title: '没有更多数据了',
                  icon: 'none',
                  duration: 2000
                })
              }
            }
    
    
          } else {
            if (data.message != "正常") {
              wx.showToast({
                icon: 'none',
                title: data.message,
              })
            }
          }
        })
      },
      // 视频播放结束
      endVideoFn: function() {
        console.log("播放结算")
        this.setData({
          endVideo: true
        })
      },
    
      // 初始注册--------------------------------
      // 初始注册
      startLogin: function() {
    
        let that = this;
        try {
    
          Upj._start_Login(that.data.cheuid).then((data) => {
            let resoult = data;
            if (resoult) {
              that.setData({
                user: resoult
              })
              wx.setStorageSync('user', resoult);
              // console.log("1这是成功")
              // console.log(that.data.nowIndex)
              // console.log(that.data.videoList.length - 2)
              if (that.data.nowIndex > (that.data.videoList.length - 3)) {
                // console.log("2这是成功")
                that.nexVideoList()
              }
              this.detailFn();
            } else {
              wx.showToast({
                title: data.message,
                icon: 'none',
                duration: 3000
              })
    
            }
    
          }).catch((data) => {
            wx.showToast({
              title: data.message,
              icon: 'none',
              duration: 3000
            })
          })
        } catch (err) {
          console.log(err)
        }
      },
      onShareAppMessage: function(e) {
        let that = this;
        let user = wx.getStorageSync('user');
        let cityon = wx.getStorageSync('cityon');
        let shareTitle = '';
        let videoList = this.data.videoList;
        let nowIndex = this.data.nowIndex;
        let imageUrl = '';
        console.log("转发数据")
        console.log()
    
        if (videoList[nowIndex].videoLogo) {
          imageUrl = videoList[nowIndex].videoLogo;
        }
        try {
    
          return {
            title: shareTitle,
            imageUrl: imageUrl,
            path: '/page/school/pages/study/detail?cheuid=' + user.id + "&jsonParam=" + encodeURIComponent(JSON.stringify(videoList)) + '&index=' + nowIndex + '&type=' + this.data.chetype + '&columid=' + this.data.checolumid,
            success: function(res) {
              console.log(res)
            },
            fail: function(res) {}
          }
        } catch (e) {
          console.log(e)
        }
      },
    })
  • 相关阅读:
    斐波那契数列实现方式,以及递归和非递归时间对比
    月份与季节
    时针与分针夹角
    二叉树非递归遍历 以及二叉树节点删除思路
    向左向右 —折半查找(二分法)
    c语言之字符串及字符集简介
    c语言之排序
    C语言代码页 预处理 和宏 结构体 共用体 枚举 指针简绍
    C语言之函数调用约定,递归,数组简介
    C语言之条件判断
  • 原文地址:https://www.cnblogs.com/dianzan/p/12165809.html
Copyright © 2011-2022 走看看