我想让我的元素保持其纵横比,但充当“全出血”或更确切地说是完整的浏览器体验。视频应向上或向下以适应新的浏览器窗口尺寸,但也应在浏览器窗口中居中。有时,一些视频会被裁剪——这对我来说没问题。我正在尝试使用纯 JS 为视频元素重新创建背景覆盖 CSS 属性,如果这有助于您想象的话。对于那些不知道那是什么的人,以下是:
.bkgdCover{
background: no-repeat center center;
-webkit-background-size: 100% 100%;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
以下是我尝试在纯 javascript 中做同样的事情:
function getWinSize(){
var wid = 0, hei = 0;
if (document.documentElement && document.documentElement.clientHeight){
wid = parseInt(window.innerWidth,10);
hei = parseInt(window.innerHeight,10);
} else if (document.body){
wid = parseInt(document.body.offsetWidth,10);
hei = parseInt(document.body.offsetHeight,10);
}
return [wid,hei];
}
this.resize2 = function(){
fullBleedVideoPlayer();
};
function fullBleedVideoPlayer() {
var viewport=getWinSize();
var videoRatio = 1080 / 1920;
var browserHeight = viewport[0];
var browserWidth = viewport[1];
var tmp_windowRatio = viewport[1] / viewport[0];
if (videoRatio > tmp_windowRatio) {
tmp_height = Math.round(browserWidth * videoRatio);
_player.style.width= browserWidth+ "px";
_player.style.height= tmp_height+ "px";
_player.style.marginLeft = 0 + 'px';
_player.style.marginTop = -Math.round((tmp_height - browserHeight) / 2) + 'px';
} else {
tmp_width = Math.round(browserHeight * (1 / videoRatio));
_player.style.width= tmp_width+ "px";
_player.style.height= browserHeight+ "px";
_player.style.marginLeft = -Math.round((tmp_width - browserWidth) / 2) + 'px';
_player.style.marginTop = 0 + 'px';
}
}
不幸的是,这不会重现 CSS 封面。如果你能看到我在哪里犯了错误或者你自己也犯了同样的错误,我很想听听你的意见。请只使用纯 JS 解决方案。