加载中...

UNIAPP----video标签层级问题的三种解决方法

UNIAPP----video标签层级问题的三种解决方法

uniapp的app端,video标签层级过高,无法轻易被遮盖。

三种解决方法,真机测试没问题。代码复制即可。

1.cover-view或者cover-image,放在video标签内使用,子绝父相

缺点:只能改变cover-view样式,无法嵌套view。具体查看官网讲解。

  1. <template>
  2. <view>
  3. <video style="position: relative;" src="https://haokan.baidu.com/v?pd=wisenatural&vid=18309277609015821003">
  4. <cover-view style="width: 100px;height: 100px;background-color: #fff;position: absolute;left: 0;"></cover-view>
  5. </video>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. }
  13. },
  14. methods: {
  15. }
  16. }
  17. </script>
  18. <style>
  19. </style>

2.subnvue 创建原生子窗体,放在当前页面下,放好位置即可。

首先创建目录页面,nvue文件。最好放入同级。

New Image

 New Image

 完整代码:

实验页面

  1. <template>
  2. <view>
  3. <video src="https://haokan.baidu.com/v?pd=wisenatural&vid=18309277609015821003">
  4. </video>
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. }
  12. },
  13. onLoad() {
  14. const subNvue = uni.getSubNVueById(''subNvue''); // 这个id是pages.json下绑定的唯一id
  15. // subNvue.hide();//标识初始隐藏
  16. //show方法显示,
  17. // 下面是初始创建位置
  18. // 第一个参数子窗体动画效果
  19. // 第二个参数持续时间
  20. // 第三个参数修改样式函数
  21. subNvue.show(''none'', 0, () => {
  22. subNvue.setStyle({
  23. top: ''90px'',
  24. right: ''20px'',
  25. width: ''90px'',
  26. height: ''114px''
  27. });
  28. });
  29. },
  30. methods: {
  31. }
  32. }
  33. </script>
  34. <style>
  35. </style>

子窗体代码

  1. <template>
  2. <view>
  3. <text style="font-size: 30px;color: #f00;">这是子窗体</text>
  4. </view>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. }
  11. },
  12. methods: {
  13. }
  14. }
  15. </script>
  16. <style>
  17. </style>

pages.json

  1. {
  2. "path" : "pages/index/aaa",
  3. "style" :
  4. {
  5. "navigationBarTitleText": "",
  6. "enablePullDownRefresh": false,
  7. "app-plus": {
  8. "subNVues": [
  9. {
  10. "path": "pages/index/subNvue/subNvue",//路径地址
  11. "id": "subNvue",//唯一id,一个页面下最多三个最好,否则影响性能
  12. // "type": "popup" 如果是弹窗可开启
  13. //这个是初始样式,当然初始想隐藏的话,这个不重要
  14. "style": {
  15. "width": "100%",
  16. "height": "100px"
  17. }
  18. }
  19. ]
  20. }
  21. }
  22. }

3.plus.nativeObj.View()  绘制原生画布,有点击事件。不属于dom,可以覆盖webview和各种原生控件

首先onload时创建画布。

完整代码

  1. <template>
  2. <view>
  3. <video src="https://haokan.baidu.com/v?pd=wisenatural&vid=18309277609015821003">
  4. </video>
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. view:''''
  12. }
  13. },
  14. onLoad() {
  15. this.view = new plus.nativeObj.View(
  16. ''viewHotFixView'',
  17. {
  18. top: ''132px'', // 下面均可用变量控制
  19. left: ''0'',
  20. width: ''100%'',
  21. height: ''600px'',
  22. position: ''dock''
  23. },
  24. [
  25. {
  26. tag: ''img'',
  27. id: ''bgroundicon'',
  28. position: {// 下面均可用变量控制
  29. top: ''0px'',
  30. left: ''0px'',
  31. width: ''100px'',
  32. height: ''100px''
  33. },
  34. src: ''/static/logo.png''
  35. }
  36. ]
  37. );
  38. setTimeout(() => {
  39. this.view.show();
  40. }, 300);
  41. this.view.addEventListener(
  42. ''click'',
  43. e => {
  44. this.view.hide();
  45. },
  46. false
  47. );
  48. },
  49. methods: {
  50. }
  51. }
  52. </script>
  53. <style>
  54. </style>

将new plus.nativeObj.View对象赋给this.view

也可以直接写入data前面赋值。不过那样就不能用变量控制宽度。

离开页面记得隐藏,  hide()方法,否则一直在页面上,级别很高。

内置浏览器等无法看到,真机调试没问题。

三种方法基本使用,多看看代码实验几次就知道适合哪种。