uniapp手機端video標簽層級過高問題

當我們想以視頻作為背景時,其他dom通過定位顯示在視頻上方,h5頁面上調試發現可以正常使用,效果如下:

當放在手機上看,會發現,僅僅剩一個視頻,本應在視頻上層的元素不見了。

經過一番排查,發現是video的層級相當高,而嘗試改改zIndex的方法均失效了。因此針對這種特殊情況,總結了一下幾種方法可供嘗試:

start 👇

方法1(官網標簽):

用uniapp官方提供的cover-view、cover-image標簽實現效果:

<view class="outter"><video src="../../static/超小視頻.mp4" :autoplay="true" :loop="true" :muted="true" :controls="false" style="width: 100vw; height: 100vw"><cover-view class="video_menu"><cover-view>hello video</cover-view><cover-view style="margin-top: 50rpx;" class="button">hi</cover-view></cover-view></video>
</view>
.button {width: calc(100% - 60rpx);text-align: center;background-color: #fff;padding: 10rpx 20rpx;color: #000;border-radius: 8rpx;
}

效果:

方法1局限性:只能使用cover-view與cover-image標簽,不適用于復雜的頁面結構。

方法2(subNVue):

使用subNVue 原生子窗體解決該問題:

官方參考:uni-app subNVue 原生子窗體開發指南 - DCloud問答

1.在當前頁面的同級創建subNVue目錄,目錄中添加nvue文件,用于書寫視頻上層的內容

2.在pages.json文件中的頁面(本例子中的頁面名是video)的style中對subNVue進行注冊,參考如下,注意id要唯一,后面要使用:

