<section class="skeleton">
<div class="skeleton__navbar">
<div class="skeleton__nav-item">
</div>
<div class="skeleton__nav-box">
<div class="skeleton__nav-text">Home</div>
<div class="skeleton__nav-text">About Us</div>
<div class="skeleton__nav-text">Services</div>
<div class="skeleton__nav-text">Contact</div>
</div>
<div class="skeleton__nav-item"></div>
</div>
<div class="skeleton__header">
<div class="skeleton__circle"></div>
<div class="skeleton__img"></div>
<div class="skeleton__info"></div>
</div>
<div class="skeleton__products">
<div class="skeleton__product"></div>
<div class="skeleton__product"></div>
<div class="skeleton__product"></div>
</div>
</section>
:root {
--gradient: linear-gradient(90deg, #ddd 0px, #e8e8e8 40px, #ddd 80px);
--grey: #eee;
--text: #ccc;
--animation: shine 1.6s infinite linear;
--animation-header: shine-header 1.6s infinite linear;
}
html, body {
padding: 0;
margin: 0;
font-family: sans-serif;
}
.skeleton {
z-index: 100;
position: fixed;
left: 50%;
transform: translate(-50%, 0);
width: 100%;
height: 100%;
background-color: white;
}
@media (min-width: 1200px) {
.skeleton {
max-width: 1200px;
}
}
.skeleton__navbar {
width: 100%;
height: 100px;
background: white;
display: flex;
align-items: flex-end;
justify-content: space-between;
}
.skeleton__nav-item {
width: 100px;
height: 50px;
background-image: var(--gradient);
animation: var(--animation);
background-size: 275px;
}
.skeleton__nav-box {
height: 50px;
display: flex;
flex-grow: 1;
justify-content: space-evenly;
align-items: center;
}
.skeleton__nav-text {
color: var(--text);
}
.skeleton__header {
margin-top: 2rem;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 2rem;
}
.skeleton__circle {
width: 275px;
height: 275px;
background-image: var(--gradient);
animation: var(--animation-header);
background-size: 300px;
border-radius: 50%;
}
.skeleton__img {
width: 325px;
height: 250px;
background-image: var(--gradient);
animation: var(--animation-header);
background-size: 300px;
}
.skeleton__info {
width: 200px;
height: 250px;
background-image: var(--gradient);
animation: var(--animation-header);
background-size: 300px;
}
.skeleton__products {
margin-top: 2rem;
display: flex;
justify-content: space-evenly;
}
.skeleton__product {
width: 200px;
height: 200px;
background-image: var(--gradient);
animation: var(--animation);
background-size: 300px;
}
@media (max-width: 1200px) {
.skeleton__navbar,
.skeleton__header,
.skeleton__products {
flex-direction: column;
}
.skeleton__navbar {
align-items: flex-start;
}
.skeleton__nav-box,
.skeleton__nav-text,
.skeleton__img,
.skeleton__info,
.skeleton__products {
display: none;
}
.skeleton__nav-item {
width: 100%;
}
}
@keyframes shine {
0% {
background-position: -100px;
}
40%,
100% {
background-position: 200px;
}
}
@keyframes shine-header {
0% {
background-position: -100px;
}
40%,
100% {
background-position: 270px;
}
}
const elements = {
skeleton: document.querySelector('.skeleton')
}
// Remove setTimeOut
setTimeOut(() => {
window.addEventListener("load", () => {
document.body.style.overflow = "visible";
elements.skeleton.style.display = "none";
});
}, 15000);
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.