web-dev-qa-db-fra.com

Rendre la vidéo adaptée à 100% avec n'importe quelle résolution d'écran

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.

16
Qwerty

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>
35
raumus

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;
}
7
David

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>

0
mlegg