{"path": "pages/video/video","style": {"navigationBarTitleText": "uni-app","app-plus": {  "subNVues":[{  "id": "myMenu", // 唯一標識  "path": "pages/video/subNVue/myMenu", // 頁面路徑  "style": {  "position": "absolute",  "dock": "right",  "width": "500rpx",  "height": "300rpx","left": "120rpx","top": "500rpx", "background": "transparent"}  }]  } }
}

3.在創建的nvue文件中,書寫要展示的內容,并在鉤子函數中調用展示的方法。

myMenu.nvue內容參考如下:

<template><view class="video_menu"><!-- 字體顏色nvue中無法繼承,需要單獨寫一下 --><text class="video_text">hello video</text><button style="margin-top: 50rpx;" class="button">hi</button></view>
</template>
<script>export default {onReady() {const subNVue = uni.getSubNVueById('myMenu');subNVue.show('slide-in-left', 300, function(){  // 可在打開后進行一些操作...  //   });  }}
</script>
<style>.video_menu {background-color: rgba(0, 0, 0, 0.5);font-size: 32rpx;font-weight: 600;padding: 30rpx;}.video_text {color: #ffffff;}
</style>

4.進行好以上操作,無需在video.vue中做任何操作,該subNVue彈窗便可超過在頁面中展示出來,效果同上。

方法3(原生畫布):

plus.nativeObj.View()原生畫布:

(ps:這種方法不適用于pc端,因此需要手機進行調試,pc端會報 ReferenceError: plus is not defined)

此方法貌似適用于無交互的圖形、文字、圖片展示;相對較為局限。

這里tag對應的font為字體,img為圖片,rect為矩形。

詳細相關配置項可參考:HTML5+ API Reference

onLoad() {this.view = new plus.nativeObj.View('video_menu',{top: '120px', // 下面均可用變量控制left: '20px',width: '320px',height: '200px',backgroundColor: 'rgba(0, 0, 0, 0.5)',padding: '30px'},[{tag: 'font',text: 'hello video',position:{top:'30px',left:'30px',height:'50px',},textStyles: {color: '#fff',size: '32px',align: 'left'}},{tag:'rect',color:'#fff',position:{top:'100px',left:'30px',width:'80%',height:'50px',},},{tag: 'font',text: 'hi',position:{top:'100px',left:'50px',width:'90%',height:'50px',},textStyles: {color: '#000',size: '32px',align: 'left'}},]);setTimeout(() => {this.view.show();}, 300);this.view.addEventListener('click',e => {this.view.hide();},false);
}

效果:

方法4(三方庫):

最簡單粗暴的方法,使用現有的第三方庫dom-video-player

鏈接:video-player 視頻播放器 html5視頻播放器-解決頻層級、覆蓋 - DCloud 插件市場

1.下載并引入

import DomVideoPlayer from '@/components/DomVideoPlayer/DomVideoPlayer';// 。。。export default {components: {DomVideoPlayer},// 。。。

2.使用DomVideoPlayer,下方為參考:

<template><view class="outter"><!-- #ifdef H5 --><video src="https://www.runoob.com/try/demo_source/mov_bbb.mp4" :autoplay="true" :loop="true" :muted="true" :controls="false" style="width: 100vw; height: 100vw"></video><!-- #endif --><!-- #ifndef H5 --><DomVideoPlayer src="https://www.runoob.com/try/demo_source/mov_bbb.mp4"style="width: 100vw; height: 100vw":autoplay="true":controls="false":show-play-btn="false":enable-progress-gesture="false"object-fit="cover":muted="true"loop></DomVideoPlayer><!-- #endif --><view class="video_menu"><text>hello video</text><button style="margin-top: 50rpx;">hi</button></view></view>
</template>

效果:

ok!

目前了解這幾種方法,當然肯定還有其他方法,歡迎大家補充~

希望本文會對您有所幫助 ^_^ ~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93292.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93292.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93292.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MyBatis批量更新實現】按照list傳入批量更新

學習目標&#xff1a; <update id"updateModelEngineeringSpatialNode" parameterType"com.mxpt.model.manage.domain.ModelEngineeringSpatialNode">update model_engineering_spatial_node<trim prefix"SET" suffixOverrides",&…

VOFA+ 顯示數據、波形

本篇&#xff0c;以最常用的串口通信作展示&#xff0c;示范如何通過VOFA顯示數據波形。 一、VOFA 下載 VOFA 是一款面向嵌入式開發的上位機軟件&#xff0c;專注于硬件數據實時可視化與調試。它通過高效協議&#xff08;如FireWater、JustFloat&#xff09;將原始字節流轉化為…

MySQL 插入數據提示字段超出范圍?一招解決 DECIMAL 類型踩坑

MySQL 插入數據提示字段超出范圍&#xff1f;一招解決 DECIMAL 類型踩坑 在日常數據庫操作中&#xff0c;我們經常會遇到各種字段類型相關的問題。今天就來聊聊一個常見的錯誤&#xff1a;插入數據時提示字段值超出范圍&#xff0c;以實際案例帶你搞懂 MySQL 中 DECIMAL 類型的…

一周學會Matplotlib3 Python 數據可視化-繪制誤差條形圖

鋒哥原創的Matplotlib3 Python數據可視化視頻教程&#xff1a; 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib&#xff0c;學習Matplotlib圖形參數基本設置&…

JVM垃圾回收器

垃圾回收算法標記-復制缺點&#xff1a;內存利用率低&#xff0c;有一塊區域無法使用。標記-清除缺點&#xff1a;1. 效率問題 (如果需要標記的對象太多&#xff0c;效率不高)2. 空間問題&#xff08;標記清除后會產生大量不連續的碎片&#xff09;標記-整理分代收集根據對象存…

科研工具的一些注意事項

Origin Origin導入數據之后&#xff0c;可以考慮 [刪除數據連接器…] 導入數據之后&#xff0c;刪除數據連接&#xff0c;這樣當原來的文件移動之后&#xff0c;就不影響origin文件里面的數據。不然就會出現空白數據&#xff1a;當然&#xff0c;沒有數據了也可以加載出來&…

美國服務器環境下Windows容器工作負載智能彈性伸縮

在北美數據中心加速數字化轉型的今天&#xff0c;企業客戶日益重視Windows容器工作負載的智能化管理。本文將深入探討基于Azure Stack HCI&#xff08;混合云基礎設施&#xff09;的彈性伸縮方案如何突破傳統資源調度瓶頸&#xff0c;通過分析指標收集、策略配置、混合云聯動三…

歐姆龍CP系列以太網通訊實現上位機與觸摸屏監控

一、行業痛點在現代工業生產中&#xff0c;自動化生產線的控制系統的高效性與智能化程度對生產效率和產品質量有著至關重要的影響。然而&#xff0c;許多傳統工業生產線中使用的歐姆龍CP系列系列PLC以太網模塊&#xff0c;由于自身設計原因&#xff0c;并未配備以太網接口&…

【大語言模型 00】導讀

【大語言模型00】導讀&#xff1a;你的LLM全棧工程師進階之路關鍵詞&#xff1a;大語言模型、LLM、Transformer、深度學習、AI工程化、全棧開發、技術路線圖摘要&#xff1a;這是一份完整的大語言模型學習指南&#xff0c;涵蓋從數學基礎到商業落地的200篇深度文章。無論你是AI…

Business Magic

題目描述There are n stores located along a street, numbered from 1 to n from nearest to farthest. Last month, the storek had a net profit of rk . If rk is positive, it represents a profit of rk dollars; if rk is negative, it represents a loss of ?rk dolla…

在ubuntu系統上離線安裝jenkins的做法

作者&#xff1a;朱金燦 來源&#xff1a;clever101的專欄 1.安裝java環境和下載war包&#xff1a; Jenkins 依賴于 Java 環境&#xff08;OpenJDK 11 或更高版本&#xff09;&#xff1a; # 安裝OpenJDK 11和字體依賴 sudo dpkg -i openjdk-11-jre-headless_*.deb fontconfi…

圖像相似度算法匯總及Python實現

下面整理了一些圖像相似度算法&#xff0c;可根據不同的需求選擇不同的算法&#xff0c;對每種算法進行了簡單描述并給出Python實現&#xff1a; 1. 基于像素的算法&#xff1a; (1).MSE(Mean Squared Error)&#xff1a;均方誤差&#xff0c;通過計算兩幅圖像對應像素值差的平…

IO流與單例模式

單例模式 單例模式是指一個類只能有一個對象。 餓漢模式 在單例模式下&#xff0c;在程序開始&#xff08;main函數運行前&#xff09;的時候創建一個對象&#xff0c;這之后就不能再創建這個對象。 class HungryMan { public:static HungryMan* getinstance(){return &ins…

Java設計模式之依賴倒置原則使用舉例說明

示例1&#xff1a;司機駕駛汽車 問題場景&#xff1a;司機類直接依賴奔馳車類&#xff0c;新增寶馬車需修改司機類代碼。 // 未遵循DIP class Benz { public void run() { /*...*/ } } class Driver { public void drive(Benz benz) { benz.run(); } } // 遵循DIP&#xff1a;…

【Docker】openEuler 使用docker-compose部署gitlab-ce

docker-compose配置 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlab.example.comenvironment:GITLAB_OMNIBUS_CONFIG: |# Add any other gitlab.rb configuration here, each on its own lineexternal_url https://gi…

ElasticSearch 父子文檔使用簡記

一. ES parent-child 文檔簡介 ES 提供了類似數據庫中 Join 聯結的實現&#xff0c;可以通過 Join 類型的字段維護父子關系的數據&#xff0c;其父文檔和子文檔可以單獨維護。 二. 父子文檔的索引創建與數據插入 ES 父子文檔的創建可以分為下面三步&#xff1a; 創建索引 M…

【Linux】編輯器vim的使用

目錄 1. vim的基本概念 2. vim的基本使用 3. vim命令模式操作 3.1 移動光標 3.2 刪除 3.3 復制 3.4 替換 3.5 撤銷 3.6 更改 3.7 跳轉 4. vim底行模式操作 4.1 列出行號 4.2 跳到文件中的某行 4.3 查找字符 4.4 保存文件 4.5 離開vim 1. vim的基本概念 Vim&…

《零基礎掌握飛算Java AI:核心概念與案例解析》

前引&#xff1a;飛算科技是一家專注于企業級智能化技術服務的公司&#xff0c;核心領域包括AI、大數據、云計算等。其Java AI解決方案主要面向企業級應用開發&#xff0c;提供從數據處理到模型部署的全流程支持&#xff01;飛算Java AI是一款基于人工智能技術的Java開發輔助工…

Chrome騰訊翻譯插件transmart的安裝

文章目錄一、官網地址二、安裝過程1. 下載插件2. 解壓crx3, chrome安裝三、如何使用一、官網地址 騰訊翻譯插件官網 二、安裝過程 1. 下載插件 點擊上面的官網地址&#xff0c;下拉到如圖所示chrome插件位置&#xff0c;點擊立即下載 2. 解壓crx 從壓縮文件中解壓出crx文…

IOMMU的2級地址翻譯機制及多級(2~5)頁表查找

IOMMU的2級地址翻譯機制及多級(2~5)頁表查找 摘要:IOMMU是現代計算機系統中用于I/O設備(如GPU、NIC、網絡接口卡)的地址翻譯和保護機制,類似于CPU的MMU(Memory Management Unit),但專為設備DMA(Direct Memory Access,直接內存訪問)設計。它支持虛擬化環境(…