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.
<body>
<section>
<h2>Scroll Down To See Progress</h2>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae aliquid
unde fuga repellat odit modi deleniti dolorum aliquam accusamus nobis.
Nisi, quis! Esse natus fugit dolore dicta eveniet at, consequuntur neque
deserunt temporibus quo aspernatur facilis accusantium, possimus autem
praesentium. Iusto porro qui eos, quas ducimus rem in recusandae
quibusdam officia sint similique cupiditate veritatis fugiat suscipit
minus, ut quia. Nam et quo fugit aperiam ipsam non, molestiae sapiente
necessitatibus blanditiis aspernatur dicta consectetur, ad, odit atque
nesciunt quae tempore tenetur quod a repudiandae facere eos. Facilis
corporis voluptatum nisi dolore tenetur, non voluptates quidem
laboriosam recusandae quis sequi accusamus reprehenderit laudantium
deleniti autem vitae, commodi iusto debitis tempora cumque. Quos
asperiores unde laborum aperiam veniam qui eaque et obcaecati error sint
cum ipsum a, possimus ut odit, quia quibusdam, officiis aut? Nulla ut,
debitis explicabo, reprehenderit accusamus odit quisquam dignissimos
modi reiciendis eos eius necessitatibus et molestias cupiditate dolores,
asperiores animi voluptatibus. Maiores facere accusantium aliquam dicta
animi qui voluptas dolor explicabo amet nobis magni deleniti illo
impedit fugiat molestias earum temporibus minima, tenetur minus quaerat.
Obcaecati facere eaque dignissimos quaerat veniam vero quia quo? Illum,
ex itaque enim maxime amet blanditiis harum nobis ab minus dolorem?
Reiciendis, perferendis.
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Consectetur
itaque recusandae cupiditate inventore dolorum omnis architecto fuga ex
tempore eius veritatis enim molestiae vero molestias, quibusdam
deserunt? Ducimus dolore enim ipsum facere. Voluptate ea quisquam, omnis
quam adipisci, id dicta sit dolore facilis, porro modi consequatur nam!
Laborum eligendi quas inventore, expedita perferendis atque, sed
temporibus mollitia recusandae eos distinctio quos libero quasi repellat
delectus sequi hic quia ullam provident! Doloribus aliquam eum
obcaecati, illo consequuntur, dolorum officia sint rem ducimus sapiente
nobis veniam minus iste similique perspiciatis, maxime atque praesentium
repellat non debitis? Perferendis illum quasi eaque unde molestias
voluptate commodi reprehenderit totam voluptas architecto consectetur
illo aspernatur iste inventore alias tempora eos, neque, eligendi odio
modi officiis? Ea culpa sint ipsam quo quisquam ut quasi ex beatae
aspernatur eum distinctio suscipit iste ipsa id, non earum omnis
consequuntur nam quos. Porro error omnis quod iure ducimus beatae animi
asperiores reprehenderit temporibus voluptate? Dolores, obcaecati. Neque
quam vitae aliquid? Amet quos natus assumenda dolorum blanditiis?
Assumenda eligendi excepturi error sint cupiditate temporibus iste,
maiores recusandae reiciendis dolorem consequuntur, inventore quam
earum, tempore praesentium eveniet culpa neque adipisci nisi. Atque,
voluptatem praesentium vitae in velit qui molestiae eaque placeat
perferendis.
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde, magnam
quis illum expedita tempore consequatur similique ducimus aut voluptatum
nemo ratione saepe eum deleniti. Quod animi cumque nemo vel adipisci
ipsam dolorem quam totam quaerat. Iste harum cumque dolor reprehenderit
officiis necessitatibus voluptates molestiae illum? Placeat, eos soluta
autem vel velit nobis aspernatur cupiditate error sunt molestias iure,
explicabo possimus numquam? Porro molestias odio, tempora, odit atque
iure soluta aut praesentium deleniti iste consequatur quas! Similique
qui incidunt, recusandae minima delectus tempora porro aliquam molestias
labore ipsa in itaque ab? Quisquam doloremque tempore deserunt
cupiditate tempora nulla incidunt culpa? Doloremque dolore odit itaque
assumenda tenetur aliquam cumque minima. Officiis porro atque eaque
ratione perferendis commodi dicta fuga est voluptates aut? Dignissimos
suscipit id natus? Vero, cupiditate saepe numquam repudiandae possimus
voluptatem nemo nam iusto voluptate! Sequi consequatur nesciunt deleniti
sit architecto eveniet aut blanditiis, vitae alias dolor eaque! Magni
consectetur, obcaecati molestiae nesciunt nam tempora officiis iusto
veniam asperiores temporibus, ea molestias dignissimos quibusdam non
eveniet illo eius repellat ex laudantium. Eaque maiores ab soluta maxime
consectetur doloribus, veritatis saepe nesciunt ipsam eum earum
accusamus mollitia ad a id reiciendis cumque voluptate voluptates
placeat similique? Illo cumque alias itaque iure.
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro voluptate
optio nam deserunt delectus quibusdam voluptatibus impedit? Dolores sint
recusandae similique perferendis corporis earum suscipit velit
inventore, provident consequatur veniam incidunt delectus ex nemo quae
perspiciatis cumque! Inventore facere alias voluptate sint similique
debitis a? Iusto nisi commodi molestias optio repellendus assumenda, et
sapiente quaerat obcaecati deleniti cum ipsa earum laborum porro
inventore laboriosam similique? Sint sunt esse, fugit id ex placeat,
perferendis consequuntur corporis sapiente quas quo velit magni
voluptatibus doloribus tenetur odio delectus? Fuga eos delectus minus
perspiciatis earum qui harum non ex numquam? Quidem sit animi nostrum
voluptatibus magnam incidunt exercitationem neque molestias laudantium
velit excepturi alias voluptas, totam error. Expedita ratione odit
placeat! Incidunt eos error soluta, quia sapiente repudiandae aut totam.
Nulla quibusdam quis modi labore accusamus. Natus libero quidem officia
quibusdam harum mollitia soluta blanditiis, tempora rerum deleniti ea
dolores exercitationem dolorem. Veniam deleniti, quaerat, quasi ipsum
dolores odio quae obcaecati similique harum corporis id debitis,
officiis ipsa rem! Debitis delectus voluptatem aliquid qui aperiam ab
dignissimos in inventore perspiciatis possimus fuga officia ratione, vel
dolorum explicabo laudantium reiciendis at nihil nobis maiores alias?
Aut ipsum soluta, molestiae nemo nam autem culpa consequuntur
consectetur.
</p>
<br />
<p>
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Necessitatibus
repellendus autem explicabo voluptatem accusantium ut nam ipsa eos,
porro incidunt quos qui doloremque ullam? Autem tempora eaque cupiditate
quae! Natus tempora provident, animi dignissimos labore, facilis commodi
autem iure culpa nesciunt laboriosam perferendis error praesentium
quaerat eveniet nemo! Ea maiores sunt expedita tenetur ratione modi
cumque quibusdam dolores repellat. Et perferendis error eveniet dolor.
Nisi, velit doloribus repellat quas reprehenderit veritatis, dolore
assumenda delectus at ex necessitatibus vel fugit. Ipsa illo recusandae
ad ea, nam nemo vitae facere accusamus tempora, eveniet laboriosam,
rerum neque? Doloremque corporis atque facilis animi quo quidem ipsam
quia saepe, cupiditate soluta ipsa hic magni delectus, beatae aut
tenetur consectetur et nisi omnis consequatur. Tenetur necessitatibus
quae praesentium nulla provident voluptatem molestias debitis magni
ducimus culpa accusamus perspiciatis dicta laudantium, quos libero
mollitia sed consequuntur quis! Commodi enim sunt, assumenda repellat
quisquam iure error quia exercitationem. Voluptatem commodi saepe
architecto eius neque perspiciatis voluptas veritatis error numquam
similique libero accusantium, sed quisquam ipsum corporis quod optio et
magnam qui dignissimos vero. Placeat consectetur mollitia nam inventore
maiores illo repellendus ducimus ab labore et unde est numquam tempora
magni repudiandae voluptas doloremque accusantium, in voluptatem porro
voluptatibus!
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Temporibus
dolores porro laboriosam nemo suscipit et enim voluptate delectus minima
amet quia doloribus voluptates sint minus, totam, hic mollitia sapiente
atque doloremque. Nihil animi excepturi velit minus, voluptates eligendi
totam deserunt optio facilis ea quibusdam, consequatur quisquam rem
neque esse facere, deleniti molestiae sapiente? Placeat maiores, aut
rem, alias reprehenderit temporibus similique fuga vero accusamus totam
dolore blanditiis excepturi! Error molestias soluta laborum ab
consectetur nisi officiis eum eligendi debitis veniam! Maiores qui natus
iste, possimus quae magni blanditiis quis earum id eius, quia fuga,
exercitationem praesentium provident officiis ullam sapiente? Laudantium
quam tempora unde repellendus deleniti? Culpa ab assumenda veritatis quo
quasi. Blanditiis beatae libero perspiciatis soluta hic maxime saepe
nemo natus delectus unde magni omnis distinctio quasi architecto neque
error tenetur magnam a temporibus, assumenda dolorum. Est voluptates
aliquam atque, ex unde facere magnam perferendis, quia alias, fuga
voluptatem! Sit quam quae deleniti ut incidunt! Sint, consequuntur, quae
incidunt assumenda impedit soluta ad quis vel nostrum omnis facilis et,
fuga hic dolorum cupiditate ipsum? Veniam quidem non accusantium
explicabo debitis! Distinctio minima accusantium quod neque facilis
tenetur quasi esse itaque ut? Distinctio cupiditate corporis voluptates
a sequi, repudiandae accusantium.
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Dignissimos,
facilis ullam, accusantium quod repudiandae doloribus quos voluptatum
dolorum quisquam quia obcaecati modi molestiae et eligendi provident
atque temporibus. Accusamus laboriosam nam quaerat officiis ratione,
voluptatum corporis quos incidunt sapiente cum provident excepturi ipsum
animi iusto aperiam molestiae, nihil ipsa corrupti dolore ut aut a.
Omnis, possimus rem. Illum pariatur nam, sit cupiditate eum autem
quisquam excepturi inventore voluptatum, tempore nostrum dolorum veniam
voluptate ex corporis aliquam eaque officia, ad maiores assumenda
doloremque. Delectus magnam molestiae natus voluptatem animi id, quidem
architecto laboriosam magni illum commodi cupiditate laudantium iste
nobis dolor doloremque eos fugit velit at obcaecati accusamus unde.
Repellendus quae animi deleniti iure, ad soluta eum consectetur
consequatur temporibus. Rerum enim ullam, numquam mollitia, provident
vero facilis, quam iusto culpa sit nulla nostrum dolores ratione
molestiae nam. Corporis quae vel possimus praesentium illum, esse
aperiam hic odit optio? Mollitia dolores esse expedita praesentium
dignissimos, exercitationem suscipit reprehenderit quod quas animi dolor
cumque, necessitatibus perspiciatis sapiente? Ipsam aspernatur animi
rerum ipsa quam ab officiis non hic a dicta veritatis eius quidem qui
harum voluptates, illum, tempora tenetur consequuntur totam tempore ex
nam vel. Tempora reprehenderit asperiores perspiciatis ad, similique
illum harum?
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestiae
asperiores nemo fugiat, obcaecati, accusantium suscipit voluptate,
labore et dolor facilis fuga delectus in! Omnis eveniet rerum optio iste
doloremque, porro minima quisquam minus perferendis, illum nam nostrum
aliquid? Aspernatur sit, explicabo iste dolorum maiores sapiente!
Consectetur voluptates libero ducimus consequuntur, velit doloribus iste
quisquam assumenda, similique, ullam dolor accusantium exercitationem.
Officiis, qui esse. Consectetur ipsum rem a nesciunt laborum esse, eaque
soluta! Voluptate officiis praesentium, accusantium reiciendis
dignissimos vitae illum odio pariatur quis perferendis distinctio
consectetur necessitatibus ea? Sint tenetur fugiat culpa laudantium odio
amet sed doloremque, sapiente obcaecati ab deserunt dolorum ducimus
aperiam in, ipsa aliquam commodi quasi illum corrupti earum nobis hic
totam beatae. Facilis nulla eveniet expedita? Quo expedita totam tenetur
ab natus voluptatem reprehenderit, nobis minima esse dignissimos error
architecto nulla non eligendi at aut itaque, labore sit inventore hic,
quod in. Distinctio ipsam voluptatum sunt iure reprehenderit ad est,
doloribus harum obcaecati, nam vero mollitia laudantium debitis. Nemo
laboriosam, excepturi quibusdam quas saepe deleniti quam porro dolor
nihil cum! Autem quis molestias quia illum quibusdam porro excepturi
vero dolorem nulla, maxime earum distinctio voluptatibus fugit a
provident minima hic. Quam molestiae vitae ipsam ea necessitatibus?
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum
necessitatibus sint dicta fuga laudantium doloremque quos! Veritatis
vitae alias doloribus natus qui nulla, possimus neque velit ea. Modi
aperiam odio quidem delectus quia? Velit architecto corporis sit
consectetur assumenda deleniti itaque quis vitae aspernatur a, modi
accusamus voluptate quos consequuntur autem non animi ipsam! Dolorum
eius reiciendis fugit magni id beatae deleniti dolore repellat porro
dolores adipisci sequi nam minus officiis odit quibusdam iure,
repellendus culpa nesciunt tenetur modi ab? Blanditiis, nostrum expedita
quo, porro sequi reiciendis ad earum sunt quidem reprehenderit libero
voluptas eos iure eum quis voluptates et natus perferendis temporibus
rerum soluta ullam veritatis commodi alias? Delectus cumque accusantium
illum! Provident optio aspernatur, cum a officia odio hic assumenda non
culpa beatae consequatur nam blanditiis perspiciatis ullam ipsa labore
voluptas temporibus adipisci! Dignissimos commodi similique totam a
dolorem impedit. Obcaecati labore earum pariatur cum fuga temporibus
impedit omnis atque? Doloribus nemo accusamus, at, exercitationem
corrupti molestiae dolorum sunt, quia enim vitae laboriosam placeat!
Culpa recusandae doloribus dolores quisquam ab dolore accusamus
voluptatum eaque. Perferendis tempora eveniet repellat corporis cum
voluptatibus inventore magni magnam odio dicta, provident totam possimus
facilis explicabo, facere nihil dolore nisi eligendi. Minus,
repudiandae!
</p>
<br />
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Est reiciendis,
dolores sunt veniam alias reprehenderit repellat deserunt voluptatem
odit animi vitae quaerat, totam provident facere dolorem dignissimos qui
laboriosam corrupti inventore aspernatur similique facilis iste
quisquam. Totam consequatur praesentium, a consequuntur tenetur aperiam
adipisci magnam quos similique harum quis iure, officiis labore suscipit
perspiciatis pariatur, ullam recusandae et sint reprehenderit ex modi.
Laudantium culpa quod neque voluptatibus? Nam asperiores neque odit
voluptatem iusto ex nulla officia harum eveniet nihil minus, eaque
pariatur ducimus deleniti deserunt! Culpa alias assumenda ipsum fuga at
laborum molestias minus aspernatur porro error sequi excepturi pariatur
perspiciatis dolores, eaque doloremque voluptate veritatis autem officia
harum aliquam odit reprehenderit quas? Sunt voluptatum nihil nostrum cum
officiis tenetur voluptas dolore at nesciunt odit. Unde ab corporis non
voluptates aspernatur eligendi hic deserunt, expedita ipsum voluptate
accusantium fugit voluptatibus natus laboriosam! Repellat quia in atque
maiores ab vero, odio facere veniam obcaecati laudantium vitae laborum
perspiciatis ullam unde id sapiente? Iure ea culpa cumque optio pariatur
temporibus architecto excepturi, deserunt qui, praesentium repellendus
tempore labore ut omnis, eligendi est consequatur. Aperiam a, animi quia
adipisci sapiente unde vel, porro expedita error nesciunt itaque numquam
ab, nihil tempora voluptate nemo.
</p>
</section>
<div id="cursorMeter">
<div id="percent">Page Scrolled</div>
<div id="scrollPath">
<div id="progressBar"></div>
</div>
</div>
<script src="script.js"></script>
</body>
@import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;600&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Inconsolata', monospace;
}
body {
background: #000;
cursor: context-menu;
}
section {
padding: 40px;
color: #555;
}
section h2 {
font-size: 3.5em;
}
section p {
font-size: 1.2em;
}
#cursorMeter {
position: fixed;
top: 0;
width: 400px;
height: 80px;
// background: #ff0;
pointer-events: none;
z-index: 100000;
}
#scrollPath {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 10px;
background: #333;
}
#progressBar {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 0;
background: linear-gradient(to left, #008aff, #00ffe7);
animation: animate 5s linear infinite;
}
#progressBar::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(to left, #008aff, #00ffe7);
filter: blur(10px);
}
#progressBar::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(to left, #008aff, #00ffe7);
filter: blur(30px);
}
@keyframes animate {
0%,
100% {
filter: hue-rotate(0deg);
}
50% {
filter: hue-rotate(360deg);
}
}
#percent {
position: absolute;
top: 30px;
left: 0;
color: #fff;
font-size: 1.2em;
padding: 2px 5px;
background: #fff;
color: #333;
}
let cursorMeter = document.getElementById('cursorMeter');
document.addEventListener('mousemove', function (e) {
cursorMeter.style.top = e.clientY + 'px';
cursorMeter.style.left = e.clientX + 'px';
});
let percent = document.getElementById('percent');
let progressBar = document.getElementById('progressBar');
let totalHeight = document.body.scrollHeight - window.innerHeight;
window.onscroll = function () {
let progress = (window.pageYOffset / totalHeight) * 100;
progressBar.style.width = progress + '%';
percent.innerHTML = 'Page Scrolled ' + Math.round(progress) + '%';
};
Also see: Tab Triggers