|
|
请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2022-12-21 19:42 编辑
可能很多人都知道F11在浏览器中的作用:全屏浏览。其实这个全屏是伪全屏,它仅仅将浏览器的顶部隐藏掉,保留滚动条(如有)且页面元素保持原样。这不是我们感兴趣的,我们要讨论的是帖子的全屏显示,在该效果之下不仅隐藏浏览器的头部,还能放大主元素到屏幕的四个边角。
我们要实现的功能,在JS里称为“全屏元素”,fullscreenElement,我们可以用它检测 document(文档)是否处于某个元素的全屏显示状态,换言之,是否拥有正在全屏显示的元素:
let fs; //声明 fs 变量用以装载页面是否处于全屏显示某个元素的状态
if(document.fullscreenElement !== null) {
fs = true;
} else {
fs = false;
}
上面的代码,用于检测 document 是否处于元素级别的全屏显示状态,当存在元素处于全屏显示状态,那么, document.fullscreenElement 的值指向该元素本身(如<div id=...></div>),否则,null,所以,上面代码的主要任务是检测 document 是否存在全屏显示子元素的状况,并将值传给 fs 变量。
问题是,它在什么时候进行检测,是点击按钮的时候吗?不,这将行不通:全屏下浏览器对热键的绝对保护,致使很多信息拿不到。幸运的是,JS有一个 fullscreenchange 事件,上面的代码通过对这个事件的监听就可以拿到当前 document 现在是否处于全屏显示元素状态:
let fs = false;
document.addEventListener("fullscreenchange", () => {
if(document.fullscreenElement !== null) {
fs = true;
} else {
fs = false;
}
});
剩下的事情就好办了:可以设定一个按钮,其 id 为我们设定的(如 id="btn888"),按钮单击操作针对其(id="papa")的父元素。上面的变量 fs 是点击该按钮的依据:
btn888.onclick = () => fs ? document.exitFullscreen() : papa.requestFullscreen();
其中:① exitFullscreen() 方法是基于 document 级别,它表示 document 退出全屏显示元素的状态;② requestFullscreen() 方法基于元素级别的,元素请求全屏显示,上例中,是 papa 这个元素请求进入全屏状态。
btn888 应该有按钮的字面名称,比如不是全屏时”进入全屏“、是全屏时”退出全屏“,这样才能营造友好的交互场面。这个处理机制放在对 document 的 fullscreenchange 监听事件里就好,对应 fs 的值来部署它。
一张图片,一个 div,都是可全屏显示的对象。二楼的例子是基于 div 的,它用一张图片做背景,看上去好像只是一张图片。
|
评分
-
| 参与人数 2 | 威望 +100 |
金钱 +200 |
经验 +100 |
收起
理由
|
小辣椒
| + 50 |
+ 100 |
+ 50 |
很给力! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|