Website Layout With Video Background
by Keith Rowles • 04/11/2023HTML
Summary
Modern responsive landing page with a navbar, hero section, social icons and a video playing in the background.
I have uploaded the assets on a shared host.
The demo is on JS Fiddle.
HTML
Here is the html.
<section class="showcase">
<header>
<h2 class="logo">Travel</h2>
<div class="toggle"></div>
</header>
<video
src="https://www.ragrog.com.au/code/video/explore-small.mp4"
muted
loop
autoplay
></video>
<div class="overlay"></div>
<div class="text">
<h2>Never Stop</h2>
<h3>Exploring the world.</h3>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eligendi error
sed ea! Tempore quos dolore provident ad soluta! Provident, eligendi.
</p>
<p><a href="">Explore</a></p>
</div>
<ul class="social">
<li>
<a href="#"
><img
src="https://www.ragrog.com.au/code/video/facebook.png"
alt="facebook"
/></a>
</li>
<li>
<a href="#"
><img
src="https://www.ragrog.com.au/code/video/twitter.png"
alt="twitter"
/></a>
</li>
<li>
<a href="#"
><img
src="https://www.ragrog.com.au/code/video/instagram.png"
alt="instagram"
/></a>
</li>
</ul>
</section>
<section class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Destination</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Contact</a></li>
</ul>
</section>
CSS
Here is the css.
@import url('https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap');
:root {
--overlay-color: #03a9f4;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
.showcase {
position: absolute;
right: 0;
width: 100%;
min-height: 100vh;
padding: 100px;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #111;
color: white;
z-index: 2;
transition: 0.5s;
}
.showcase.active {
right: 300px;
}
.logo {
text-transform: uppercase;
cursor: pointer;
}
.showcase header {
position: absolute;
top: 0;
left: 0;
width: 100%;
padding: 40px 100px;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
}
.toggle {
position: relative;
width: 60px;
height: 60px;
background: url('https://www.ragrog.com.au/code/video/menu.png');
background-repeat: no-repeat;
background-size: 30px;
background-position: center;
cursor: pointer;
}
.toggle.active {
background: url('https://www.ragrog.com.au/code/video/close.png');
background-repeat: no-repeat;
background-size: 25px;
background-position: center;
}
.showcase video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.8;
}
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: var(--overlay-color);
mix-blend-mode: overlay;
}
.text {
position: relative;
z-index: 10;
}
.text h2 {
font-size: 5em;
font-weight: 800;
line-height: 1em;
text-transform: uppercase;
}
.text h3 {
font-size: 4em;
font-weight: 700;
line-height: 1em;
text-transform: uppercase;
}
.text p {
font-size: 1.2em;
font-weight: 400;
margin: 20px 0;
max-width: 700px;
}
.text a {
display: inline-block;
font-size: 1.2em;
background: white;
padding: 10px 30px;
text-decoration: none;
color: #111;
margin-top: 10px;
text-transform: uppercase;
letter-spacing: 2px;
transition: 0.2s;
}
.text a:hover {
letter-spacing: 6px;
}
.social {
position: absolute;
bottom: 20px;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
}
.social li {
list-style: none;
}
.social li a {
display: inline-block;
filter: invert(1);
margin-right: 20px;
transform: scale(0.5);
transition: 0.5s;
}
.social li a:hover {
transform: scale(0.5) translateY(-15px);
}
.menu {
position: absolute;
top: 0;
right: 0;
width: 300px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.menu ul {
position: relative;
list-style: none;
}
.menu ul li a {
text-decoration: none;
font-size: 24px;
color: #111;
}
.menu ul li a:hover {
color: var(--overlay-color);
}
@media (max-width: 798px) {
.showcase,
.showcase header {
padding: 40px;
}
.text h2 {
font-size: 3em;
}
.text h3 {
font-size: 2em;
}
}
JavaScript
const menuToggle = document.querySelector('.toggle');
const showcase = document.querySelector('.showcase');
menuToggle.addEventListener('click', () => {
menuToggle.classList.toggle('active');
showcase.classList.toggle('active');
});
Demo
Open demo on JS Fiddle.
Link to Demo