前端全屏方法封装

一、引言

全屏功能在很多项目中会使用到,例如弹框全屏预览、附件预览区域全屏等场景。接下来我们对全屏的开启、关闭以及是否在全屏中等方法进行简单封装。

效果图

二、拿取兼容方法

对于全屏在项目中使用来说,需要的需求功能大致就是,可以针对某个DOM元素去全屏,而不是针对整个可视区域去全屏。再则就是全屏和取消全屏即可。 对于现在写文章来说,一大部分信息来源,都是来自AI啦。对于一些基础都熟悉的东西,直接拿过来使用即可。所以向gpt问一下。全屏中我们要的基础信息。我们的目的的整合和封装🍺🍺

1.requestFullscreen兼容写法

scss

复制代码

获取元素 var element = document.getElementById('your-element'); // 尝试使用标准的 requestFullscreen 方法 if (element.requestFullscreen) {   element.requestFullscreen(); }  // 兼容 Webkit else if (element.webkitRequestFullscreen) {   element.webkitRequestFullscreen(); }  // 兼容 Moz else if (element.mozRequestFullScreen) {   element.mozRequestFullScreen(); }  // 兼容 IE else if (element.msRequestFullscreen) {   element.msRequestFullscreen(); }

2.js结束当前浏览器全屏,需要兼容主流浏览器

javascript

复制代码

退出全屏的函数 function exitFullScreen() {   if (document.exitFullscreen) {     document.exitFullscreen();   }    // 兼容 Webkit   else if (document.webkitExitFullscreen) {     document.webkitExitFullscreen();   }    // 兼容 Moz   else if (document.mozCancelFullScreen) {     document.mozCancelFullScreen();   }    // 兼容 IE   else if (document.msExitFullscreen) {     document.msExitFullscreen();   } } // 示例用法 exitFullScreen();`

3.js 判断当前浏览器是否正在全屏中,需要兼容主流浏览器

javascript

复制代码

判断是否处于全屏状态的函数 function isFullScreen() {   return (     document.fullscreenElement ||     document.webkitFullscreenElement ||     document.mozFullScreenElement ||     document.msFullscreenElement   ); } // 示例用法 if (isFullScreen()) {   console.log("当前浏览器处于全屏状态"); } else {   console.log("当前浏览器不处于全屏状态"); }

三、代码封装

这些代码,看着就挺难受了,差不多像屎山啦。我们来简单封装一下。 对于这种if else一般解决的方案都是用Map或者数组来。

我们把三种情况下的方法用数组装起来。

ini

复制代码

打开全屏兼容判断 const openNames = [ "requestFullscreen",  "webkitRequestFullscreen",  "mozRequestFullScreen",  "msRequestFullscreen" ]; //   取消全屏兼容判断 const exitNames = [ "exitFullscreen",  "webkitExitFullscreen",  "mozCancelFullScreen",  "msExitFullscreen" ]; //   是否在全屏中兼容判断 const isRunNames = [ "fullscreenElement",  "webkitFullscreenElement",  "mozFullScreenElement",  "msFullscreenElement" ];

从上面可以发现,如果对应的元素上有这个属性,就可以执行就行。所以我们写一个公共的在对应的对象上面找是否有这个属性方法。

javascript

复制代码

在对象中是否存在对应属性 const getPropertyName = (names, target) => {   return names.find((name) => name in target); };

到了这里,那想要执行全屏和取消全屏,判断全屏的都简单了。

3.1开启全屏

scss

复制代码

查看当前可以全屏的函数名 const getFullScreenName = () => {   return getPropertyName(openNames, document.documentElement) } // 开启全屏 const fullStart = (ele) => {   getFullScreenName() && ele[getFullScreenName()](); };

3.2判断当前浏览器是否处于全屏中

javascript

复制代码

 查看当前正在全屏中的函数名 const runFullScreenName = () => {   return getPropertyName(isRunNames, document) } // 判断当前浏览器是否处于全屏中 const isFullScreen = () => {   const status = document[runFullScreenName()] || null   return !!status }`

3.3结束全屏

scss

复制代码

查看当前可以取消全屏的函数名 const exitFullScreenName = () => {   return getPropertyName(exitNames, document) } // 结束全屏 const exitFullScreen = () => {   exitFullScreenName() && document[exitFullScreenName()](); }`

四、使用

所以,只需要判断当前全屏状态,来开启和关闭。

ini

复制代码

`const btn = document.querySelector(".btn"); const p = document.querySelector(".fullDom"); btn.onclick = function () {   isFullScreen() ? exitFullScreen() : fullStart(p) };`

这样就完成啦🎉🎉🎉

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值