J'ai une vidéo avec les propriétés suivantes: Largeur du cadre: 1920 et Hauteur du cadre: 1080. Il me faut une largeur et une hauteur de 100% pour remplir tout l'écran. Et il doit aussi être réactif. Jusqu'à présent, j'ai ce code:
<video class="hidden-xs hidden-sm hidden-md hidden-custom videosize embed-responsive-item" autoplay="autoplay" loop="loop">
<source src="~/Videos/myvideo.mp4" type="video/mp4" />
</video>
css:
.videosize {
position:absolute;
z-index:-1;
top:0;
left:0;
width:100%;
height:100vh;
}
Avec le code ci-dessus, il correspond parfaitement à une résolution d'écran de 1680 x 1050, mais avec une autre résolution, il occupe 100% de la hauteur, puis la largeur s'ajuste en laissant des espaces blancs des deux côtés.
Une idée ? Merci.
J'ai trouvé une bonne solution ici: http://codepen.io/shshaw/pen/OVGWLG
Donc, votre CSS serait:
.video-container {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.video-container video {
/* Make video to at least 100% wide and tall */
min-width: 100%;
min-height: 100%;
/* Setting width & height to auto prevents the browser from stretching or squishing the video */
width: auto;
height: auto;
/* Center the video */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
HTML:
<div class="video-container">
<video>
<source src="~/Videos/myvideo.mp4" type="video/mp4" />
</video>
</div>
Vous pouvez maintenant utiliser la propriété object-fit. Cette propriété a été spécialement conçue pour gérer la taille de réponse pour les éléments <img>
et <video>
. Il est maintenant supporté par tous les navigateurs modernes.
.videosize {
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
Pouvez-vous utiliser un iframe?
/* Flexible iFrame */
.flexible-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.flexible-container iframe,
.flexible-container object,
.flexible-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<!-- Responsive iFrame -->
<div class="flexible-container">
<iframe src="URL" frameborder="0" style="border:0"></iframe>
</div>