我是老刘 發表於 2021-9-19 17:17:00

uni-app仿抖音APP短视频+直播+聊天实例|uniapp全屏滑动小视频+直播

<p><span style="font-size: 18px; font-family: 宋体, &quot;Songti SC&quot;; color: rgba(255, 34, 132, 1)">基于<span style="background-color: rgba(255, 255, 0, 1)">uniapp+uView-ui</span>跨端<span style="color: rgba(153, 51, 102, 1)"><strong>H5+小程序+APP</strong></span>短视频|直播项目<span style="text-decoration: underline">uni-ttLive</span>。</span></p>
<p><span style="font-size: 12px; font-family: &quot;comic sans ms&quot;, sans-serif"><strong>uni-ttLive</strong>一款全新基于uni-app技术开发的仿制抖音/快手短视频直播项目。支持全屏丝滑般<span style="background-color: rgba(204, 255, 204, 1)">上下滑动切换</span>小视频,<span style="background-color: rgba(204, 255, 204, 1)">迷你时间进度条</span>,<em>Nvue</em>解决视频层级显示,可编译兼容<span style="color: rgba(153, 51, 102, 1)">H5+小程序+APP端</span>。</span></p>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ 一览效果</strong></h3>
<p><span style="font-size: 12px">编译至 [小程序+H5+App端] 效果如下</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919113454774-496012762.png"></p>
<h3><span style="background-color: rgba(255, 255, 153, 1)"><span style="background-color: rgba(255, 255, 153, 1)">最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】</span></span></h3>
<h3><span style="background-color: rgba(204, 255, 255, 1)"><span style="background-color: rgba(204, 255, 255, 1)">Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板</span></span></h3>
<h3><span style="background-color: rgba(204, 255, 204, 1)"><span style="background-color: rgba(204, 255, 204, 1)">uniapp+vue3酒店预订|vite5+uniapp预约订房系统模板(h5+小程序+App端)</span></span></h3>
<h3><span style="background-color: rgba(251, 217, 244, 1)"><span style="background-color: rgba(251, 217, 244, 1)">uniapp+vue3聊天室|uni-app+vite4+uv-ui跨端仿微信app聊天语音/朋友圈</span></span></h3>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ 运用技术</strong></h3>
<p><span style="font-size: 12px">编辑器:HbuilderX 3.1.21</span></p>
<p><span style="font-size: 12px">框架技术:Uniapp+Vue.js+Nvue+Vuex</span></p>
<p><span style="font-size: 12px">UI组件库:uView-ui^1.8.4</span></p>
<p><span style="font-size: 12px">弹框组件:uaPopup1.1.0(基于uniapp封装多端弹框组件)</span></p>
<p><span style="font-size: 12px">自定义组件:uaNavbar+uaTabbar组件</span></p>
<p><span style="font-size: 12px">编译支持:小程序+H5+APP端</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919152223581-1891563905.gif"></p>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ 功能特性</strong></h3>
<p><span style="font-size: 12px">✅ 经典的自定义dock凸起菜单</span></p>
<p><span style="font-size: 12px">✅ 丝滑般的滑动体验</span></p>
<p><span style="font-size: 12px">✅ 迷你小视频时间进度线</span></p>
<p><span style="font-size: 12px">✅ 短视频可播放/暂停,第N个开始滑动</span></p>
<p><span style="font-size: 12px">✅ 自定义naNavbar+uaPopup组件支持Nvue视频页</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154118766-1746488037.gif"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154144696-2050374861.gif"></p>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ 目录结构</strong></h3>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154319154-680774938.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154434959-1300685209.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154455983-722306897.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154532165-423218479.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154606201-1530277190.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154731320-515266890.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154743368-907285942.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154756474-502028471.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154817530-1987647135.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154928639-1193050458.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919154942052-785878747.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919155006258-1899448799.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919155200620-67699333.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919155224672-2086588353.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919155240836-1076065178.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919155253955-1920741226.png"></p>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ 多端Navbar+Tabbar组件</strong></h3>
<p><span style="font-size: 12px"><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919161704941-465513903.png"></span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919161852537-859771924.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919162009440-1438563430.png"></p>
<p><span style="font-size: 12px">在components下新建ua-navbar和ua-tabbar组件。自HBuilderX 2.5.5起支持easycom组件模式,无需自动引入,即可使用。</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919160617017-1372849276.png"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 导航条模板 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__navbar"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__navbar-wrap"</span><span style="color: rgba(255, 0, 0, 1)"> :class</span><span style="color: rgba(0, 0, 255, 1)">="{'custom': custom, 'fixed': fixed || transparent}"</span><span style="color: rgba(255, 0, 0, 1)">
            :style</span><span style="color: rgba(0, 0, 255, 1)">="{'height': customBarH + 'px', 'padding-top': (custom ? statusBarH : 0) + 'px', 'background': bgcolor, 'color': color, 'z-index': zIndex}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //左侧 (返回) </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="action navbar-action__left"</span><span style="color: rgba(255, 0, 0, 1)"> v-if</span><span style="color: rgba(0, 0, 255, 1)">="back &amp;&amp; back!='false'"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="onBack"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">template </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="$slots.back"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">slot </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="back"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">template </span><span style="color: rgba(255, 0, 0, 1)">v-else</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="iconfont nvuefont"</span><span style="color: rgba(255, 0, 0, 1)">
                        :style</span><span style="color: rgba(0, 0, 255, 1)">="{'color': color}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{'\ue84c'}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">slot </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="backText"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">slot </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="left"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //标题 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="!search"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="navbar-title"</span><span style="color: rgba(255, 0, 0, 1)"> :class</span><span style="color: rgba(0, 0, 255, 1)">="{'center': center}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">template </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="$slots.title"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">slot </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="title"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">template </span><span style="color: rgba(255, 0, 0, 1)">v-else</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">:style</span><span style="color: rgba(0, 0, 255, 1)">="{'color': color}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{title}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //搜索框 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="search"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="action navbar-action__search"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">slot </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="search"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //右侧 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="action navbar-action__right"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">slot </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="right"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919161100724-200353677.png"></p>
