Keith

Website Layout With Video Background

by Keith Rowles • 04/11/2023HTML

Diagram of a robot pointing to some elements

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