layer弹出层中H5播放器全屏出错的解决方法


Posted in Javascript onFebruary 21, 2017

1.

在layer弹窗组件中

如果使用了flash播放器,全屏是正常的

但若使用了HTML5的播放器,全屏失效

举个栗子

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title></title>
 <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
 <script src="layer/layer.js"></script>
 <style>
 </style>
</head>
<body>
<h1>我是字</h1>
<div id="box">
<video id="video" controls preload="auto" width="400px" height="300px">
 <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
</video>
</div>
<script>
 layer.open({
 type: 1,
 title: false,
 shadeClose: true,
 area: ['400px', '350px'],
 content: $('#box'),
 success: function(layero){
 }
 });
</script>
</body>
</html>

layer弹出层中H5播放器全屏出错的解决方法

layer弹出层中H5播放器全屏出错的解决方法

可以看到全屏不正常了

通过调试发现是这个class的处理影响了全屏的展示

layer弹出层中H5播放器全屏出错的解决方法

layer弹出层中H5播放器全屏出错的解决方法

layer弹出层中H5播放器全屏出错的解决方法

所以,目前的解决办法是在layer层创建之后,移除这个class即可(注意在success回调中置于下一轮事件循环)

layer.open({
 type: 1,
 title: false,
 shadeClose: true,
 area: ['400px', '350px'],
 content: $('#box'),
 success: function(layero){
  console.log(layero)
  // hack处理layer层中video播放器全屏样式错乱问题
  setTimeout(function() {
  // $(layero).removeClass('layer-anim');
  }, 0);
 }
 });

layer弹出层中H5播放器全屏出错的解决方法

2.

video标签的poster属性指代视频未播放前放置的一张图片

如果video容器宽高小于等于poster图的宽高,则图片能充满容器,反之容器左右就会预留黑色栏

除了手动更换一张大图之外,可以结合CSS来控制,实现铺满

举个栗子

layer弹出层中H5播放器全屏出错的解决方法

<div id="box">
 <video id="video" controls preload="auto" width="700" height="300" poster="../poster.png" >
  <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
 </video>
</div>

现在图片宽度比容器小,没铺满,参考这里的讨论 可以用CSS让其撑开(这里相当于放大了,不想放大需自行更换大图)

poster里放一个透明图片(这里使用了一个1px*1px的base64格式透明图片),再用css定义video的background并将其覆盖住

<div id="box">
 <video id="video" controls preload="auto" width="700" height="300" poster="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" >
  <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
 </video>
</div>
video {
  background: transparent url('../poster.png') no-repeat 0 0; 
  -webkit-background-size: cover; 
   -moz-background-size: cover; 
    -o-background-size: cover; 
    background-size: cover; 
 }

layer弹出层中H5播放器全屏出错的解决方法

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JS判断表单输入是否为空(示例代码)
Dec 23 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
Mar 23 Javascript
javascript中call apply 的应用场景
Apr 16 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
angularjs实现table增加tr的方法
Feb 27 Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 Javascript
vue实现的下拉框功能示例
Jan 29 Javascript
ES6 Object方法扩展的应用实例分析
Jun 25 Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 Javascript
MutationObserver在页面水印实现起到的作用详解
Jul 07 Javascript
微信小程序 支付功能开发错误总结
Feb 21 #Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 #Javascript
jquery实现下拉框左右选择功能
Feb 21 #Javascript
jquery实现页面加载效果
Feb 21 #Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
Feb 21 #Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
Feb 21 #Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
Feb 21 #Javascript
You might like
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
php表单处理操作
2017/11/16 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python requests.post带head和body的实例
2019/01/02 Python
Python3简单实现串口通信的方法
2019/06/12 Python
python实现代码统计程序
2019/09/19 Python
python实现简单井字棋小游戏
2020/03/05 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
计算机毕业生自荐信范文
2014/03/23 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书