<p><span style="font-size: 12px">具体的详细介绍,可参看之前的分享文章。组件已经上传至<strong>uniapp插件市场</strong>,有需要的可以一次性拿走。</span></p>
<p><span style="font-size: 12px">https://www.cnblogs.com/xiaoyan2017/p/14978408.html</span></p>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ 自定义全端弹窗组件uaPopup</strong></h3>
<p><span style="font-size: 12px">项目中使用到的弹窗均是ua-popup自定义组件实现效果。支持<strong>函数式+组件式</strong>混合调用。并且支持<strong>Nvue</strong>原生页面。</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919162420410-1501762107.gif"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ua-popup </span><span style="color: rgba(255, 0, 0, 1)">v-model</span><span style="color: rgba(0, 0, 255, 1)">="isVisibleConfirm"</span><span style="color: rgba(255, 0, 0, 1)"> shadeClose</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(255, 0, 0, 1)"> title</span><span style="color: rgba(0, 0, 255, 1)">="标题"</span><span style="color: rgba(255, 0, 0, 1)"> xclose z-index</span><span style="color: rgba(0, 0, 255, 1)">="1001"</span><span style="color: rgba(255, 0, 0, 1)">
    content</span><span style="color: rgba(0, 0, 255, 1)">="&lt;div style='color:#ff557f;padding:20px 40px;'&gt;预测未来的最好办法是自己亲手创造未来!&lt;/div&gt;"</span><span style="color: rgba(255, 0, 0, 1)">
    :btns</span><span style="color: rgba(0, 0, 255, 1)">="[
      {text: '取消', click: handleCancel},
      {text: '确定', style: 'color:#00aa00;', click: handleOk},
    ]"</span>
