- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
单击视频链接时,我需要在 fancybox 中显示 html5 视频。如果乍一看这似乎是一个已经回答的问题,请进一步阅读,因为我已经对 15 个不眠小时进行了广泛的研究。哎哟。
这是我的页面:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="jquery.fancybox.css?v=2.1.3" type="text/css" media="screen" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script type="text/javascript" src="jquery.fancybox.pack.js?v=2.1.3"></script>
<style type="text/css">
video {
width: 100%;
max-width: 100%;
height: auto;
}
</style>
</head>
<body>
<a class="fancybox2" rel="group" title="Play Video" href="#data1">Play Video</a>
<div style="display:none"><div id="data1">
<video controls preload="none" poster="bathtub.jpg">
<source src="bathtub.mp4" type="video/mp4">
<source src="bathtub.webm" type="video/webm">
<embed src="bathtub.flv" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always"
allowfullscreen="true" autoplay="false" />
Your browser does not support the video tag.
</video>
</div></div>
<script type="text/javascript">
jQuery(document).ready(function() {
// FANCY BOX ( LIVE BOX) WITH MEDIA SUPPORT
jQuery(".fancybox2").fancybox({
scrolling : 'no',
fitToView: 'true',
openEffect : 'none',
closeEffect : 'none',
helpers : {
media : {}
}
});
});
</script>
</body>
</html>
因为我最终想要实现的是让 fancybox 及其内容 html5 视频具有响应性,因此让 html5 视频在任何屏幕尺寸下填充 fancybox,我在标题中为视频元素插入了该样式:
<style type="text/css">
video {
width: 100%;
max-width: 100%;
height: auto;
}
</style>
在 Chrome 和 IE 中一切正常:当我点击视频链接时,fancybox 正确打开,html5 视频及其海报和控件在 fancybox 中正确显示,填充它,当我调整浏览器大小时fancybox 会相应地缩放,html5 视频也会相应地缩放,它会以任何尺寸优雅地填充 fancybox。
但是,Firefox(最新版本,26)以默认大小 100X100 像素打开 fancybox,html5 视频海报缩放并适合 fancybox,而控件不适合 fancybox 大小。简而言之,在 Firefox 上,fancybox 打开得太小,就好像 Firefox 没有选择视频元素的 640x360 大小,因此从其 javascript 文件中提取默认的最小大小。如果我点击那个小 fancybox,视频开始播放,当它开始时,如果我调整窗口大小,现在 FF 会按预期调整 fancybox 和视频的大小。
如果我删除视频 elemnet 样式,fancybox 在所有浏览器(包括 Firefox)中都会按预期打开,但是当我调整窗口大小时,视频不会随着 fancybox 缩放。
我尝试在 fancybox 调用中以任何可能的组合使用 autoSize、autoResize、width 和 height,但没有成功。
我如何才能打开 fancybox 并根据视频元素保留空间(在我的例子中为 640x360)调整大小,并在所有浏览器的不同浏览器尺寸下顺利缩放所有内容?
提前感谢所有花时间引导我走向正确方向的人。希望肯尼迪也在附近。
最佳答案
尝试了 Carl 建议的 afterLoad 解决方案(不更改 Doctype,因为正如 JFK 所说,这不是一个选项,至少在我的情况下),事情或多或少保持不变:fancybox 现在在指定的位置打开Firefox 中的宽度和高度甚至保留了视频元素的样式,但是所有浏览器都会忽略该样式,并且当浏览器调整大小时,视频不会以完全填充 fancybox 的方式缩放。
然而,这不知何故为我打开了灯,并把我带到了正确的方向。 Carl 解决方案,保留原始文档类型,似乎不适用于 html5 视频,因为无论您指示哪种宽度和高度,视频始终显示在 fancybox 内,其海报图像的宽度/高度决定了 fancybox 的宽高比,当您调整浏览器大小。
我所做的是使用 ffmpeg 获取视频的帧宽度和高度,将它们注入(inject) fancybox anchor 的数据宽度和数据高度并添加 aspectRatio : true
到 fancybox javascript。
这是完整的固定和工作代码(我使用自定义 ffmpeg 类来检索视频信息),如果有人有同样的问题(与问题代码相比,红色是所做的添加/更改):
**<?php
include ("class/ffmpeg.class.php");
?>**
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="jquery.fancybox.css?v=2.1.3" type="text/css" media="screen" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script type="text/javascript" src="jquery.fancybox.pack.js?v=2.1.3"></script>
<style type="text/css">
video {
width: 100%;
max-width: 100%;
height: auto;
}
</style>
</head>
<body>
**<?php
// instantiate ffmpeg ultimate class
$ffmpegultimate = new FfmpegUltimate ();
$path_original = "bathtub.mp4";
$output = $ffmpegultimate->fileGetInfo ( $path_original );
$tarray = implode(" ", $output);
preg_match('/(\d{2,4})x(\d{2,4})/', $tarray, $matches);
?>**
<a class="fancybox2" rel="group" title="Play Video" href="#data1" **data-width="<?php echo $matches[1]; ?>" data-height="<?php echo $matches[2]; ?>"**>Play Video</a>
<div style="display:none"><div id="data1">
<video controls preload="none" poster="bathtub.jpg">
<source src="bathtub.mp4" type="video/mp4">
<source src="bathtub.webm" type="video/webm">
<embed src="bathtub.flv" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always"
allowfullscreen="true" autoplay="false" />
Your browser does not support the video tag.
</video>
</div></div>
<script type="text/javascript">
jQuery(document).ready(function() {
// FANCY BOX ( LIVE BOX) WITH MEDIA SUPPORT
jQuery(".fancybox2").fancybox({
scrolling : 'no',
fitToView: 'true',
openEffect : 'none',
closeEffect : 'none',
helpers : {
media : {}
}**,
autoSize: false,
aspectRatio : true,
afterLoad: function () {
this.width = $(this.element).data("width");
this.height = $(this.element).data("height");
}**
});
});
</script>
</body>
</html>
为什么 Firefox 不喜欢我在问题中发布的代码还有待观察,但这个解决方案适用于所有主流浏览器,因此我将接受我自己的答案,希望其他人可以从中受益 future 。感谢 Carl 以某种方式为此做出的贡献。如果系统允许,我会尝试为您 +1,因为您提供了很大帮助。
关于jquery - Firefox 中带有 Html5 视频不良行为的 Fancybox 的尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242521/
我有三个 html 页面,index.html、first.html 和 second.html。在索引页中,我有一个按钮 B1。当我单击该按钮时,会打开一个精美的框,其中包含 first.html
在我的网站上,我有一个 fancybox,其中包含隐藏的 的内容。在页面上。这个隐藏包含指向外部站点的链接。 是否可以在已经打开的 fancybox 中打开此链接? 我目前的代码如下: $("#li
Here我的链接是花哨的盒子,在笔记本电脑和台式机的所有浏览器中都可以正常工作,但是当您在移动设备(尤其是 I-PAD 这样的移动设备)中打开它时,叠加层会隐藏整个内部 html 内容。非常感谢您的回
我正在使用带有自定义模板的 fancybox-3 插件: $().fancybox({ selector : '[data-fancybox="images"]', animati
我正在尝试通过 Fancybox 内容中的链接关闭 Fancybox 实例。我正在按照 this question 中的建议使用 parent.jQuery.fancybox.close(); .它第
我使用 fancybox 作为联系表单。并在页面加载时打开。所以我使用了以下代码。 jQuery.fancybox.open('#fancy'); 我已经尝试过这个,但 fancybox 在加载时无法
如果脚本仅在 Fancybox 打开的页面上加载,CKEditor + Fancybox 似乎可以工作。然而,如果父页面已经初始化了 CKEditor,那么任何 Fancybox 打开的带有 CKEd
我有关于 Fancybox 3 的问题。我的网页有很多(10-15)个图片库,每个图片库大约有 50 张图片。每个画廊在主页上都有一个图片链接。 什么fancybox使用更好/更有效?: 不带缩略图使
从 2.x 升级到 3.0 后,我的应用程序崩溃了。新版本有没有类似的功能 $.fancybox.showLoading(); $.fancybox.helpers.overlay.open(); 最
转到:http://fancybox.net/打开任何示例(在底部页面) 当鼠标悬停在 fancybox 内的内容上时,浏览器主窗口无法滚动。当鼠标在其他地方时它就可以工作。我不想要这种行为。你会如何
How do I open fancybox via manual call for a gallery in the html not via the jquery options? 这回答了手动打
当用户关闭 Fancybox 对话框时如何重新加载当前页面? 最佳答案 使用 fancybox onClosed 处理程序; $('#some_element').fancybox({ onClo
我想要一个按钮来打开带有特定图片的 fancybox rel-group。我不太确定这是否有效,但我会试一试。我的问题是,如果用户单击链接,我想执行 jQuery。这是我的代码 var js = "j
我遇到了 fancybox 加载缓存图像的问题。我想确保图像在出现在页面上之前不被缓存,但是我试图通过它的各种回调(beforeShow、afterShow、afterLoad、beforeLoad)
我正在尝试编写一段代码,在用户单击 fancybox 中的其中一个选项后(选择一个选项后 fancybox 将关闭) 这是我的代码 索引.php Field: 选择字段.php
我坚持为我的照片设置 Fancybox 窗口,我是这样做的: $(document).ready(function() { $('.fancybox').fancybox(); }); 这是Fa
我想打开一个花哨的盒子,但是它给出了一个类型错误,你能帮我解决这个问题吗 查看页面包含以下代码 $(document).ready(function() { $('.fancybox').fancy
我有 2 个 fancyboxes,我试图从第一个打开第二个(通过按钮或关闭第一个).. I'm the first Fancybox! Close first Fancybox
嗨,我正在尝试将变量从子 iframe fancybox 发送到父级。但我似乎无法掌握如何做到这一点。有没有人有想法。我已经尝试过用js了。有 friend 建议用php来做,但还没有找到解决方案。我
我想知道一种加载我的 fancybox 并将 fancybox 附加到此 fancybox 中的链接之一的方法。我从今天开始使用最新版本的 fancybox (2.0.1)。 这是我尝试过但没有成功的
我是一名优秀的程序员,十分优秀!