私はフルスクリーンのHTMLバックグラウンドを作成しようとしていますが、これは非常に簡単です。しかし、HTML5ビデオはアスペクト比を維持しながらコンテナーに合わせてサイズ変更されるため、期待どおりの効果を得ることができません。
HTML5ビデオにはさまざまな拡大縮小モードがありますか?塗りつぶしに合わせて拡大縮小したいのですが。
これは、Flashで行われる望ましい効果です。 http://www.caviarcontent.com/
ウィンドウのサイズを変更すると、拡大縮小してトリミングされます。あなたは黒いバーを取得することはありません。
助けてくれてありがとう!
同じ関数を使ってそれを理解しました ここで書きました 。
ページに要素がある場合、このjQueryのサイズ変更関数は、ビデオをブラウザーウィンドウの端から端まで拡大します。
BrowserHeight変数とbrowserWidth変数を変更することで、DIVに合うようにビデオをスケーリングできます(そのDIVがoverflow:hiddenに設定されていることを確認してください)。
この関数は、ブラウザウィンドウに合わせて動的にサイズ変更します。
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);
});
});
CSSでこれを行う別の方法は、object-fitプロパティを使用することです。これは動画またはimg要素で機能します
video {
object-fit: cover;
}
http://dev.opera.com/articles/css3-object-fit-object-position/
これはChrome 31+でのみ互換性がありますが、最も単純なCSSソリューションであり、推奨候補です。
CSSでこれを行うことができます:
video {
position: absolute;
min-width: 100%;
min-height: 100%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
明らかに、transformプロパティに適切なベンダープレフィックスを使用してください
おまけ:画像でこれを行うには、「background-size:cover」を使用できます。画像を目的のスペースにトリミングするには:
.background {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: url(background-image.jpg) center;
background-size: cover;
}
cssのみですばやくダーティ:
video
{
width: 100%;
height: auto;
max-height: 100%;
}
次のように表示されます: http://web.archive.org/web/20171013204829/www.codesynthesis.co.uk/tutorials/html-5-full-screen-and-responsive-videos
ExtJS 5を使用してビデオを表示すると、次のコードが機能します。
「」
var w = Ext.widget('window',{
renderTo: Ext.getBody(),
x : 10,
y : 10,
width: 480,
height: 670,
maximizable: true,
html: '<video style="width: 100%;height: auto;max-height: 100%;" controls playsinline autoplay muted loop><source src="'+url+'" type="video/mp4"></video>'
})
w.show()
「」