当前位置: 首页 > article >正文

视频自定义全屏功能——兼容安卓和ios

视频窗口

    <div class="relative bg-black" style="width: 100%; height: 30vh">
      <div id="currentVideo" class="w100 h100 absolute">
        <div class="absolute flex_r w100" style="bottom: 0">
          <div
            v-show="!big"
            class="pd-6"
            @click="screenClick(1)"
            style="background: rgba(0, 0, 0, 0.3)"
          >
            <el-icon style="z-index: 999">
              <FullScreen />
            </el-icon>
          </div>
          <div
            v-show="big"
            @click="screenClick(2)"
            class="pd-6 mg-10"
            style="background: rgba(0, 0, 0, 0.3)"
          >
            <el-icon style="z-index: 999">
              <FullScreen />
            </el-icon>
          </div>
        </div>
      </div>
      <div v-show="speekName" class="absolute green flex_r w100">
        {{ speekName }}在说话
      </div>
    </div>

js

// ------------------------------------ 全屏------------------------------
//全屏
let big = ref(false);

function getDeviceType() {
  const ua = navigator.userAgent.toLowerCase();

  if (/android/.test(ua)) {
    return "Android";
  } else if (/iphone|ipad|ipod/.test(ua)) {
    return "iOS";
  } else {
    return "Unknown";
  }
}

const deviceType = getDeviceType();
console.log(`当前设备类型: ${deviceType}`);

function screenClick(type) {
  // type  1 放大 2 缩小
  if (deviceType === "Android") {
    screenAndroidClick();
  } else {
    if (type == 1) {
      simulateFullscreen();
    } else {
      exitFullscreen();
    }
  }
}
// 判断当前是否处于全屏模式
function fullScreen() {
  return (
    document.fullscreenElement ||
    document.webkitFullscreenElement ||
    document.msFullscreenElement
  );
}
// 安卓的全屏和缩小
function screenAndroidClick() {
  if (fullScreen()) {
    if (document.exitFullscreen) {
      document.exitFullscreen();
    } else if (document.webkitExitFullscreen) {
      /* Safari */
      document.webkitExitFullscreen();
    } else if (document.mozCancelFullScreen) {
      document.mozCancelFullScreen();
    } else if (document.msExitFullscreen) {
      /* IE11 */
      document.msExitFullscreen();
    }
    big.value = false;
  } else {
    var elem = document.querySelector("#currentVideo");
    if (elem.requestFullscreen) {
      elem.requestFullscreen();
    } else if (elem.webkitRequestFullscreen) {
      /* Safari */
      elem.webkitRequestFullscreen();
    } else if (elem.mozRequestFullScreen) {
      elem.mozRequestFullScreen();
    } else if (elem.msRequestFullscreen) {
      /* IE11 */
      elem.msRequestFullscreen();
    }
    big.value = true;
  }
}
// ios的全屏
function simulateFullscreen() {
  // 设置全屏样式
  const element = document.getElementById("currentVideo");
  element.style.position = "fixed";
  element.style.top = 0;
  element.style.left = 0;
  element.style.width = "100vw";
  element.style.height = "100vh";
  element.style.zIndex = 9999; // 确保覆盖其他内容
  element.style.backgroundColor = "#000"; // 可选: 设置背景色
  console.log(1111111111, "ios打");
  big.value = true;
}
// ios的缩小
function exitFullscreen() {
  const element = document.getElementById("currentVideo");
  element.style.position = "";
  element.style.top = "";
  element.style.left = "";
  element.style.width = "";
  element.style.height = "";
  element.style.zIndex = "";
  element.style.backgroundColor = "";
  console.log(222222222222, "ios小啊");
  big.value = false;
}

http://www.kler.cn/a/429460.html

相关文章:

  • Docker--Docker Compose(容器编排)
  • 信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
  • 26_Redis RDB持久化
  • springboot程序快速入门
  • java集合面试题
  • (三)c#中const、static、readonly的区别
  • TensorFlow深度学习实战(1)——神经网络与模型训练过程详解
  • 前端成长之路:HTML(1)
  • 【前端】理解 JavaScript 对象属性访问的复杂性
  • 数据结构——图(遍历,最小生成树,最短路径)
  • 基于阿里云Ubuntu22.04 64位服务器Java及MySql环境配置命令记录
  • mtcnn+facenet+svm实现人脸识别系统
  • 头歌答案--爬虫实战
  • .NET Framework修复工具
  • Conda 虚拟环境,共用一个还是各用各的?
  • superset 配置Connect a database
  • golang 汉字转拼音
  • java+ssm+mysql商品管理系统
  • FreeFileSync文件夹比较同步v13.9
  • 【Unity】【VR开发】摩托车游戏开发笔记1-摩托车手把旋转时轴位移问题
  • 1-1.mysql2 之 mysql2 初识(mysql2 初识案例、初识案例挖掘)
  • QtCreator UI界面 菜单栏无法输入中文
  • 基于 AutoFlow 快速搭建基于 TiDB 向量搜索的本地知识库问答机器人
  • C# Winform 小鸟过管道小游戏源码
  • ArcGIS10.8安装教程
  • Kubesphere上搭建ELK日志收集系统