Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以9:16的高宽比将iframe视频的缩略图100%覆盖到包装器中?_Javascript_Html_Css_Iframe - Fatal编程技术网

Javascript 如何以9:16的高宽比将iframe视频的缩略图100%覆盖到包装器中?

Javascript 如何以9:16的高宽比将iframe视频的缩略图100%覆盖到包装器中?,javascript,html,css,iframe,Javascript,Html,Css,Iframe,我正在使用iframe标签从我的谷歌硬盘播放9:16纵横比的视频。iframe被包裹在一个div周围,并且div被设计成没有黑条的样式。视频保持其纵横比,但缩略图不保持。缩略图覆盖包装的所有高度,但不覆盖宽度。我希望缩略图也能保持9:16的纵横比 此外,我没有添加自定义缩略图 .potrait_9by16 { 位置:相对位置; 溢出:隐藏; 宽度:100%; 填充底部:177.777%;/*9:16纵横比*/ } .potrait_9by 16 iframe { 位置:绝对位置; 排名:0;

我正在使用iframe标签从我的谷歌硬盘播放9:16纵横比的视频。iframe被包裹在一个div周围,并且div被设计成没有黑条的样式。视频保持其纵横比,但缩略图不保持。缩略图覆盖包装的所有高度,但不覆盖宽度。我希望缩略图也能保持9:16的纵横比

此外,我没有添加自定义缩略图

.potrait_9by16
{
位置:相对位置;
溢出:隐藏;
宽度:100%;
填充底部:177.777%;/*9:16纵横比*/
}
.potrait_9by 16 iframe
{
位置:绝对位置;
排名:0;
左:0;
底部:0;
右:0;
宽度:100%;
身高:100%;
}

在以下位置尝试:

对于外部div,只使用x类,对于内部div,只使用neg类。这应该可以做到


我想在播放时去掉负边距,并尝试了一些类似的东西,但没有来得及完成。它应该在某种程度上起作用,但我发现黑色边框的缩略图可能会在播放开始前显示一段时间(至少是我尝试的方式)。如果可以的话,你可以试试那种方法。我想到的是显示一个不可见的div(透明覆盖),覆盖iframe,它可以捕获单击并将iframe src切换到autoplay=1 URL。看看你能不能让它发挥作用。如果我有时间的话,我可能会进一步研究这个问题

我使用与iframe风格相同的JavaScript添加了一个div,就在iframe之后:

.overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0 }
如果最后添加此div,它将已经是最上面的。否则,请使用z索引

然后处理div上的“click”事件


上述div覆盖技术有其局限性。以下技术可能更好:

<!DOCTYPE html>
<html>
    <meta charset="UTF-8">
    <title>Player</title>
    <div id="player"></div>

查看是否可以将此最新更新用于多个iFrame

你的问题可能是因为你可能在所有球员的div中使用了一个id(可能是相同的id)。当使用多个玩家div时,您需要使用唯一的id,并对div使用class=“player”,而不是id=“player”:


我使用的标记与您提供的完全相同。唯一的区别是,高度和宽度在您的中是内联的。我正在使用谷歌硬盘上9:16的potrait视频。当视频运行时,它没有黑条,并且保持9:16的纵横比。唯一的问题是缩略图。我的意思是高度和宽度在iframe标记中设置。我把你的代码复制粘贴到我的文件里。还是一样。缩略图不保持9:16的纵横比。另外,“共享视频播放器”是什么意思?我正在使用src属性设置为“”的标记。我猜,这个播放器是youtube播放器。使用此链接尝试标记。看看你是否有同样的问题,请告诉我。谢谢。这很奇怪。当我点击GoogleDrive链接时,缩略图的纵横比与视频相同。此外,我使用谷歌chrome开发工具检查了缩略图,发现图像尺寸为640x360,即16:9。因此,缩略图本身不是问题所在。不知何故,缩略图的图像正在拉伸和扭曲。我怀疑iframe不应该播放这样的potrait视频。我能否以某种方式将在浏览器中创建的标记作为目标?[下面继续][继续]另外,我发现当我点击播放按钮时,视频会出现另一个播放按钮(就像你在youtube上看到的那样),视频会在0:00暂停等待播放。在这个时刻,因为没有缩略图和视频包装看起来完全一样,我希望它。我想知道我是否可以在页面加载时按一下“白色”播放按钮。另外,您的负边际解决方案不起作用。但是,谢谢你的努力。我真的很感激。整个缩略屏幕是9:16,因为当我播放视频时,没有黑条,视频是9:16。缩略图看起来拉长了。
.overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0 }
<!DOCTYPE html>
<html>
    <meta charset="UTF-8">
    <title>Player</title>
    <div id="player"></div>
body { background: #efe; padding: 2em; color: #575 }
h1:first-child { margin-top: 0 }

.player, #player { overflow: hidden }
.player > div, #player > div { position: relative; padding: 88.88888% 0; overflow: hidden }
.player video, .player iframe,
#player video, #player iframe
{ position: absolute; top: 0; right: 0; bottom: 0; left: 0 }
.player:not(.playing) > div, #player:not(.playing) > div
{ margin: 0 -109.7283% }
((W, D) => {
    let $ = a => document.getElementById(a)
    class Player {}
    Player.play = (id, url) => {
        let p = $(id)
            , f = D.createElement('iframe')
            , d = D.createElement('div')
        f.src = url
        f.setAttribute('frameborder', 0)
        f.height =
        f.width = '100%'
        f.addEventListener( 'mouseover', e => f.dataset.overMe = 1 )
        f.addEventListener( 'mouseout', e => delete f.dataset.overMe )
        W.addEventListener( 'blur', e => {
            if (f.dataset.overMe === '1')
                setTimeout(a => p.classList.add('playing'), 1000)
        } )
        p.innerHTML = ''
        d.appendChild(f)
        p.appendChild(d)
    }
    W.Player = Player
})(window, document);

Player.play('player', 'https://drive.google.com/file/d/16iDKGJXBszk2nI9h9BNG3rJ2zD85FSNy/preview')
<div id="player-1" class="player"></div>
<div id="player-2" class="player"></div>
<div id="player-3" class="player"></div>
Player.play('player-1', 'https://drive.google.com/file/d/16iDKGJXBszk2nI9h9BNG3rJ2zD85FSNy/preview')
Player.play('player-2', 'https://drive.google.com/file/d/16iDKGJXBszk2nI9h9BNG3rJ2zD85FSNy/preview')