2010-12-07 139 views
11

我試圖做一個全屏HTML背景,這很容易。但是由於HTML5視頻在保持寬高比的同時調整大小以適應容器,我無法達到他想要的效果。HTML5視頻縮放模式?

HTML5視頻有不同縮放模式嗎?我想擴展到填充和裁剪。

這是在一瞬間完成了預期的效果: http://www.caviarcontent.com/

如果調整窗口的大小,你會看到它規模和作物。你永遠不會得到黑色的酒吧。

感謝您的幫助!

+0

看看這個:http://syddev.com/jquery.videoBG它應該是你正在尋找:) – sydlawrence 2011-03-22 21:31:28

回答

12

我想通過使用相同的功能I wrote about here

如果頁面上有元素,這個jQuery調整大小的函數會將視頻縮放爲瀏覽器窗口的全部流血。

通過更改browserHeight和browserWidth變量,您可以將視頻縮放以適合DIV(確保將DIV設置爲溢出:隱藏)。

該功能還將隨瀏覽器窗口動態調整大小。

var sxsw = { 

    full_bleed: function(boxWidth, boxHeight, imgWidth, imgHeight) { 

     // Calculate new height and width... 
     var initW = imgWidth; 
     var initH = imgHeight; 
     var ratio = initH/initW; 

     imgWidth = boxWidth; 
     imgHeight = boxWidth * ratio; 

     // If the video is not the right height, then make it so...  
     if(imgHeight < boxHeight){ 
      imgHeight = boxHeight; 
      imgWidth = imgHeight/ratio; 
     } 

     // Return new size for video 
     return { 
      width: imgWidth, 
      height: imgHeight 
     }; 

    }, 

    init: function() { 
     var browserHeight = Math.round(jQuery(window).height()); 
     var browserWidth = Math.round(jQuery(window).width()); 
     var videoHeight = jQuery('video').height(); 
     var videoWidth = jQuery('video').width(); 

     var new_size = sxsw.full_bleed(browserWidth, browserHeight, videoWidth, videoHeight); 

     jQuery('video') 
      .width(new_size.width) 
      .height(new_size.height); 
    } 

}; 
jQuery(document).ready(function($) {  

    /* 
    * Full bleed background 
    */ 

    sxsw.init(); 

    $(window).resize(function() { 

     var browserHeight = Math.round($(window).height()); 
     var browserWidth = Math.round($(window).width()); 
     var videoHeight = $('.wd-thumb-list li a').eq(0).attr('data-wd-height'); 
     var videoWidth = $('.wd-thumb-list li a').eq(0).attr('data-wd-width'); 

     var new_size = sxsw.full_bleed(browserWidth, browserHeight, videoWidth, videoHeight); 

     $('video') 
      .width(new_size.width) 
      .height(new_size.height);   
    }); 

}); 
+2

我學到了一個小技巧[這裏](http://epicwebsites.com/scale-and-center-html5-video-with-jquery)是你需要添加一個「寬度」和「高度`給元素添加標籤。否則,視頻會將頁面向右推。 – synth3tk 2014-08-27 23:49:44

18

你可以做到這一點只用CSS:

video { 
    position: absolute; 
    min-width: 100%; 
    min-height: 100%; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%);   
} 

顯然使用的變換屬性

獎勵相應的供應商前綴:用圖像來做到這一點,你可以使用「背景-size:cover;「將圖像裁剪到所需的空間:

.background { 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    top: 0; 
    left: 0; 
    background: url(background-image.jpg) center; 
    background-size: cover; 
} 
+0

我發現這會拉伸圖像。 – 2014-05-19 23:32:08

+0

@DrewBaker查看修改後的答案。 – Michael 2014-06-15 23:02:40