HTML preprocessors can make writing HTML more powerful or convenient. For instance, Markdown is designed to be easier to write and read for text documents and you could write a loop in Pug.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. So you don't have access to higher-up elements like the <html>
tag. If you want to add classes there that can affect the whole document, this is the place to do it.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. If you need things in the <head>
of the document, put that code here.
The resource you are linking to is using the 'http' protocol, which may not work when the browser is using https.
CSS preprocessors help make authoring CSS easier. All of them offer things like variables and mixins to provide convenient abstractions.
It's a common practice to apply CSS to a page that styles elements such that they are consistent across all browsers. We offer two of the most popular choices: normalize.css and a reset. Or, choose Neither and nothing will be applied.
To get the best cross-browser support, it is a common practice to apply vendor prefixes to CSS properties and values that require them to work. For instance -webkit-
or -moz-
.
We offer two popular choices: Autoprefixer (which processes your CSS server-side) and -prefix-free (which applies prefixes via a script, client-side).
Any URLs added here will be added as <link>
s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.
You can apply CSS to your Pen from any stylesheet on the web. Just put a URL to it here and we'll apply it, in the order you have them, before the CSS in the Pen itself.
You can also link to another Pen here (use the .css
URL Extension) and we'll pull the CSS from that Pen and include it. If it's using a matching preprocessor, use the appropriate URL Extension and we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
JavaScript preprocessors can help make authoring JavaScript easier and more convenient.
Babel includes JSX processing.
Any URL's added here will be added as <script>
s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.
You can apply a script from anywhere on the web to your Pen. Just put a URL to it here and we'll add it, in the order you have them, before the JavaScript in the Pen itself.
If the script you link to has the file extension of a preprocessor, we'll attempt to process it before applying.
You can also link to another Pen here, and we'll pull the JavaScript from that Pen and include it. If it's using a matching preprocessor, we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
Search for and use JavaScript packages from npm here. By selecting a package, an import
statement will be added to the top of the JavaScript editor for this package.
Using packages here is powered by esm.sh, which makes packages from npm not only available on a CDN, but prepares them for native JavaScript ESM usage.
All packages are different, so refer to their docs for how they work.
If you're using React / ReactDOM, make sure to turn on Babel for the JSX processing.
If active, Pens will autosave every 30 seconds after being saved once.
If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.
If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.
Visit your global Editor Settings.
<main>
<div class="noisy__bg"></div>
<nav class="menu">
<a class="menu__item" data-img="https://source.unsplash.com/m663zRzRe40/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Lidia Slater</span></span>
<span class="menu__item-sub" data-splitting>Fashion Week Luxembourg</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/8gGUMSQQz0E/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Selina Galvan</span></span>
<span class="menu__item-sub" data-splitting>Milano Fashion Week</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/42e14e_DSWE/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Selina Galvan</span></span>
<span class="menu__item-sub" data-splitting>London Amber Convention</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/4nulm-JUYFo/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Jennifer Roth</span></span>
<span class="menu__item-sub" data-splitting>Lisbon Fashion Show</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/AtrTXQnbxI4/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Lindsay Mcgee</span></span>
<span class="menu__item-sub" data-splitting>2019 New York Trends</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/q5Xd4lzxE0g/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Arielle Kearney</span></span>
<span class="menu__item-sub" data-splitting>Rotterdam Fashion 2020</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/ZG3AlXw9FB0/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Phebe Moon</span></span>
<span class="menu__item-sub" data-splitting>Fashion Week Napoli</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/u6LGX2VMOP4/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Tala Johns</span></span>
<span class="menu__item-sub" data-splitting>Stockolm Fashion</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/tLKOj6cNwe0/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Elina Clarkson</span></span>
<span class="menu__item-sub" data-splitting>2020 Roma Fashion</span>
</a>
<a class="menu__item" data-img="https://source.unsplash.com/LyeduBb2Auk/300x400">
<span class="menu__item-text"><span class="menu__item-innertext">Weronika Irwin</span></span>
<span class="menu__item-sub" data-splitting>Ukrainian Fashion Center</span>
</a>
</nav>
</main>
<!-- Loading Screen -->
<div class="loading__wrapper">
<div class="loader--text">Loading...</div>
</div>
<!-- Credits -->
<div class="credits">
Inspired by <a href="https://tympanus.net/codrops/2020/07/08/exploring-animations-for-menu-hover-effects/"
target="_blank">Codrops</a>
</div>
<!-- Noisy Background EL -->
<div class="noisy__bg"></div>
<!-- Cursors -->
<svg class="cursor cursor__small" width="80" height="80" viewBox="0 0 80 80">
<circle cx="40" cy="40" r="5" />
</svg>
<svg class="cursor cursor__large" width="80" height="80" viewBox="0 0 80 80">
<circle cx="40" cy="40" r="20" />
</svg>
<div class="support">
<a href="https://twitter.com/DevLoop01" target="_blank"><i class="fab fa-twitter-square"></i></a>
<a href="https://dribbble.com/devloop01" target="_blank"><i class="fab fa-dribbble"></i></a>
</div>
@import url("https://fonts.googleapis.com/css2?family=Notable&display=swap");
:root {
--color-text: #e4e4e4;
--color-bg: #111111;
--cursor-stroke: #dddddd;
--cursor-fill: #e2e2e2;
--cursor-stroke-width: 2px;
}
*,
*::after,
*::before {
box-sizing: border-box;
}
:root {
font-size: 12px;
}
body {
margin: 0;
color: var(--color-text);
background-color: var(--color-bg);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
}
a {
text-decoration: none;
outline: none;
cursor: pointer;
}
a:hover,
a:focus {
outline: none;
}
.menu {
padding: 20vh 0 20vh 0;
width: 100vw;
position: relative;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
counter-reset: menucounter;
opacity: 0;
}
.menu__item {
display: flex;
flex-direction: column;
align-items: start;
position: relative;
padding-left: 25vw;
&::before {
counter-increment: menucounter;
content: counters(menucounter, ".", decimal-leading-zero);
position: absolute;
top: -25%;
left: 18%;
transform: translateX(1rem);
height: 100%;
display: flex;
align-items: center;
font-weight: bold;
font-size: 8vw;
font-family: "Notable";
transition: transform 0.2s, opacity 0.08s;
color: var(--color-text);
opacity: 0;
pointer-events: none;
}
&:hover {
&::before {
opacity: 0.2;
transform: translateX(0);
}
.menu__item-innertext {
color: var(--color-text);
}
.menu__item-sub {
opacity: 1;
transform: translateX(0);
}
.menu__item-sub {
.char {
transform: translate(0) rotate(0);
opacity: 1;
}
}
}
}
.menu__item-text {
position: relative;
cursor: pointer;
display: block;
overflow: hidden;
padding: 1vh 0;
font-size: 4vw;
}
.menu__item-innertext {
display: block;
font-family: "Notable", serif;
font-weight: 300;
text-transform: uppercase;
white-space: nowrap;
color: transparent;
-webkit-text-stroke: 2px var(--color-text);
transition: color 0.05s;
mix-blend-mode: screen;
transform: translateY(200%);
}
.menu__item-sub {
display: flex;
text-transform: uppercase;
font-weight: bold;
font-family: sans-serif;
white-space: nowrap;
position: relative;
overflow: hidden;
mix-blend-mode: difference;
.word:not(:first-child) {
margin-left: 0.5ch;
}
.char {
--char-delay: 6ms;
display: inline-block;
transform: translateY(-100%) rotate(-15deg);
opacity: 0;
transition: transform 0.25s ease-in-out, opacity 0.3s;
transition-delay: calc(0ms + var(--char-index) * var(--char-delay));
}
}
.image-card {
position: absolute;
z-index: -1;
width: 200px;
height: 300px;
top: 0;
left: 0;
pointer-events: none;
}
.image-card__inner,
.image-card__img {
width: 100%;
height: 100%;
position: relative;
}
.image-card__img {
background-size: cover;
background-position: 50% 50%;
opacity: 0;
}
.cursor {
display: none;
}
.credits {
font-family: sans-serif;
font-size: 0.9rem;
color: #fff;
position: fixed;
right: 20px;
top: 20px;
z-index: 20;
a {
color: #6fe2ff;
}
}
@media screen and (max-width: 54em) {
.menu {
padding-top: 10rem;
}
.menu__item {
flex: none;
padding-left: 6rem;
&::before {
top: -5%;
left: 1%;
}
}
.menu__item-text {
padding: 0.5rem;
font-size: 6vw;
}
.menu__item-sub {
display: none;
}
}
@media (any-pointer: fine) {
.cursor {
position: fixed;
top: 0;
left: 0;
display: block;
pointer-events: none;
&.cursor__small {
circle {
fill: var(--cursor-fill);
opacity: 0.5;
}
}
&.cursor__large {
circle {
fill: none;
stroke: var(--cursor-stroke);
stroke-width: var(--cursor-stroke-width);
opacity: 0.5;
}
}
}
}
.loading__wrapper {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: #000;
z-index: 200;
.loader--text {
color: #fff;
font-family: "Montserrat";
font-weight: 500;
margin-bottom: 1.4rem;
}
}
// Background Noise
.noisy__bg {
position: fixed;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
z-index: -1;
&::before {
content: "";
position: fixed;
opacity: 0.015;
width: 300%;
height: 300%;
left: -110%;
top: -110%;
animation: grain 8s steps(10) infinite;
background: url("data:image/jpeg;base64,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");
}
}
@keyframes grain {
0%,
to {
-webkit-transform: translate(0);
transform: translate(0);
}
10% {
-webkit-transform: translate(-5%, -10%);
transform: translate(-5%, -10%);
}
20% {
-webkit-transform: translate(-15%, 5%);
transform: translate(-15%, 5%);
}
30% {
-webkit-transform: translate(7%, -25%);
transform: translate(7%, -25%);
}
40% {
-webkit-transform: translate(-5%, 25%);
transform: translate(-5%, 25%);
}
50% {
-webkit-transform: translate(-15%, 10%);
transform: translate(-15%, 10%);
}
60% {
-webkit-transform: translate(15%);
transform: translate(15%);
}
70% {
-webkit-transform: translateY(15%);
transform: translateY(15%);
}
80% {
-webkit-transform: translate(3%, 35%);
transform: translate(3%, 35%);
}
90% {
-webkit-transform: translate(-10%, 10%);
transform: translate(-10%, 10%);
}
}
.support{
position: absolute;
right: 10px;
bottom: 10px;
padding: 10px;
display: flex;
a{
margin: 0 10px;
color: #fff;
font-size: 1.8rem;
backface-visibility: hidden;
transition: all 150ms ease;
&:hover{
transform: scale(1.1);
}
}
}
console.clear();
let mousePos = { x: 0, y: 0 };
let mousePosCache = mousePos;
let direction = {
x: mousePosCache.x - mousePos.x,
y: mousePosCache.y - mousePos.y
};
let cursors = [];
class App {
constructor() {
preloader(".menu__item").then(() => {
Splitting();
const menuEl = document.querySelector(".menu");
new LocomotiveScroll({ el: menuEl, smooth: true });
new Menu(menuEl);
cursors.push(
new Cursor(document.querySelector(".cursor__small"), 0),
new Cursor(document.querySelector(".cursor__large"), 0.4)
);
window.addEventListener("mousemove", (e) => {
mousePos = getMousePos(e);
cursors.forEach((cursor) => {
cursor.update();
});
});
});
}
}
class Menu {
constructor(el) {
this.el = el;
this.menuItems = this.el.querySelectorAll(".menu__item");
this.animatableProperties = {
tx: { previous: 0, current: 0, amt: 0.1 },
ty: { previous: 0, current: 0, amt: 0.1 },
rotation: { previous: 0, current: 0, amt: 0.08 },
skewx: { previous: 0, current: 0, amt: 0.08 },
brightness: { previous: 1, current: 1, amt: 0.08 },
saturation: { previous: 0, current: 0, amt: 0.1 }
};
this.menuItemInstances = [];
[...this.menuItems].forEach((item, pos) =>
this.menuItemInstances.push(
new MenuItem(item, pos, this.animatableProperties)
)
);
gsap.to(this.el, 0.1, { opacity: 1 });
this.showMenuItems();
}
showMenuItems() {
gsap.fromTo(
this.menuItemInstances.map((item) => item.DOM.innerText),
{
rotation: (i) => (i % 2 == 0 ? 15 : -15)
},
{
duration: 1.2,
ease: "Expo.easeOut",
transformOrigin: (i) => (i % 2 == 0 ? "left bottom" : "right bottom"),
y: 0,
rotation: 0,
delay: (pos) => 0.15 + pos * 0.06
}
);
}
}
class MenuItem {
constructor(el, menuItemIndex, animatableProps) {
this.DOM = { el };
this.DOM.innerText = this.DOM.el.querySelector(".menu__item-innertext");
this.menuItemIndex = menuItemIndex;
this.animatableProps = animatableProps;
this.imageURL = this.DOM.el.getAttribute("data-img");
this.layout();
this.initEvents();
}
layout() {
this.DOM.card = document.createElement("div");
this.DOM.card.className = "image-card";
this.DOM.cardInner = document.createElement("div");
this.DOM.cardInner.className = "image-card__inner";
this.DOM.cardImage = document.createElement("div");
this.DOM.cardImage.className = "image-card__img";
this.DOM.cardImage.style.backgroundImage = `url(${this.imageURL})`;
this.DOM.cardInner.appendChild(this.DOM.cardImage);
this.DOM.card.appendChild(this.DOM.cardInner);
this.DOM.el.appendChild(this.DOM.card);
}
initEvents() {
const onMouseEnter = () => {
this.showImage();
this.firstRAFCycle = true;
this.renderLoop();
};
const onMouseLeave = () => {
this.stopRender();
this.hideImage();
};
this.DOM.el.addEventListener("mouseenter", onMouseEnter);
this.DOM.el.addEventListener("mouseleave", onMouseLeave);
}
calcBounds() {
this.bounds = {
el: this.DOM.el.getBoundingClientRect(),
card: this.DOM.card.getBoundingClientRect(),
cardImage: this.DOM.cardImage.getBoundingClientRect()
};
}
showImage() {
gsap.killTweensOf(this.DOM.cardInner);
gsap.killTweensOf(this.DOM.cardImage);
gsap
.timeline({
onStart: () => {
this.DOM.el.style.zIndex = this.DOM.el.children.length;
}
})
.to(this.DOM.cardInner, {
duration: 0.8,
ease: "elastic.out(1, 0.75)",
transformOrigin: `50% ${direction.y < 0 ? "-20%" : "120%"}`,
startAt: { rotation: `${direction.x < 0 ? "+" : "-"}25deg` },
rotation: 0
})
.to(
this.DOM.cardImage,
{
duration: 0.2,
ease: "Sine.easeOut",
startAt: { opacity: 0, scale: 0.6 },
opacity: 1,
scale: 1
},
0
);
}
hideImage() {
gsap.killTweensOf(this.DOM.cardInner);
gsap.killTweensOf(this.DOM.cardImage);
gsap
.timeline({
onStart: () => {
this.DOM.el.style.zIndex = 1;
}
})
.to(this.DOM.cardInner, {
duration: 0.8,
ease: "elastic.out(1, 0.75)",
transformOrigin: `50% ${direction.y < 0 ? "-20%" : "120%"}`,
rotation: `${direction.x < 0 ? "+" : "-"}25deg`
})
.to(
this.DOM.cardImage,
{
duration: 0.2,
ease: "Sine.easeOut",
opacity: 0,
scale: 0.6
},
0
);
}
renderLoop() {
if (!this.requestId) {
this.requestId = requestAnimationFrame(() => this.render());
}
}
stopRender() {
if (this.requestId) {
window.cancelAnimationFrame(this.requestId);
this.requestId = undefined;
}
}
render() {
this.requestId = undefined;
if (this.firstRAFCycle) {
this.calcBounds();
}
this.updateAnimatableProps();
direction = {
x: mousePosCache.x - mousePos.x,
y: mousePosCache.y - mousePos.y
};
mousePosCache = mousePos;
gsap.set(this.DOM.card, {
x: this.animatableProps.tx.previous,
y: this.animatableProps.ty.previous,
rotation: this.animatableProps.rotation.previous,
skewX: this.animatableProps.skewx.previous,
filter: `brightness(${this.animatableProps.brightness.previous}) saturate(${this.animatableProps.saturation.previous})`
});
this.firstRAFCycle = false;
this.renderLoop();
}
updateAnimatableProps() {
const mouseDistanceX = clamp(Math.abs(mousePosCache.x - mousePos.x), 0, 100);
this.animatableProps.tx.current =
Math.abs(mousePos.x - this.bounds.el.left) - this.bounds.card.width / 2;
this.animatableProps.ty.current =
Math.abs(mousePos.y - this.bounds.el.top) - this.bounds.card.height / 2;
this.animatableProps.rotation.current = this.firstRAFCycle
? 0
: map(mouseDistanceX, 0, 100, 0, direction.x < 0 ? 30 : -30);
this.animatableProps.skewx.current = this.firstRAFCycle
? 0
: map(mouseDistanceX, 0, 100, 1, direction.x < 0 ? -60 : 60);
this.animatableProps.brightness.current = this.firstRAFCycle
? 1
: map(mouseDistanceX, 0, 100, 1, 10);
this.animatableProps.saturation.current = this.firstRAFCycle
? 1
: map(mouseDistanceX, 0, 100, 1, 8);
for (const key in this.animatableProps) {
this.animatableProps[key].previous = this.firstRAFCycle
? this.animatableProps[key].current
: lerp(
this.animatableProps[key].previous,
this.animatableProps[key].current,
this.animatableProps[key].amt
);
}
}
}
class Cursor {
constructor(el, duration) {
this.el = el;
this.duration = duration;
this.el.style.opacity = 0;
this.bounds = this.el.getBoundingClientRect();
}
update() {
gsap.to(this.el, {
duration: this.duration,
opacity: 1,
x: mousePos.x - this.bounds.width / 2,
y: mousePos.y - this.bounds.height / 2
});
}
}
// UTILITY FUNCTIONS
function preloader(selector) {
return new Promise((resolve) => {
const imgwrap = document.createElement("div");
imgwrap.style.visibility = "hidden";
document.body.appendChild(imgwrap);
[...document.querySelectorAll(selector)].forEach((el) => {
const imgEl = document.createElement("img");
imgEl.style.width = 0;
imgEl.src = el.dataset.img;
imgEl.className = "preload";
imgwrap.appendChild(imgEl);
});
imagesLoaded(document.querySelectorAll(".preload"), () => {
gsap.to(".loading__wrapper", {
duration: 0.8,
opacity: 0,
pointerEvents: "none",
onComplete: () => {
imgwrap.parentNode.removeChild(imgwrap);
document.body.classList.remove("loading");
resolve();
},
});
});
});
}
// Map number x from range [a, b] to [c, d]
function map(x, a, b, c, d) {
return ((x - a) * (d - c)) / (b - a) + c;
}
// Linear interpolation
function lerp(a, b, n) {
return (1 - n) * a + n * b;
}
function clamp(num, min, max) {
return num <= min ? min : num >= max ? max : num;
}
// Gets the mouse position
function getMousePos(e) {
let posx = 0;
let posy = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
} else if (e.clientX || e.clientY) {
posx = e.clientX + body.scrollLeft + document.documentElement.scrollLeft;
posy = e.clientY + body.scrollTop + document.documentElement.scrollTop;
}
return { x: posx, y: posy };
}
// INITIALIZE THE APP
const app = new App();
Also see: Tab Triggers