VideoBackground.tsx
import React from "react";
import styled from "styled-components";
const VIDEO_WIDTH = 1920;
const VIDEO_HEIGHT = 1080;
const VideoBackgroundWrapper = styled.div`
position: relative;
overflow: hidden;
width: 100vw;
height: 100vh;
@media (min-aspect-ratio: 16/9) {
--video-height: 56.25vw;
}
@media (max-aspect-ratio: 16/9) {
--video-width: 177.78vh;
}
`;
const VideoIframe = styled.iframe`
position: absolute;
top: 50%;
left: 50%;
width: var(--video-width, ${VIDEO_WIDTH}px);
height: var(--video-height, ${VIDEO_HEIGHT}px);
transform: translate(-50%, -50%);
`;
export const VideoBackground = ({ videoId, className }: any) => {
const yt = `https://www.youtube.com/embed/${videoId}?autoplay=1&controls=0&mute=1&loop=1&modestbranding=1&showinfo=0&enablejsapi=1&&widgetid=3&playlist=${videoId}`;
return (
<VideoBackgroundWrapper className={className ?? ""}>
<VideoIframe
width={VIDEO_WIDTH}
height={VIDEO_HEIGHT}
src={yt}
title="YouTube video player"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
/>
</VideoBackgroundWrapper>
);
};
app.tsx
export default function App() {
return (
<div className="video-layer">
<VideoBackground
className="image-layer"
videoId={data?.videoId ?? "PtDIVU_tlo0"}
/>
</div>
);
}
Top comments (0)