2017-02-22 41 views
1

我有一个视频元素,其位置由浏览器的宽度和高度决定。它包裹在下面的resize()函数中。基本上,当我调整浏览器的大小时,位置会发生变化,以便浏览器专注于视频的中心。触发onload并一起调整大小?

我试图让这个功能立即运行时,页面加载和当浏览器大小。无论负载和调整工作,当我跑我的网页在本地,但实时推送时,该功能将无法负载启动,但是当我调整将仅..

它也非常不一致。有时候这个函数会在加载时触发,有时它不会。

var resize = function(){ 
    var videoWidth = (window.innerWidth - video.offsetWidth)/2; 
    var videoHeight = (window.innerHeight - video.offsetHeight)/2; 
    video.style.transform = "translateY(" + videoHeight + "px)"; 
    video.style.transform = "translateX(" + videoWidth + "px)"; 
} 

window.addEventListener("load", function(){ 
    resize(); 
}); 

window.addEventListener("resize", function(){ 
    resize(); 
}); 
+1

只是为了检查,是函数没有被调用或者是事件不是被解雇? –

+0

嘿!这是我的问题的截图。我相信这是不会触发的事件imgur.com/a/myUC8。第一张图片显示了该功能在加载时未触发时页面的显示方式。但是,如果我调整浏览器的大小,它会重新调整自己,使其看起来像第二个图像。但是,有时函数做火负荷 - 它只是不一致...... – giantqtipz

+1

我不知道你的代码的其余部分有多大,但它看起来对我来说,有时在页面加载后加入负载事件监听器,因此它不会触发,这也会导致随机性,因为它有时加载速度足以在页面完成加载之前添加事件侦听器。该代码是否在单独的JS文件中?我建议尽可能地添加这个,并给出一个去。 –

回答

1

我建议你两种不同的方式来实现,没有JavaScript。

1.第一溶液(无边缘处的阴影)

HTML

<div id="videoWrapper"> 
    <video ... ></video> 
</div> 

CSS

#videoWrapper { 
    position: relative; 
    width: 100%; 
} 

#videoWrapper video { 
    position: absolute; 
    left: 50%; 
    transfrom: translateX(-50%); 
} 

您的视频可以改变其高度或宽度,它将始终以包装为中心! :d

1.第二溶液(用边缘处的阴影)

HTML

<div id="videoWrapper"> 
    <div class="shadowBlock"> 
    </div> 
    <div id="video"> 
    </div> 
    <div class="shadowBlock"> 
    </div> 
</div> 

CSS

#videoWrapper { 
    display: flex; 
    flex-direction: row 
} 

.shadowBlock { 
    z-index: 5; 
    display: flex; 
    background-color: black; 
    flex: 1; 
    -webkit-box-shadow: 0px 0px 100px 24px rgba(0,0,0,0.75); 
    -moz-box-shadow: 0px 0px 100px 24px rgba(0,0,0,0.75); 
    box-shadow: 0px 0px 100px 24px rgba(0,0,0,0.75); 
} 

#video { 
    z-index: 4; 
    display: flex; 
} 

在这里你可以看到它的工作好:https://jsfiddle.net/et2xrsj5/

+0

我试图复制与batmanvsuperman.com相同的效果(检查视频和窗帘,当浏览器尺寸发生变化时,您会看到属性变化)。当我调整浏览器大小时,我会在视频的两侧使用空白divs,需要跟随视频边缘的“人造”窗帘。我的意思是这是一个实践项目,这就是为什么我愿意为了学习而做更复杂的方法:) – giantqtipz

+1

最简单的方法往往是最好的方法! :D一个好的程序员保持简单。我看着你的链接,我不明白什么阻止你使用我的技术。你能提供一个截图或模式吗? – Kornflexx

+0

哈哈谢谢:D这里有一些截图http://imgur.com/a/myUC8。第一个图像是它在函数不运行时的显示方式。第二个图像是它应该如何运行。一切都以视频边缘的薄窗帘为中心。它将在浏览器调整大小后跟随视频。道具如果你能猜到视频来自哪里! – giantqtipz

相关问题