Overview
- Quick and simple
- No
npm i
- Fully responsive
- Feel free to Copy & Paste
1. Make a component for iframe:
YoutubeEmbed.js
import React from "react";
import PropTypes from "prop-types";
const YoutubeEmbed = ({ embedId }) => (
<div className="video-responsive">
<iframe
width="853"
height="480"
src={`https://www.youtube.com/embed/${embedId}`}
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
title="Embedded youtube"
/>
</div>
);
YoutubeEmbed.propTypes = {
embedId: PropTypes.string.isRequired
};
export default YoutubeEmbed;
2. Add some css for responsiveness:
styles.css
.video-responsive {
overflow: hidden;
padding-bottom: 56.25%;
position: relative;
height: 0;
}
.video-responsive iframe {
left: 0;
top: 0;
height: 100%;
width: 100%;
position: absolute;
}
3. Use it
Couldn't be simpler. Easy-breezy:
import React from "react";
import "./styles.css";
import YoutubeEmbed from "./YoutubeEmbed";
export default function App() {
return (
<div className="App">
<h1>Youtube Embed</h1>
<YoutubeEmbed embedId="rokGy0huYEA" />
</div>
);
}
Result
Latest comments (19)
can we hide the info of the video and the links that redirect to youtube
Really really need it, thank you very much !
This was super helpful, and straight to the point. Thank you so much!
can you write it in functional components?
Thank you.
Funciona bien. Pero me sale este error 404 en la consola de chrome:
Thanks, works like a charm!
This was awesome! Worked really well for me as well!
Nice!
the example video shows a thumbnail as expected but when i try with 2 videos they don't show any thumbnail but just a black screen! do you have any idea?