layer弹出层中H5播放器全屏出错解决 & 属性poster底图占满video的方法

1.

在layer弹窗组件中

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

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

举个栗子

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4   <meta charset="utf-8">
 5   <title></title>
 6   <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
 7   <script src="layer/layer.js"></script>
 8
 9   <style>
10
11   </style>
12 </head>
13 <body>
14 <h1>我是字</h1>
15 <div id="box">
16 <video id="video" controls preload="auto" width="400px" height="300px">
17   <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
18 </video>
19 </div>
20
21 <script>
22
23   layer.open({
24     type: 1,
25     title: false,
26     shadeClose: true,
27     area: [‘400px‘, ‘350px‘],
28     content: $(‘#box‘),
29     success: function(layero){
30     }
31   });
32
33 </script>
34 </body>
35 </html>

可以看到全屏不正常了

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

所以,目前的解决办法是在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);
    }
  });

2.

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

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

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

举个栗子

<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;
    }

时间: 2024-10-07 11:31:02

layer弹出层中H5播放器全屏出错解决 & 属性poster底图占满video的方法的相关文章

在layui layer 弹出层中加载 layui table

1 layer.open({ 2 type: 1, 3 area:['80%','60%'], 4 content: '<div><table id="testTable"></table></div>', 5 success: function(layero, index){ 6 table.render({ 7 elem: '#testTable', 8 ... 9 }) 10 } 11 }) 原文地址:https://www.cnb

asp.net中获取Layer弹出层返回值

1.MainPage.aspx中点击按钮利用Layer弹出层,代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainPage.aspx.cs" Inherits="demo.MainPage" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh

layer弹出层设置相对父级元素定位

layer弹出层默认是相对body固定定位的,可是项目中一般需要相对某个盒子相对定位,下面是个加载弹层例子: var loadIndex = layer.open({ type: 3, //3 表示加载 fixed: false, //取消固定定位,因为固定定位是相对body的 offset: ['60px', '132px'], //相对定位 time: 5000, //定时关闭弹层 icon: 2, //加载的icon类型 shade: 'background-color: rgba(0,0

关闭layer弹出层,刷新父窗口 - 官方没有说这个, 但是很有用。

关闭layer弹出层,刷新父窗口,火狐提示:NS_ERROR_XPC_SECURITY_MANAGER_V错误 原代码如 下: window.parent.location.reload(); //window.parent.location.href="/file/list" var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); 解决方案: 利用end函数 layer.open(

常用的layer弹出层

本文来自 松耦合 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/dunegao/article/details/78978448?utm_source=copy 常用的layer弹出层 1.提示信息 layer.msg("格式不正确") 2.loading加载层 var loading_img = layer.load(1, { shade: [0.1,'#fff'] //0.1透明度的白色背景 }); //数据调取完毕时使用 layer.close(

layer弹出层详解

前言:学习layer弹出框,之前项目是用bootstrap模态框,后来改用layer弹出框,在文章的后面,我会分享项目的一些代码(我自己写的). layer至今仍作为layui的代表作,她的受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力.目前,layer已成为国内最多人使用的web弹层组件,GitHub自然Stars3000+,官网累计下载量达30w+,大概有20万Web平台正在使用layer. 具体请

layer弹出层框架alert与msg详解

layer--->web弹层组件 代码: 1 layer.alert('见到你真的很高兴', {icon: 6}); 这是一个最简单的弹出层,可根据icon配置左边的图标 通常情况下,除了弹窗之外我们一般都会有对按钮做回调处理的一些操作 如图: 1 layer.alert('墨绿风格,点击确认看深蓝', { 2 skin: 'layui-layer-molv' //样式类名 自定义样式 3 ,closeBtn: 1 // 是否显示关闭按钮 4 ,anim: 1 //动画类型 5 ,btn: ['

使用Layer插件遇到的坑——Layer弹出层闪退

一.前言 巨坑,基础没学好,导致找了一个下午的问题,终于被我发现了.说多都是泪,记录下来,以后有人遇到这个错误可以参考下 做项目期间做了几个页面,需要用到弹出层,为了方便使用到了Layer的插件,然后写点击事件在form表单中(第一个坑),接着,又使用button按钮(悲剧的开始),同样放在form表单下.想要的效果就是当我点击按钮的时候,就弹出层.(悲剧) 好了,巨坑开始,一开始页面打好之后,就放到SSM框架中,出现的问题一开始就是404地址找不到,使用绝对定位不行,浏览器报的错误一直是错误的

layer弹出层的iframe页面回调

$("#ChoiceBank").click(function () { var width = $("#content").css("Width"); layer.open({ type: 2, title: '开户银行选择', area: [width, '380px'], content: ['/Bank.aspx', 'no'], btn: ['确定', '取消'], yes: function (index, layero) { var