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 class="hero-bg">
<div class="container">
<!-- Nav tabs -->
<ul class="nav nav-tabs main-nav nav-justified text-uppercase" role="tablist">
<li role="presentation" class="active"><a href="#first" role="tab" data-toggle="tab">First Tab</a></li>
<li role="presentation"><a href="#second" role="tab" data-toggle="tab">Second Tab</a></li>
<li role="presentation"><a href="#third" role="tab" data-toggle="tab">Third Tab</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="first">
<div class="hero-bg-tab">
<img class="hero-image" src="https://imagizer.imageshack.com/a/img673/4539/Oa4R2C.jpg" alt="background">
<div class="hero-image-overlay"></div>
</div>
<div id="lipsum">
<p>
Vivamus quis lectus placerat, efficitur mauris vel, gravida nisi. Cras enim lorem, interdum ac ipsum ac, tincidunt fermentum leo. Morbi congue rhoncus lacus id accumsan. Morbi quam mi, ullamcorper eu enim eget, sodales venenatis quam. Donec dictum libero
in leo vehicula, eget tempus lacus posuere. Curabitur sed mi sed elit mattis rutrum. Aliquam placerat sodales diam a eleifend. Suspendisse potenti. Proin eget risus ac risus scelerisque hendrerit.
</p>
<p>
In hac habitasse platea dictumst. Nulla et ipsum nec arcu porta eleifend nec sed metus. Aenean rhoncus neque a nibh faucibus, vel pharetra justo aliquam. Maecenas nulla nisi, commodo sed lacus at, tempus vestibulum enim. In et lorem eget orci rutrum dignissim
ornare ac mi. Nulla facilisi. Mauris fermentum consectetur ligula, sed rutrum nulla convallis non.
</p>
<p>
Donec in consectetur nisi, sed tincidunt tortor. Mauris laoreet dolor eget arcu pretium, eu ullamcorper eros dignissim. Mauris gravida felis ut ipsum commodo, ut ultricies dolor pretium. Morbi condimentum porttitor mi venenatis tempus. Maecenas in ornare
purus. Suspendisse eros nisi, cursus sed iaculis in, tincidunt tempor velit. Aliquam erat volutpat. Vestibulum sapien libero, vestibulum eget imperdiet vitae, imperdiet vitae est. Maecenas nec euismod nisi, sed viverra turpis.
</p>
<p>
In vel lacus ipsum. Nam aliquam suscipit est in cursus. Proin ac fringilla enim. Fusce fermentum nec lectus vel rhoncus. In tortor enim, lobortis ac dignissim quis, vestibulum vel turpis. Nunc vitae fringilla lectus. In finibus varius neque id fermentum.
Integer vehicula massa sed arcu scelerisque semper. Donec vel orci aliquet purus laoreet convallis. Integer et vulputate elit, sed elementum odio. Proin maximus nibh ac nunc feugiat iaculis. Vivamus eget lacus quis neque egestas rhoncus.
</p>
<p>
Donec ac enim nec lacus feugiat rhoncus. Duis ac hendrerit tortor. In id leo metus. Donec aliquam tincidunt nisi, eget tristique sem porta ut. Quisque accumsan, libero a tristique commodo, erat sapien dignissim ipsum, et mollis purus dui ac risus. Donec
at iaculis diam. Vivamus tincidunt auctor tortor ut consequat. Curabitur et mi in orci scelerisque tempor. Mauris vestibulum nibh quis risus pulvinar pharetra. Vestibulum quis felis at lorem maximus consequat. Interdum et malesuada fames ac
ante ipsum primis in faucibus. In in eros vel arcu cursus dapibus ac in lacus. Curabitur at lacus auctor neque venenatis tincidunt.
</p>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="second">
<div class="hero-bg-tab">
<img class="hero-image" src="http://imageshack.com/a/img540/6712/j7Bws6.jpg" alt="background">
<div class="hero-image-overlay"></div>
</div>
<div id="lipsum">
<p>
Cras aliquam imperdiet est, vitae facilisis tortor efficitur sit amet. Nulla faucibus scelerisque leo, nec dictum enim lacinia a. Cras vehicula massa enim, vitae tempor sapien tristique et. Aenean eget tempor ligula, in iaculis est. Aenean ut mattis libero,
non lobortis felis. Proin vel odio pulvinar, vehicula quam nec, molestie massa. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate ornare vehicula. Vivamus eu nibh eget ex pellentesque
porttitor sed et tortor. Maecenas eu tortor maximus neque ornare vestibulum. Duis mattis, diam quis accumsan lobortis, lorem sapien consequat purus, eu vestibulum augue elit non quam. Proin eget eleifend tellus, a euismod orci. Praesent pharetra
leo eros, in luctus urna viverra sit amet. Sed vitae libero non sapien rutrum volutpat eu nec est. Mauris pretium viverra consequat. In efficitur sollicitudin neque sit amet sollicitudin.
</p>
<p>
Quisque venenatis augue in dignissim eleifend. Vestibulum vitae justo nec purus sollicitudin auctor luctus rutrum velit. In eleifend ex ut orci tincidunt dictum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque
ultrices, turpis eget venenatis rutrum, elit lorem rhoncus arcu, eget venenatis metus tortor nec massa. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque facilisis tristique turpis ut egestas. Vestibulum accumsan efficitur venenatis.
Donec gravida vitae erat eu accumsan. Fusce id ex non massa euismod bibendum pretium id sem. Quisque ac mauris eget ex dignissim ultricies. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc non
urna scelerisque urna aliquam faucibus sit amet vel erat.
</p>
<p>
In hac habitasse platea dictumst. Aliquam nec pharetra urna, non tristique lectus. Morbi elementum aliquam convallis. Nunc pellentesque in risus quis elementum. Integer feugiat odio at ante suscipit, vitae faucibus neque elementum. Duis lobortis enim
arcu, sed tincidunt nunc rutrum vitae. Etiam mattis turpis et sem consectetur, non dictum libero sodales. Maecenas purus ante, commodo vel laoreet id, dignissim eu arcu.
</p>
<p>
Donec finibus est turpis, at vulputate tellus lacinia sit amet. Suspendisse blandit fermentum turpis vitae porta. Curabitur luctus luctus neque vitae accumsan. Integer consectetur aliquam tortor ut feugiat. Duis cursus pulvinar magna, eget tempus turpis
dapibus sit amet. Cras pellentesque urna magna, sit amet consequat dui vulputate id. Aliquam tempus quis metus vel efficitur. Cras commodo, tortor eget tincidunt posuere, dolor risus porta elit, sit amet lacinia tellus libero sed dolor. Morbi
sit amet efficitur quam.
</p>
<p>
In elit justo, consequat vel risus sit amet, iaculis volutpat libero. Nulla non tincidunt velit, ut pretium metus. Fusce semper nunc a lacinia maximus. Quisque gravida ex accumsan, semper ex non, finibus nisl. Integer condimentum orci sit amet nunc vestibulum
congue. Nullam pulvinar ante id odio bibendum feugiat. Phasellus fermentum turpis a nisi rutrum dignissim eu sed arcu. Vivamus vitae nibh congue, pharetra sapien sed, elementum odio. Etiam eu viverra lorem, id lobortis elit. Donec a purus
pellentesque, cursus nisi vel, interdum velit. Nullam dignissim euismod arcu, et faucibus mi pretium ultrices. Curabitur tellus sem, sollicitudin sit amet mi ultrices, euismod maximus turpis. Aenean sed ligula vulputate, laoreet ligula at,
aliquet nulla. Donec et dignissim neque. Praesent imperdiet ullamcorper sollicitudin.
</p>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="third">
<div class="hero-bg-tab">
<img class="hero-image" src="http://imageshack.com/a/img829/4426/0azo.jpg" alt="background">
<div class="hero-image-overlay"></div>
</div>
<div id="lipsum">
<p>
Cras facilisis libero quis dapibus laoreet. Cras tempor aliquam blandit. Ut at ultricies nisi, a tempus turpis. Curabitur tristique mi orci, sit amet interdum magna posuere ac. Fusce vitae enim nec eros finibus ultricies vitae vitae purus. Interdum et
malesuada fames ac ante ipsum primis in faucibus. Etiam scelerisque nisl tortor, eget hendrerit magna hendrerit in. Nullam imperdiet, nunc quis ullamcorper porttitor, ipsum velit maximus tortor, id malesuada quam nisi vitae lacus. Duis et
urna vitae lorem accumsan pulvinar sed vitae felis. Suspendisse rhoncus pellentesque tempor. Nunc id lorem velit. Praesent vitae eros faucibus, suscipit dolor id, sagittis tellus. Donec tellus turpis, auctor non viverra a, iaculis congue elit.
</p>
<p>
Pellentesque ac urna in felis fermentum porttitor at a nulla. Aliquam sed mi ut arcu tristique sollicitudin. In dictum rhoncus convallis. Integer ac blandit nibh. Maecenas et diam augue. Suspendisse ullamcorper pharetra erat, nec venenatis nisi congue
nec. Suspendisse sollicitudin dui nibh. Quisque aliquam ultrices metus, eu interdum tellus euismod eleifend. Aenean eget rutrum urna. Mauris lacinia metus at nulla pretium, eget fringilla leo viverra.
</p>
<p>
Morbi bibendum sem eget elit pulvinar, a condimentum nulla dictum. Quisque id quam vel sem tristique ullamcorper. Sed at lorem libero. Suspendisse vitae neque sit amet mauris accumsan congue. Donec tincidunt dapibus metus vel fringilla. Mauris mollis
tincidunt volutpat. Etiam tristique arcu nibh. Curabitur egestas eros mi, eu accumsan tortor scelerisque et. Cras eget pharetra mi, congue fermentum mi. Fusce odio nulla, condimentum sed ipsum sit amet, imperdiet sodales tellus. Pellentesque
tempus elit non ornare scelerisque. Curabitur a lorem in elit tempus tincidunt sit amet ut massa. Aliquam sagittis felis vel nisi ullamcorper, vitae ullamcorper ipsum pretium. Cras quis dictum odio. Integer quis purus at nibh volutpat pellentesque
quis a urna.
</p>
<p>
Suspendisse aliquam aliquam venenatis. Cras porta diam quis ipsum vehicula efficitur. In aliquam nisl velit, in dignissim nisl pellentesque placerat. Proin dignissim sollicitudin est id malesuada. Sed non dui in magna posuere tristique quis in nibh. Cras
dapibus faucibus mi et tristique. Donec sed eleifend metus. Nulla condimentum non nisi ac luctus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce in sapien lobortis, finibus lectus tincidunt,
varius erat. Proin nec purus felis. Proin scelerisque ut ligula id pulvinar. Cras ornare turpis a libero semper tempor. Sed accumsan dui ipsum. Integer condimentum lacinia malesuada.
</p>
<p>
Nam vitae est lectus. Aenean libero erat, dictum quis dui id, dictum mattis ipsum. Duis elementum metus mauris, sed interdum leo tristique eget. Nulla facilisi. Phasellus lacinia turpis nec sapien fermentum, finibus consequat risus lobortis. Nulla eget
orci mollis, facilisis orci varius, semper justo. Sed quam nulla, rutrum et urna ut, consectetur congue metus.
</p>
</div>
</div>
</div>
</div>
</body>
// LESS variables
@background-color: white;
@grid-gutter-width: 30px;
// Relevant styling
.hero-bg {
padding: @grid-gutter-width 0;
background: @background-color;
min-height: 100vh;
font-size: 18px;
}
.tab-content {
padding: @grid-gutter-width;
}
.hero-image,
.hero-image-overlay,
.hero-bg-tab {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
}
.hero-image-overlay,
.hero-bg-tab {
width: 100%;
height: 100%;
}
.hero-image {
filter: contrast(300%) brightness(130%);
min-width: 100%;
min-height: auto;
opacity: 0.2;
}
.hero-image-overlay {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), @background-color);
}
.hero-bg-tab {
z-index: -1;
}
Also see: Tab Triggers