J'essaie d'aligner la vidéo intégrée de YouTube au centre de la page dans la page de démarrage. La taille de la vidéo est toujours la même.
Mon html a l'air très simple:
<div class="video">
<iframe width="560" height="315" src="https://www.youtube.com/embed/ig3qHRVZRvM" frameborder="0" allowfullscreen=""></iframe>
</div>
J'ai essayé différentes solutions de stackoverflow (qui ne traitait que du centrage d'une division, pas d'une vidéo) et le meilleur que j'ai pu trouver était ce violon .
J'ai déjà essayé solution1 , solution2 , solution3 mais sans résultat. Une autre solution partiellement efficace consistait à utiliser:
width: 50%;
margin: 0 auto;
Cela a bien fonctionné sur un ordinateur de bureau, mais a échoué sur un iPad ou un téléphone (la vidéo est partiellement sortie d'un écran). Comment est-il possible de bien centrer la vidéo sur le bureau/tablette/téléphone?
Une chose importante à noter/"Bootstrap" est juste un tas de règles CSS
<div class="your-centered-div">
<img src="http://placehold.it/1120x630&text=Pretend Video 560x315" alt="" />
</div>
/* key stuff */
.your-centered-div {
width: 560px; /* you have to have a size or this method doesn't work */
height: 315px; /* think about making these max-width instead - might give you some more responsiveness */
position: absolute; /* positions out of the flow, but according to the nearest parent */
top: 0; right: 0; /* confuse it i guess */
bottom: 0; left: 0;
margin: auto; /* make em equal */
}
Entièrement fonctionnel jsFiddle est ici .
Je l'utilise surtout ces jours-ci:
.centered-thing {
position: absolute;
margin: auto;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
center-center()
absolute()
margin auto
top 50%
left 50%
transform translate(-50%,-50%)
De cette façon ... vous n'avez pas besoin de connaître la taille de l'élément - et la traduction est basée sur sa taille - soit -50% de lui-même. Soigné.
Youtube utilise iframe . Vous pouvez simplement le régler sur:
iframe {
display: block;
margin: 0 auto;
}
<iframe style="display: block; margin: auto;" width="560" height="315" src="https://www.youtube.com/embed/ig3qHRVZRvM" frameborder="0" allowfullscreen></iframe>
Vous n'avez pas du tout mettre <iframe>
dans une division parent. Vous pouvez cibler exactement youtube iframe
avec CSS/3:
iframe[src*="//youtube.com/"], iframe[src*="//www.youtube.com/"] {
display: block;
margin: 0 auto;
}
Utilisation de Bootstrap dans .center-block
class, qui définit les marges gauche et droite sur auto
:
<iframe class="center-block" width="560" height="315" src="https://www.youtube.com/embed/ig3qHRVZRvM" frameborder="0" allowfullscreen=""></iframe>
Ou en utilisant le .text-center
class intégré, qui définit text-align: center
:
<div class="text-center">
<iframe width="560" height="315" src="https://www.youtube.com/embed/ig3qHRVZRvM" frameborder="0" allowfullscreen=""></iframe>
</div>
Je règle la largeur maximale de ma vidéo sur 100%. Sur les téléphones, la vidéo s'adapte automatiquement à la largeur de l'écran. Étant donné que la vidéo incorporée ne fait que 560 pixels de large, j'ai simplement ajouté une marge gauche de 10% à l'iframe et ajouté un "0" dans la marge de la feuille de style CSS mobile (pour autoriser la vue en pleine largeur). Je ne voulais pas me donner la peine de mettre une div à chaque vidéo ...
CSS de bureau:
iframe {
margin-left: 10%;
}
CSS mobile:
iframe {
margin-left: 0;
}
A travaillé parfaitement pour mon blog (botanique Amy).
Pour une vidéo IFrame YouTube entièrement réactive, essayez ceci:
<div class="blogwidevideo">
<iframe width="854" height="480" style="margin: auto;" src="https://www.youtube-nocookie.com/embed/h5ag-3nnenc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
.blogwidevideo {
overflow:hidden;
padding-bottom:56.25%;
position:relative;
height:0;
}
.blogwidevideo iframe {
left:10%; //centers for the 80% width - not needed if width is 100%
top:0;
height:80%; //change to 100% if going full width
width:80%;
position:absolute;
}
make iframe avec align = "middle" et le place dans un paragraphe avec style = "text-align: center":
<p style="text-align:center;">
<iframe width="420" height="315" align="middle" src="https://www.youtube.com/embed/YOURVIDEO">
</iframe>
</p>
<div>
<iframe id="myFrame" src="https://player.vimeo.com/video/12345678?autoplay=1" width="640" height="360" frameborder="0" allowfullscreen> .
</iframe>
</div>
<script>
function myFunction() {
var wscreen = window.innerWidth;
var hscreen = window.innerHeight;
document.getElementById("myFrame").width = wscreen ;
document.getElementById("myFrame").height = hscreen ;
}
myFunction();
window.addEventListener('resize', function(){ myFunction(); });
</script>
cela fonctionne sur Vimeo en ajoutant un identifiant myFrame
à la iframe