<span style="color: rgba(0, 0, 255, 1)">/&gt;</span></pre>
</div>
<div class="cnblogs_code">
<pre>&lt;script&gt;<span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
    methods: {
      handleOk() {
            let $ua </span>= <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$refs.uapopup
            $ua.open({
                content: </span>'人生漫漫,且行且珍惜'<span style="color: rgba(0, 0, 0, 1)">,
                customStyle: {</span>'background-color': 'rgba(170, 0, 127, 0.6)', 'color': '#fff'<span style="color: rgba(0, 0, 0, 1)">},
                time: </span>3<span style="color: rgba(0, 0, 0, 1)">,
                onClose() {
                  $ua.open({
                        type: </span>'android'<span style="color: rgba(0, 0, 0, 1)">,
                        content: </span>'&lt;div style="color:#aa007f"&gt;不要等待机会,而要创造机会&lt;/div&gt;'<span style="color: rgba(0, 0, 0, 1)">,
                        customStyle: {</span>'width': '210px'<span style="color: rgba(0, 0, 0, 1)">},
                        btns: [
                            {
                              text: </span>'关闭'<span style="color: rgba(0, 0, 0, 1)">,
                              click() {
                                    $ua.close()
                              }
                            },
                            {
                              text: </span>'确定'<span style="color: rgba(0, 0, 0, 1)">,
                              style: </span>'color:#00aa00;'<span style="color: rgba(0, 0, 0, 1)">,
                              click() {
                                    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> ...</span>
<span style="color: rgba(0, 0, 0, 1)">                              }
                            }
                        ]
                  })
                }
            })
      }
    }
}
</span>&lt;/script&gt;</pre>
</div>
<p><span style="font-size: 12px">支持20+参数自定义配置,多种弹窗动画及弹窗类型。具体的介绍,可以参看之前的分享文章。</span></p>
<p><span style="font-size: 12px">https://www.cnblogs.com/xiaoyan2017/p/14993445.html</span></p>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ uniapp短视频效果</strong></h3>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919163809211-361332444.png"></p>
<p id="1632040689714"><span style="font-size: 12px">短视频页面分为<strong>顶部菜单+视频信息区+底部dock菜单</strong>三个模块。视频区使用swiper组件实现上下滑动切换。</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="currentTab == 2"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="ua__tabcnt-recommend"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">swiper </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-swiper flex1"</span><span style="color: rgba(255, 0, 0, 1)"> :current</span><span style="color: rgba(0, 0, 255, 1)">="currentVideo"</span><span style="color: rgba(255, 0, 0, 1)"> vertical @change</span><span style="color: rgba(0, 0, 255, 1)">="handleSwipeVertical"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">swiper-item </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(item, index) in videoList"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 视频模块 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-video flex1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">video </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="vdplayer"</span><span style="color: rgba(255, 0, 0, 1)"> :id</span><span style="color: rgba(0, 0, 255, 1)">="'vdplayer' + index"</span><span style="color: rgba(255, 0, 0, 1)"> :ref</span><span style="color: rgba(0, 0, 255, 1)">="'vdplayer' + index"</span><span style="color: rgba(255, 0, 0, 1)">
                  :src</span><span style="color: rgba(0, 0, 255, 1)">="item.src"</span><span style="color: rgba(255, 0, 0, 1)">
                  :controls</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(255, 0, 0, 1)"> :loop</span><span style="color: rgba(0, 0, 255, 1)">="true"</span><span style="color: rgba(255, 0, 0, 1)"> :show-center-play-btn</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(255, 0, 0, 1)"> object-fit</span><span style="color: rgba(0, 0, 255, 1)">="fill"</span><span style="color: rgba(255, 0, 0, 1)">
                  :autoplay</span><span style="color: rgba(0, 0, 255, 1)">="index == currentVideo"</span><span style="color: rgba(255, 0, 0, 1)">
                  @play</span><span style="color: rgba(0, 0, 255, 1)">="isPlaying=true"</span><span style="color: rgba(255, 0, 0, 1)"> @timeupdate</span><span style="color: rgba(0, 0, 255, 1)">="handleTimeUpdate"</span><span style="color: rgba(255, 0, 0, 1)">
                  :style</span><span style="color: rgba(0, 0, 255, 1)">="{'width': winWidth, 'height': winHeight}"</span>
                <span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">video</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-playwrap"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="handleVideoClicked"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="!isPlaying"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-playbtn"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="iconfont"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{`\ue607`}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 信息模块 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-info flexbox flex-col"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="flexbox flex-row flex-alignb"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //左侧信息 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="vdinfo__left flex1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ltitem uavatar flexbox flex-row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">navigator </span><span style="color: rgba(255, 0, 0, 1)">url</span><span style="color: rgba(0, 0, 255, 1)">="#"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="flexbox flex-alignc flex-row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">image </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="uimg"</span><span style="color: rgba(255, 0, 0, 1)"> :src</span><span style="color: rgba(0, 0, 255, 1)">="item.avatar"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="uname"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.author}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">navigator</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="flexbox btn"</span><span style="color: rgba(255, 0, 0, 1)"> :class</span><span style="color: rgba(0, 0, 255, 1)">="{'actived': item.isFollow}"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="handleFollow(index)"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="btn-text"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.isFollow ? '已关注' : '关注'}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="item.topic"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="ltitem flexbox flex-row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="kw"</span><span style="color: rgba(255, 0, 0, 1)"> v-for</span><span style="color: rgba(0, 0, 255, 1)">="(kw, index2) in item.topic"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index2"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="lbl"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>#{{kw}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ltitem"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="desc"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.desc}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //右侧按钮 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="vdinfo__right flexbox flex-col"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="rtitem ball"</span><span style="color: rgba(255, 0, 0, 1)"> v-if</span><span style="color: rgba(0, 0, 255, 1)">="item.goods&amp;&amp;item.goods.length &gt; 0"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="handleShowGoodsPopup(item.goods)"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="icon iconfont"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{`\ue734`}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="rtitem"</span><span style="color: rgba(255, 0, 0, 1)"> :class</span><span style="color: rgba(0, 0, 255, 1)">="{'isliked': item.isLike}"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="handleLiked(index)"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="icon iconfont"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{`\ue635`}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="num"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.likeNum+(item.isLike ? 1 : 0)}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="rtitem"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="showReplyPopup = true"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="icon iconfont"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{`\ue632`}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="num"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.replyNum}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="rtitem"</span><span style="color: rgba(255, 0, 0, 1)"> @click</span><span style="color: rgba(0, 0, 255, 1)">="showSharePopup = true"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="icon iconfont"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{`\ue63b`}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="num"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.shareNum}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">swiper-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">swiper</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 底部播放进度条 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-progress"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="bar"</span><span style="color: rgba(255, 0, 0, 1)"> :style</span><span style="color: rgba(0, 0, 255, 1)">="{'width': progressBar+'px'}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p><span style="font-size: 12px">顶部导航条及底部tabbar菜单支持全屏沉浸式,并且视频底侧显示Mini播放进度条。</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919165051211-356328542.png"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 播放进度变化时触发</span>
