<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Ice Cream Hero</title>
<style>
* {
box-sizing: border-box;
}
body,
html {
margin: 0;
padding: 0;
font-family: "Poppins", sans-serif;
background: #00aaff;
overflow: hidden;
}
.hero-section {
width: 100vw;
height: 100vh;
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
padding: 50px;
overflow: hidden;
}
img.floating.float6.active {
left: 1px;
}
.hero-text {
max-width: 40%;
color: white;
opacity: 0;
transform: translateX(-100px);
transition: all 1s ease-out;
/* Slowed from 1s to 1.8s */
z-index: 3;
}
.hero-text.show {
opacity: 1;
transform: translateX(0);
}
.hero-text h1 {
font-size: 3rem;
margin-bottom: 1rem;
}
.hero-text p {
font-size: 1.1rem;
margin-bottom: 1.5rem;
}
.btns img {
width: 150px;
margin-right: 10px;
transition: all 0.8s ease;
/* Slowed from 0.5s to 0.8s */
}
.btns img:hover {
transform: scale(1.05);
}
.main-image {
height: 100%;
max-height: 90vh;
opacity: 0;
transform: translateY(80px);
position: absolute;
right: 50px;
transition: all 2.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
/* Slowed from 1.5s to 2.2s */
z-index: 2;
}
.main-image.loaded {
opacity: 1;
bottom: 0;
left: 38%;
transform: translateY(0) translateX(0);
}
.main-image.active {
transform: rotate(5deg);
left: 63%;
bottom: 0;
transition: all 1.5s ease;
/* Slowed from 1s to 1.5s */
}
.floating {
position: absolute;
opacity: 0;
transform: translateY(80px);
transition: all 2.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.floating.loaded {
opacity: 1;
transform: translateY(0);
}
img.floating.float1.active {
left: 61%;
top: 4%;
}
.floating.active {
transition: all 1.8s ease;
}
img.floating.float4.active {
bottom: 4%;
right: 35%;
z-index: 999;
}
img.floating.float3.active {
bottom: 32%;
left: 55%;
}
.float1 {
top: 9%;
left: 9%;
transition-delay: 0.2s;
}
img.floating.float2.active {
top: 8%;
right: 14%;
}
.float2 {
top: 13%;
right: 28%;
transition-delay: 0.3s;
width: 80px;
}
.float3 {
bottom: 32%;
left: 30%;
transition-delay: 0.4s;
}
.float4 {
bottom: 20%;
right: 32%;
transition-delay: 0.5s;
width: 110px;
}
.float5 {
top: 50%;
right: 1%;
transition-delay: 0.6s;
width: 102px;
}
.float6 {
bottom: 4%;
left: -2%;
transition-delay: 0.7s;
width: 190px;
}
.float7 {
bottom: 0px;
right: 4%;
transition-delay: 0.8s;
width: 200px;
}
</style>
</head>
<body>
<div class="hero-section">
<div class="hero-text">
<h1>ICE CREAM ON THE BOAT</h1>
<p>
Make your picnic by the lake even more memorable with our on-demand
ice cream app. Whether you're relaxing with fam, spending time with
friends, or vibing solo – we deliver frozen treats straight to your
picnic spot.
</p>
<div class="btns">
<img src="appstore.png" alt="App Store" />
<img src="playstore.png" alt="Google Play" />
</div>
</div>
<div id="mainimagebox">
<img
src="/images/hands-phone.png"
class="main-image"
alt="Phone"
onload="imageLoaded(this)"
/>
<img
src="/images/cone.png"
class="floating float1"
onload="imageLoaded(this)"
/>
<img
src="/images/blueberry.png"
class="floating float2"
onload="imageLoaded(this)"
/>
<img
src="/images/blur-blueberry.png"
class="floating float3"
onload="imageLoaded(this)"
/>
<img
src="/images/cup.png"
class="floating float4"
onload="imageLoaded(this)"
/>
<img
src="/images/chocbar.png"
class="floating float5"
onload="imageLoaded(this)"
/>
<img
src="/images/boat-left.png"
class="floating float6"
onload="imageLoaded(this)"
/>
<img
src="/images/blur-boat.png"
class="floating float7"
onload="imageLoaded(this)"
/>
</div>
</div>
<script>
function imageLoaded(img) {
img.classList.add("loaded");
if (
img.classList.contains("main-image") ||
img.classList.contains("floating")
) {
setTimeout(() => {
img.classList.add("active");
}, 4000);
}
}
window.addEventListener("DOMContentLoaded", () => {
const heroText = document.querySelector(".hero-text");
setTimeout(() => {
heroText.classList.add("show");
}, 5000);
});
</script>
</body>
</html>
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter