Reputation: 147
YouTube video iframe can be embeded for example this way: https://stackblitz.com/edit/angular-youtube-video-in-iframe?file=src%2Fapp%2Fapp.component.ts
Basically YouTube embeds drastically reduce page load speeds, especially on mobile. Since we use them on many of our pages this is an issue.
Is there a way to set a screenshot image with a play button in the place of the YouTube embed in Angular, and only load the actual YouTube video when the user clicks it?
Upvotes: 0
Views: 2350
Reputation: 54
You can use srcdoc attribute inside your iframe tag to load an image. Please see the following example as reference:
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/Y8Wp3dafaMQ"
srcdoc="<style>*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}</style><a href=https://www.youtube.com/embed/Y8Wp3dafaMQ?autoplay=1><img src=https://img.youtube.com/vi/Y8Wp3dafaMQ/hqdefault.jpg alt='Video The Dark Knight Rises: What Went Wrong? – Wisecrack Edition'><span>▶</span></a>"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="The Dark Knight Rises: What Went Wrong? – Wisecrack Edition"
></iframe>
Source:
How to lazy load a youtube video embedded on an iframe?
https://codepen.io/chriscoyier/pen/GRKZryx
https://css-tricks.com/lazy-load-embedded-youtube-videos/
Upvotes: 2