<span style="color: rgba(0, 0, 0, 1)">handleTimeUpdate(e) {
    let { currentTime, duration } </span>=<span style="color: rgba(0, 0, 0, 1)"> e.detail
   
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.progressBar = parseInt((currentTime / duration).toFixed(2) * parseInt(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.winWidth))
},</span></pre>
</div>
<p><span style="font-size: 12px">uniapp小视频<strong>暂停/播放、上下滑动切换、单击/双击</strong>判断等操作。</span></p>
<div class="cnblogs_code">
<pre>&lt;script&gt;<span style="color: rgba(0, 0, 0, 1)">
    const app </span>=<span style="color: rgba(0, 0, 0, 1)"> getApp()
    import videoJSON from </span>'@/mock/videolist.js'<span style="color: rgba(0, 0, 0, 1)">
   
    export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
      data() {
            </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 导航栏高度</span>
<span style="color: rgba(0, 0, 0, 1)">                customBarHeight: app.globalData.customBarH,
                navbarBgcolor: </span>'#21252b'<span style="color: rgba(0, 0, 0, 1)">,
                tabbarBgcolor: </span>'#21252b'<span style="color: rgba(0, 0, 0, 1)">,
               
                tabNavLs: [
                  {label: </span>'附近动态', badge: 5<span style="color: rgba(0, 0, 0, 1)">, lists: []},
                  {label: </span>'关注'<span style="color: rgba(0, 0, 0, 1)">, lists: []},
                  {label: </span>'推荐', dot: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">, lists: []},
                ],
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 当前选项卡</span>
                currentTab: 0<span style="color: rgba(0, 0, 0, 1)">,
               
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 当前视频索引</span>
                currentVideo: 0<span style="color: rgba(0, 0, 0, 1)">,
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 视频数据</span>
<span style="color: rgba(0, 0, 0, 1)">                videoList: videoJSON,
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 视频是否播放中</span>
                isPlaying: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 点击次数</span>
                clickNum: 0<span style="color: rgba(0, 0, 0, 1)">,
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 视频播放进度条</span>
                progressBar: 0<span style="color: rgba(0, 0, 0, 1)">,
                clickTimer: </span><span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">,
               
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 屏幕宽高</span>
                winWidth: ''<span style="color: rgba(0, 0, 0, 1)">,
                winHeight: </span>''<span style="color: rgba(0, 0, 0, 1)">,
               
                popupGoodsList: [],
                showGoodsPopup: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
                showReplyPopup: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
                showSharePopup: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
            }
      },
      watch: {
            currentTab(val) {
                </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.changeTabPanel(val)
            }
      },
      computed:{
            customBarMargin() {
                </span><span style="color: rgba(0, 0, 255, 1)">return</span> `margin-top: ${<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.customBarHeight}px`
            }
      },
      created() {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 引入iconfont字体</span>
            <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef APP-NVUE</span>
            const domModule = weex.requireModule('dom'<span style="color: rgba(0, 0, 0, 1)">)
            domModule.addRule(</span>'fontFace'<span style="color: rgba(0, 0, 0, 1)">, {
                fontFamily: </span>"nvueIcon"<span style="color: rgba(0, 0, 0, 1)">,
                </span>'src': "url('/static/fonts/iconfont.ttf')"<span style="color: rgba(0, 0, 0, 1)">
            });
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 0, 0, 1)">            
            let wW </span>=<span style="color: rgba(0, 0, 0, 1)"> uni.getSystemInfoSync().windowWidth
            let wH </span>=<span style="color: rgba(0, 0, 0, 1)"> uni.getSystemInfoSync().windowHeight
            </span><span style="color: rgba(0, 0, 255, 1)">this</span>.winWidth =<span style="color: rgba(0, 0, 0, 1)"> `${wW}px`
            </span><span style="color: rgba(0, 0, 255, 1)">this</span>.winHeight =<span style="color: rgba(0, 0, 0, 1)"> `${wH}px`
      },
      methods: {
            
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 长按动态</span>
<span style="color: rgba(0, 0, 0, 1)">            handleDynamicMenu(e) {
                let points
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-NVUE</span>
                points = .clientX, e.touches.clientY]
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
                <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef APP-NVUE</span>
                points = .screenX, e.touches.screenY]
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
               
                <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$refs.uapopup.open({
                  type: </span>'contextmenu'<span style="color: rgba(0, 0, 0, 1)">,
                  follow: points,
                  btns: [
                        {text: </span>'不感兴趣'<span style="color: rgba(0, 0, 0, 1)">},
                        {text: </span>'复制'<span style="color: rgba(0, 0, 0, 1)">},
                        {
                            text: </span>'举报'<span style="color: rgba(0, 0, 0, 1)">,
                            style: </span>'color:#f00;'<span style="color: rgba(0, 0, 0, 1)">,
                            click: () </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                              </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$refs.uapopup.close()
                            }
                        },
                  ],
                })
            },
            
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> ++++++++++ { 视频播放模块 } ++++++++++ </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            getVideoCtx() {
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return this.$refs['vdplayer' + this.currentVideo]</span>
                <span style="color: rgba(0, 0, 255, 1)">return</span> uni.createVideoContext('vdplayer'+ <span style="color: rgba(0, 0, 255, 1)">this</span>.currentVideo, <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">)
            },
            
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 垂直滑动视频</span>
<span style="color: rgba(0, 0, 0, 1)">            handleSwipeVertical(e) {
                let index </span>=<span style="color: rgba(0, 0, 0, 1)"> e.detail.current
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.progressBar = 0
                <span style="color: rgba(0, 0, 255, 1)">this</span>.isPlaying = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
                let video </span>= <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getVideoCtx()
                </span><span style="color: rgba(0, 0, 255, 1)">if</span>(!video) <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">
                video.pause()
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 重新开始</span>
                video.seek(0<span style="color: rgba(0, 0, 0, 1)">)
               
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.currentVideo =<span style="color: rgba(0, 0, 0, 1)"> index
               
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 自动播放</span>
                <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.handlePlay()
            },
            
            handlePlay() {
                let video </span>= <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getVideoCtx()
                </span><span style="color: rgba(0, 0, 255, 1)">if</span>(!video) <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">
                video.play()
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.isPlaying = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
            },
            
            handlePause() {
                let video </span>= <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getVideoCtx()
                </span><span style="color: rgba(0, 0, 255, 1)">if</span>(!video) <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">
                video.pause()
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.isPlaying = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
            },
            
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 点击视频(单击/双击)</span>
<span style="color: rgba(0, 0, 0, 1)">            handleVideoClicked() {
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clickTimer &amp;&amp; clearTimeout(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.clickTimer)
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clickNum++
                <span style="color: rgba(0, 0, 255, 1)">this</span>.clickTimer = setTimeout(() =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                  </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">this</span>.clickNum &gt;= 2<span style="color: rgba(0, 0, 0, 1)">) {
                        console.log(</span>'你双击了'<span style="color: rgba(0, 0, 0, 1)">)
                  }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
                        console.log(</span>'你单击了'<span style="color: rgba(0, 0, 0, 1)">)
                        </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.isPlaying) {
                            </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.handlePause()
                        }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
                            </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.handlePlay()
                        }
                  }
                  </span><span style="color: rgba(0, 0, 255, 1)">this</span>.clickNum = 0<span style="color: rgba(0, 0, 0, 1)">
                }, </span>250<span style="color: rgba(0, 0, 0, 1)">)
            },
            
            ...
      }
    }
