HTML5在手机端实现视频全屏展示方法


Posted in HTML / CSS onNovember 23, 2020

最近做项目,遇到一个问题,在手机上要实现视频的全屏播放功能。测试了很久,终于找到解决办法。

第一种:将视频放大来控制。

视频在播放的时候,全屏是根据高度来的,如果设置视频 video 标签的宽度是 100% 高度是 110% ,可以实现全屏,超过是溢出隐藏就可以了。

确定:手机屏幕尺寸不固定,这个高度110%不好确定。

第二种:使用 object-fit 来解决

直接上代码:

<video preload='auto' id='video'  src=''  webkit-playsinline='true' playsinline='true'x-webkit-airplay='true' x5-video-player-type='h5' x5-video-player-fullscreen='true'x5-video-ignore-metadata='true'  width='100%' height='100%'><p> 不支持video</p> </video>

编译后在页面内部播放视频而不会跳出使用系统播放器全屏播放视频了。而且z-index属性也可以正常定义,使其他元素可以覆盖在视频上面。

css:保持画面的原有比例

#my-video{
    object-fit: cover;
    object-position: center center;

简单的demo实现:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>视频播放器</title>
<style type="text/css">
*{margin:0px; padding:0px;}
.app{width: 100%; height:100%; position: absolute; top:0px; right:0px; bottom: 0px; left:0px; overflow: hidden;}
.video{width: 100%; height: 100%;}
#my-video{object-fit: cover; object-position: center center;}
</style>
</head>
<body>
<div id="app" class="app">
    <video preload='auto' id='my-video' ref="video" :src="videoUrl" @click="player" loop autoplay="autoplay" webkit-playsinline='true' playsinline='true'x-webkit-airplay='true' x5-video-player-type='h5' x5-video-player-fullscreen='true'x5-video-ignore-metadata='true'  width='100%' height='100%'><p> 不支持video</p> </video>
</div>
</body>
<script type="text/javascript" src="./js/vue.min.js"></script>
<script type="text/javascript">
// vue 解析
var Application = new Vue({
    el: "#app",
    data: {
        videoUrl:'',
        video:null,
    },
    mounted: function(){
        this.videoUrl = "http://gamaru.wpgcms.com/media/file/movie/dkSdfdqur5uQKV5p.mp4";
        this.video = this.$refs.video;
    },
    methods: {
        player:function(){
            console.log(this.video.clientWidth);
            console.log(this.video.clientHeight);
            if(this.video.paused){
                // 播放
                this.video.play();
            }else{
                // 暂停
                this.video.pause()
            };            
        }
    }
});
</script>
</html>

解释下:object-fit

  • fill: 中文释义“填充”。默认值。替换内容拉伸填满整个content box, 不保证保持原有的比例。
  • contain: 中文释义“包含”。保持原有尺寸比例。保证替换内容尺寸一定可以在容器里面放得下。因此,此参数可能会在容器内留下空白。
  • cover: 中文释义“覆盖”。保持原有尺寸比例。保证替换内容尺寸一定大于容器尺寸,宽度和高度至少有一个和容器一致。因此,此参数可能会让替换内容(如图片)部分区域不可见。
  • none: 中文释义“无”。保持原有尺寸比例。同时保持替换内容原始尺寸大小。
  • scale-down: 中文释义“降低”。就好像依次设置了none或contain, 最终呈现的是尺寸比较小的那个

详细了解 object-fit:https://www.cnblogs.com/e0yu/p/10670990.html

到此这篇关于HTML5在手机端实现视频全屏展示方法的文章就介绍到这了,更多相关HTML5视频全屏内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
CSS3字体效果的设置方法小结
Jun 13 HTML / CSS
css3模拟jq点击事件的实例代码
Jul 06 HTML / CSS
CSS3 box-sizing属性
Apr 17 HTML / CSS
表单button的outline在firefox浏览器下的问题
Dec 24 HTML / CSS
CSS3属性background-size使用指南
Dec 09 HTML / CSS
谈谈对css属性box-sizing的了解
Jan 04 HTML / CSS
HTML5本地存储之Database Storage应用介绍
Jan 06 HTML / CSS
让IE下支持Html5的placeholder属性的插件
Sep 02 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
Apr 19 HTML / CSS
HTML5 weui使用笔记
Nov 21 HTML / CSS
amazeui页面分析之登录页面的示例代码
Aug 25 HTML / CSS
css display table 自适应高度、宽度问题的解决
May 07 HTML / CSS
关于HTML5+ API plusready的兼容问题
Nov 20 #HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
Nov 19 #HTML / CSS
Canvas获取视频第一帧缩略图的实现
Nov 11 #HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
Nov 10 #HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
Nov 10 #HTML / CSS
萌新HTML5 入门指南(二)
Nov 09 #HTML / CSS
萌新的HTML5 入门指南
Nov 06 #HTML / CSS
You might like
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
简述 Python 的类和对象
2020/08/21 Python
销售业务实习自我鉴定
2013/09/23 职场文书
庆六一开幕词
2015/01/29 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
Python正则表达式中flags参数的实例详解
2022/04/01 Python
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers
配置nginx负载均衡
2022/05/06 Servers
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers