Dans un projet sur lequel je travaille, nous récupérons un tas de vidéos YouTube que notre équipe multimédia a publiées dans une base de données afin que nous puissions les présenter en tant que contenu connexe.
Nous aimerions pouvoir superposer un bouton de lecture au-dessus des miniatures YouTube générées, il est donc plus évident que la miniature représente une vidéo qui peut être lue.
Je cherche le meilleur moyen d'y parvenir - j'ai fait quelques recherches et soit personne n'est intéressé à le faire, il est vraiment évident de savoir comment le faire, soit j'ai du mal à trouver les bons termes de recherche.
Les moyens que j'ai trouvé jusqu'à présent sont les suivants:
J'espérais pouvoir simplement ajouter une classe à l'image et utiliser javascript et/ou CSS pour superposer l'image.
Si quelqu'un a des conseils à ce sujet, je l'apprécierais vraiment.
HTML actuel (publié par OP dans les commentaires):
<li>
<a
class="youtube"
title="{ video id here }"
href="youtube.com/watch?v={video id here}">
<img
src="i3.ytimg.com/vi{ video id here }/default.jpg"
alt="{ video title here }" />
</a><br />
<a
class="youtube"
title="{vide id here }"
href="youtube.com/watch?v={ video id here }">
{ video title here }
</a>
</li>
<div class="video">
<img src="thumbnail..." />
<a href="#">link to video</a>
</div>
css
.video { position: relative; }
.video a {
position: absolute;
display: block;
background: url(url_to_play_button_image.png);
height: 40px;
width: 40px;
top: 20px;
left: 20px;
}
Je ferais quelque chose comme ça. En tout cas, je ne pense pas que ce soit une bonne idée de post-traiter les images pour ajouter le bouton de lecture. Et si vous devez changer la conception du bouton par exemple?
Si vous souhaitez centrer le bouton, une bonne façon de le faire est de définir le haut et la gauche à 50%, puis en ajoutant des marges négatives égales à la moitié de la taille du bouton:
.video a {
position: absolute;
display: block;
background: url(url_to_play_button_image.png);
height: 40px;
width: 40px;
top: 50%;
left: 50%;
margin: -20px 0 0 -20px;
}
Une façon de le faire qui offre beaucoup de flexibilité sans balisage HTML supplémentaire (contrairement à la plupart des solutions suggérées lorsque les gens posent des questions sur les superpositions d'images) est d'utiliser le :after
Sélecteur CSS. En supposant qu'il y ait un div de la classe "vidéo" autour de chaque image, quelque chose comme:
.video:after {
content: "";
position: absolute;
top: 0;
width: 150px;
height: 120px;
z-index: 100;
background: transparent url(play.png) no-repeat center;
pointer-events: none;
}
Modifiez les valeurs de width
, height
et z-index
selon les besoins, selon le reste de votre feuille de style. Cela fonctionne bien sans interférer avec d'autres codes que vous pourriez avoir, comme un div utilisé pour contenir une légende.
Ajoutez un sélecteur de vol stationnaire pour un éclat supplémentaire:
.video:hover:after {
content: "";
position: absolute;
top: 0;
width: 150px;
height: 120px;
z-index: 100;
background: transparent url(play_highlight.png) no-repeat center;
pointer-events: none;
}
Court, propre, entièrement réactif, sans HTML supplémentaire:
<a class="youtube" href="http://youtube.com/watch?v={video id here}">
<img src="http://i3.ytimg.com/vi/{video id here}/default.jpg" alt="{ video title here }" />
</a>
CSS:
.youtube {
position: relative;
display: inline-block;
}
.youtube:before {
content: "";
position: absolute;
width: 100%;
height: 100%;
z-index: 10;
background: transparent url({play icon url here}) center center no-repeat;
}
PS: vous pouvez même rendre la taille de l'icône de lecture sensible (en fonction de la taille de la vignette) en ajoutant background-size
au .youtube:before
modes.
Par exemple:
.youtube:before {
background-size: 30%;
}
Vous pouvez également utiliser un service
http://halgatewood.com/youtube/
Comme ceci: http://halgatewood.com/youtube/i/youtube_id.jpg (redirige vers Amazon)
Par exemple: http://halgatewood.com/youtube/i/aIgY20n3n0Y.jpg (redirige vers Amazon)
le service a été supprimé, je suppose que trop de gens l'ont bombardé :) maintenant c'est sur github
https://halgatewood.com/easily-add-play-buttons-to-youtube-video-thumbnails/ (lien brisé) https://github.com/halgatewood/youtube -thumbnail-enhancer
Voici un autre service qui fait la même chose (comme suggéré par muktesh patel):