</span>&lt;/script&gt;</pre>
</div>
<h3 id="一项目简介" style="margin: 10px 0; padding: 0; font-size: 16px; line-height: 1.5; font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif"><strong style="margin: 0; padding: 0">◆ uniapp直播效果</strong></h3>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202109/1289798-20210919170305335-968654394.png"></p>
<p id="1632042185653"><span style="font-size: 12px">为了解决video层级高的问题,直播和小视频页面均是全屏沉浸式<strong>Nvue语法</strong>编码开发。并且项目中的uaNavbar+uaTabbar+uaPopup自定义组件兼容支持Nvue页面。</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 直播页面模板 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__container flexbox flex1 flex-col"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__scrollview flex1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-wrapls flex1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">swiper </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-swiper flex1"</span><span style="color: rgba(255, 0, 0, 1)"> :current</span><span style="color: rgba(0, 0, 255, 1)">="currentVideo"</span><span style="color: rgba(255, 0, 0, 1)"> vertical @change</span><span style="color: rgba(0, 0, 255, 1)">="handleSwipeVertical"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">swiper-item </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(item, index) in liveList.list"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 视频模块 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-video flex1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">video </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="vdplayer"</span><span style="color: rgba(255, 0, 0, 1)"> :id</span><span style="color: rgba(0, 0, 255, 1)">="'vdplayer' + index"</span><span style="color: rgba(255, 0, 0, 1)"> :ref</span><span style="color: rgba(0, 0, 255, 1)">="'vdplayer' + index"</span><span style="color: rgba(255, 0, 0, 1)">
                              :src</span><span style="color: rgba(0, 0, 255, 1)">="item.src"</span><span style="color: rgba(255, 0, 0, 1)">
                              :controls</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(255, 0, 0, 1)"> :loop</span><span style="color: rgba(0, 0, 255, 1)">="true"</span><span style="color: rgba(255, 0, 0, 1)"> :show-center-play-btn</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(255, 0, 0, 1)"> object-fit</span><span style="color: rgba(0, 0, 255, 1)">="fill"</span><span style="color: rgba(255, 0, 0, 1)">
                              :autoplay</span><span style="color: rgba(0, 0, 255, 1)">="index == currentVideo"</span><span style="color: rgba(255, 0, 0, 1)">
                              @play</span><span style="color: rgba(0, 0, 255, 1)">="isPlaying=true"</span><span style="color: rgba(255, 0, 0, 1)">
                              :style</span><span style="color: rgba(0, 0, 255, 1)">="{'width': winWidth, 'height': winHeight}"</span>
                            <span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">video</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        
                        <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //顶部导航条 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-navbar"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ua-navbar </span><span style="color: rgba(255, 0, 0, 1)">:back</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(255, 0, 0, 1)"> custom bgcolor</span><span style="color: rgba(0, 0, 255, 1)">="transparent"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                              ...
                            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">ua-navbar</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__vdplayer-toplevel flexbox flex-row"</span><span style="color: rgba(255, 0, 0, 1)"> :style</span><span style="color: rgba(0, 0, 255, 1)">="customBarMargin"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                            ...
                        </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        
                        <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 底部信息模块 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ua__liveplayer-ftinfo flexbox flex-col"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 送礼物gif </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="gifGiftData"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="lvplayer__giftips flexbox flex-row flex-alignc"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                              ...
                            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 滚动聊天消息 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">scroll-view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="lvplayer__chatinfo"</span><span style="color: rgba(255, 0, 0, 1)"> scroll-y show-scrollbar</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                              <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">block </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(msg, index2) in item.message"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index2"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                                    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-if</span><span style="color: rgba(0, 0, 255, 1)">="msg.type == 'notice'"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="item"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="text notice"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{msg.content}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                                    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-else class</span><span style="color: rgba(0, 0, 255, 1)">="row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="item"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="user"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{msg.user}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{msg.content}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                              <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">block</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">scroll-view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 底部toolbar </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="lvplayer__footbar"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                              <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="lvplayer__footbar-editor flexbox flex-row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                                    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="editor flex1"</span><span style="color: rgba(255, 0, 0, 1)"> placeholder</span><span style="color: rgba(0, 0, 255, 1)">="聊点什么..."</span><span style="color: rgba(255, 0, 0, 1)"> placeholder-style</span><span style="color: rgba(0, 0, 255, 1)">="color: #eee;"</span><span style="color: rgba(255, 0, 0, 1)"> disabled @click</span><span style="color: rgba(0, 0, 255, 1)">="handleReplyPopup(item.message)"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                                    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="btns flexbox flex-row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                                        ...
                                    </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                              <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">swiper-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">swiper</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      
      <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> //函数式弹框 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ua-popup </span><span style="color: rgba(255, 0, 0, 1)">ref</span><span style="color: rgba(0, 0, 255, 1)">="uapopup"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
      
      <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 商品弹框 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ua-popup </span><span style="color: rgba(255, 0, 0, 1)">v-model</span><span style="color: rgba(0, 0, 255, 1)">="showGoodsPopup"</span><span style="color: rgba(255, 0, 0, 1)"> title</span><span style="color: rgba(0, 0, 255, 1)">="商品"</span><span style="color: rgba(255, 0, 0, 1)"> position</span><span style="color: rgba(0, 0, 255, 1)">="bottom"</span><span style="color: rgba(255, 0, 0, 1)"> round</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">scroll-view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="popup__goodslist"</span><span style="color: rgba(255, 0, 0, 1)"> scroll-y</span><span style="color: rgba(0, 0, 255, 1)">="true"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(item,index) in popupGoodsList"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="gitem flexbox flex-row"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">image </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="gpic"</span><span style="color: rgba(255, 0, 0, 1)"> :src</span><span style="color: rgba(0, 0, 255, 1)">="item.pic"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="ginfo flex1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                        <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="title"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{{item.name}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="price"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>¥{{item.price}}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="gbtn"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">text </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="gbtn-text"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>去购买<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">scroll-view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">ua-popup</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      
      <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 评论弹框 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ua-popup </span><span style="color: rgba(255, 0, 0, 1)">v-model</span><span style="color: rgba(0, 0, 255, 1)">="showReplyPopup"</span><span style="color: rgba(255, 0, 0, 1)"> position</span><span style="color: rgba(0, 0, 255, 1)">="bottom"</span><span style="color: rgba(255, 0, 0, 1)"> :customStyle</span><span style="color: rgba(0, 0, 255, 1)">="{'background-color': 'transparent'}"</span><span style="color: rgba(255, 0, 0, 1)"> @close</span><span style="color: rgba(0, 0, 255, 1)">="closeReplyPopup"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">scroll-view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="popup__chatwrap"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                ...
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">scroll-view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">ua-popup</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      
      <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 送礼物弹框 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ua-popup </span><span style="color: rgba(255, 0, 0, 1)">v-model</span><span style="color: rgba(0, 0, 255, 1)">="showGiftPopup"</span><span style="color: rgba(255, 0, 0, 1)"> position</span><span style="color: rgba(0, 0, 255, 1)">="bottom"</span><span style="color: rgba(255, 0, 0, 1)"> round :customStyle</span><span style="color: rgba(0, 0, 255, 1)">="{'background-color': '#21252b'}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">scroll-view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="popup__giftlist"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                ...
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">scroll-view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">ua-popup</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">template</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>ok,以上就是uniapp开发短视频/直播的一些分享,希望对大家有些许帮助。<span style="font-family: &quot;Helvetica Neue&quot;, Helvetica, Verdana, Arial, sans-serif; font-size: 12px">💪</span></p>
<blockquote>
<h4><em>最后附上3个最新原创uniapp+vue3实战项目实例</em></h4>
<p><span style="font-size: 12px">uniapp-welive仿微信/抖音直播带货|uni-app+vue3+pinia短视频直播商城</span></p>
<p><span style="font-size: 12px">uniapp+vue3聊天室|uni-app+vite4+uv-ui跨端仿微信app聊天语音/朋友圈</span></p>
<p><span style="font-size: 12px">uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统</span></p>
</blockquote>
<p><img src="https://img2020.cnblogs.com/blog/1289798/202106/1289798-20210624121021498-187424774.gif"></p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    本文为博主原创文章,未经博主允许不得转载,欢迎大家一起交流 QQ(282310962) wx(xy190310)<br><br>
来源:https://www.cnblogs.com/xiaoyan2017/p/15312146.html
頁: [1]
查看完整版本: uni-app仿抖音APP短视频+直播+聊天实例|uniapp全屏滑动小视频+直播