iPad上的Safari(iOS6)无法缩放HTML5视频以填满100%的页面宽度
我正在使用以下CSS在响应性HTML5页面上以全宽(100%)显示视频。视频的本机大小为480x270。在所有桌面浏览器上,视频都会被缩放以填充整个页面宽度,同时保持纵横比 然而,我的iPad(iOS 6.0.1)上的Mobile Safari和Chrome显示了一个与页面宽度相同的黑色矩形。视频很小,在黑色矩形的中心以其本机大小(480x270)显示iPad上的Safari(iOS6)无法缩放HTML5视频以填满100%的页面宽度,html,mobile-safari,html5-video,responsive-design,Html,Mobile Safari,Html5 Video,Responsive Design,我正在使用以下CSS在响应性HTML5页面上以全宽(100%)显示视频。视频的本机大小为480x270。在所有桌面浏览器上,视频都会被缩放以填充整个页面宽度,同时保持纵横比 然而,我的iPad(iOS 6.0.1)上的Mobile Safari和Chrome显示了一个与页面宽度相同的黑色矩形。视频很小,在黑色矩形的中心以其本机大小(480x270)显示 video { width: 100%; max-width: 100%; height: auto; } 灵感来自。
video {
width: 100%;
max-width: 100%;
height: auto;
}
灵感来自。这一页上有一条评论让我相信iOS6出现了倒退
由于将我的iPad升级到iOS 6,这个补丁似乎不再有效,我认为是高度:自动导致了这个问题。有没有人有过类似的经历并有过修复
还有其他人遇到过这个问题吗?我
有没有办法在iPad(iOS6)上全宽显示HTML5视频,同时只使用CSS保持纵横比
HTML格式如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, maximum-scale=1.0, minimum-scale=1.0, initial-scale=1" />
<style>
video {
width: 100%;
max-width: 100%;
height: auto;
border: 1px solid red;
}
</style>
</head>
<body>
<video preload autoplay controls>
<source src="file.mp4" type="video/mp4">
<source src="file.webm" type="video/webm; codecs=vp8, vorbis">
<source sr="file.ogv" type="video/ogg; codecs=theora, vorbis">
</video>
录像带{
宽度:100%;
最大宽度:100%;
高度:自动;
边框:1px纯红;
}
我在这里看到两个问题:
位置:relative
。缩放画布就像缩放视频一样。将视频设置为位置:绝对
,高度和宽度均设置为100%。这样,画布将强制div为您想要的大小,视频将展开以填充div
这里的工作示例:我必须对用户上传的视频做类似的事情。这意味着:我不知道视频的分辨率,它甚至可能处于纵向模式 我的工作是在加载元数据时通过javascript设置高度。对于大多数浏览器来说,视频从一开始就大小正确;在iPad上,当用户点击play时,视频大小会进行调整。对我来说,只要我知道视频有多大,就可以让它增长 代码(使用object.id是因为在我的设置中,同一页面上可能有多个视频):
//将高度和宽度设置为本机值
函数naturalSize{{{object.id}}(){
var myVideo=document.getElementById('video-{{object.id}}');
var比率=myVideo.videoWidth/myVideo.videoHeight;
var video_object=$('#video-{{object.id}');
视频对象动画({
高度:(video_object.width()/比率)+“px”
}, 1000);
}
$(文档).ready(函数(){
var myVideo=document.getElementById('video-{{object.id}}');
addEventListener('loadedmetadata',naturalSize{{{object.id}},false);
})
如果有人有一个更干净的解决方案,也许是纯CSS,我希望看到它…我有一个类似的场景,IOS6和一个视频对象没有调整到其父对象的大小。我通过将包含CSS视频的父div中的所有元素作为目标来解决这个问题。因此,在您的示例中,您必须使用div(例如class=“DivWithVideo”)包围视频,并添加以下CSS:
.DivWithVideo * {max-width: 100%}
结合@brianchirls答案的一部分,以下是我所做的。到目前为止,这似乎在台式机、Android和iOS上都能正常工作。利用响应填充技巧,其中填充顶部的百分比将是宽度的百分比。我的视频是16:9,下面是我的代码:
#video-container {
position: relative;
padding-top: 56.25%;
}
video, object {
display: block;
position: absolute;
width: 100%;
height: 100%;
top: 0;
}
您可以使用此选项在容器中设置视频中心,并根据需要设置边距。不需要添加额外的元素。特别修复iOS7。如果需要,请注意
-webkit calc
前缀
width: 100%;
position: absolute;
top: calc(50% - 10px);
left: 50%;
height: calc(100%);
-webkit-transform: translateY(-50%) translateX(-50%);
您的视频标签是否具有高度和宽度属性?如果你愿意分享你的html代码,我可以帮你。谢谢!请参阅上面原始帖子的编辑。您的视频是否位于另一个维度固定或受限的元素中?也许是固定高度或最大高度的潜水舱?谢谢你的建议。我已经编写了一个基本的HTML文件,其中只包含视频标签和视频元素的CSS(见上文)。它在桌面浏览器上显示正确,但在iPad上,视频仍保持其原有大小(480x270)。我建议大家一起努力!我没有想到Safari不会下载视频元数据,但这是有意义的。谢谢你的解决方案。我希望我有足够的分数来奖励你!你好,这修复了我的iPad视频,但它在ie9上造成了问题,我想canvas在ie9上有不同的行为,这里有什么提示吗?@321zeno你可以在IE9Cheers中用有条件的评论隐藏canvas,这正是我最后所做的,有点混乱,但现在就可以了嘿jsbin apppears死了,有机会重新发布链接吗?谢谢。我有身高问题,这似乎已经解决了。非常感谢!
width: 100%;
position: absolute;
top: calc(50% - 10px);
left: 50%;
height: calc(100%);
-webkit-transform: translateY(-50%) translateX(-50%);