起因: H5端
uniapp 提供的 video
组件,在点击其全屏按钮后,进入全屏状态,视频显示部分仍然为竖屏显示,无法转换成横屏,查阅了大量的资料。
H5端不支持
了解详情video
组件,不使用官方组件就有了第一版
show-fullscreen-btn
改成false
就可以了),自己再写一个全屏展示的按钮… let el = document.getElementById('myVideo');
el.style.width = '100vh';
el.style.height = '100vw';
el.style.position = 'absolute';
el.style.top = '0';
el.style.left = '0';
el.style.zIndex = 999;
let w = document.documentElement.clientWidth || document.body.clientWidth;
let h = document.documentElement.clientHeight || document.body.clientHeigth;
let cha = Math.abs(h - w) / 2;
el.style.transform = 'translate(-' + cha + 'px,' + cha + 'px) rotate(90deg)';
看起来是全屏了,但是和视频自带的全屏有区别啊,浏览器自带的标题部分没有被遮挡,看起来有点别扭。不出意外,客户又找来了,说 视频放大横屏后有白边,去掉白边。
这可怎么是好,这 css 怎么把浏览器给覆盖掉啊,没有程序员解决不了的问题,我突然想到F11
,想出来一种方案。
video
之外,其他的样式结构)// 记录手机系统
uni.getSystemInfo({
success: (item) => {
this.phoneSystem = item.platform;
}
})
// 进入全屏
const dom = document.documentElement;
var rfs = dom.requestFullScreen || dom.webkitRequestFullScreen || dom.mozRequestFullScreen || dom
.msRequestFullscreen;
if (typeof rfs != "undefined" && rfs) {
rfs.call(dom);
};
// 退出全屏
const el = document,
cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el
.exitFullScreen,
wscript;
if (typeof cfs != "undefined" && cfs) {
cfs.call(el);
}
shadow DOM
,好像 vue3 的 挂载结点也支持这种(string,element,shadow dom). 大致意思就是,把一些dom结构和样式进行了一个封装,然后将其挂载到一个元素上,浏览器结构中不会显示它的内部结构。video、audio、input 等一些标签就是使用了这种样式进行了封装。可以通过设置 浏览器控制台的选项将其显示出来,这样,我们就对 video 样式进行了解了,再进行修改就简单了。shadow DOM
请点击这里