<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Fira+Mono:wght@700&family=Fira+Sans:wght@400;500;700&display=swap" />
<header>
<h1>Justin Bishop</h1>
<h3>My Periodic Table of Elements</h3>
</header>
<div class="periodic-table">
<a class="periodic-element personal-info"
data-description="All about me. 🤓"
href="about-me.html">
<div class="periodic-element-inner">
<div class="title">Ab</div>
<div class="description">About Me</div>
</div>
</a>
<a class="periodic-element personal-info"
data-description="My Resume. 😬"
href="resume.html">
<div class="periodic-element-inner">
<div class="title">Rs</div>
<div class="description">Resume</div>
</div>
</a>
<img class="periodic-element-image"
src="https://graph.facebook.com/688626964/picture?type=large"
alt="My profile pic" />
<div class="empty-space"></div>
<a class="periodic-element social-media"
data-description="Facebook. 👨👩👦"
href="https://facebook.com/ju">
<div class="periodic-element-inner">
<div class="title">Fb</div>
<div class="description">Facebook</div>
</div>
</a>
<a class="periodic-element personal-info"
data-description="me@jubishop.com 👋"
href="mailto:me@jubishop.com">
<div class="periodic-element-inner">
<div class="title">Ct</div>
<div class="description">Contact Me</div>
</div>
</a>
<a class="periodic-element software-projects"
data-description="My Blog. ✍️"
href="https://www.artisanalsoftware.com/">
<div class="periodic-element-inner">
<div class="title">Ar</div>
<div class="description">Artisanal</div>
</div>
</a>
<a class="periodic-element software-projects"
data-description="Discord RL Bot. 🤖"
href="TuskBot">
<div class="periodic-element-inner">
<div class="title">Tb</div>
<div class="description">TuskBot</div>
</div>
</a>
<a class="periodic-element software-projects"
data-description="CodePen profile. ✏️"
href="https://codepen.io/jubishop">
<div class="periodic-element-inner">
<div class="title">Cp</div>
<div class="description">CodePen</div>
</div>
</a>
<a class="periodic-element social-media"
data-description="My LinkedIn. 👨💻"
href="https://www.linkedin.com/in/jubishop/">
<div class="periodic-element-inner">
<div class="title">Li</div>
<div class="description">LinkedIn</div>
</div>
</a>
<div class="empty-space"></div>
<a class="periodic-element software-projects"
data-description="Github profile. 😱"
href="https://github.com/jubishop">
<div class="periodic-element-inner">
<div class="title">Gh</div>
<div class="description">Github</div>
</div>
</a>
<a class="periodic-element software-projects"
data-description="LeetCode profile. 🧩"
href="https://leetcode.com/jubishop/">
<div class="periodic-element-inner">
<div class="title">Lc</div>
<div class="description">LeetCode</div>
</div>
</a>
<a class="periodic-element social-media"
data-description="Steam account. 🕹"
href="https://steamcommunity.com/id/jubishop">
<div class="periodic-element-inner">
<div class="title">St</div>
<div class="description">Steam</div>
</div>
</a>
<a class="periodic-element social-media"
data-description="Reddit profile. 😹"
href="https://www.reddit.com/user/jubishop">
<div class="periodic-element-inner">
<div class="title">Rd</div>
<div class="description">Reddit</div>
</div>
</a>
</div>
<div class="legend">
<div class="legend-element">
<span class="legend-marker personal-info"></span>
<span class="legend-text">Personal Info</span>
</div>
<div class="legend-element">
<span class="legend-marker software-projects"></span>
<span class="legend-text">Software Projects</span>
</div>
<div class="legend-element">
<span class="legend-marker social-media"></span>
<span class="legend-text">Social Media</span>
</div>
</div>
:root {
--main-bg-color: #111;
--main-text-color: #eee;
}
body {
background: var(--main-bg-color);
color: var(--main-text-color);
font-family: "Fira Sans", sans-serif;
white-space: nowrap;
}
a {
text-decoration: none;
}
h1 {
font-size: 3em;
font-weight: 700;
margin-bottom: 0;
margin-top: 1em;
}
h3 {
font-size: 2em;
font-weight: 500;
margin-bottom: 1em;
margin-top: 0.25em;
}
h1, h3 {
text-align: center;
}
.periodic-table {
--animation-time: 0.5s;
--border-radius: 0.5em;
--cubic-bezier: cubic-bezier(0.25, 0.75, 0.5, 1.5);
--delay-time: 0.1s;
--element-border: 0.33em;
--element-size: 8em;
display: grid;
grid-gap: 1em;
grid-template-columns: repeat(5, var(--element-size));
grid-template-rows: repeat(3, var(--element-size));
justify-content: center;
}
.social-media {
--start-color: #ff616d;
--end-color: #ffc171;
}
.personal-info {
--start-color: #37cfdc;
--end-color: #5a88e5;
}
.software-projects {
--start-color: #58ac30;
--end-color: #a7df62;
}
.social-media,
.personal-info,
.software-projects {
background: linear-gradient(
to bottom right,
var(--start-color) 0%,
var(--end-color) 100%);
}
.periodic-element-image {
border: var(--element-border) solid #fff;
height: calc(100% - var(--element-border) * 2);
transition: all var(--animation-time) ease;
width: calc(100% - var(--element-border) * 2);
z-index: 2;
}
@media (hover: hover) {
.periodic-element-image:hover {
border: 0.1em solid #fff;
border-radius: var(--border-radius);
transform: scale(1.6);
z-index: 10;
}
}
.periodic-element {
padding: var(--element-border);
position: relative;
transition: all var(--animation-time) ease;
z-index: 1;
}
.periodic-element .periodic-element-inner {
background: var(--main-bg-color);
height: 100%;
}
.periodic-element .title {
font: 700 4em "Fira Mono", monospace;
padding-top: 0.25em;
text-align: center;
}
.periodic-element .description {
font-weight: 500;
padding-top: 0.1em;
text-align: center;
}
.periodic-element .title,
.periodic-element .description {
background: -webkit-linear-gradient(var(--start-color), var(--end-color));
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@media (hover: hover) {
.periodic-element:hover {
transform: scale(1.10);
z-index: 10;
}
.periodic-element:hover .periodic-element-inner {
background: transparent;
}
.periodic-element:hover .title,
.periodic-element:hover .description {
-webkit-text-fill-color: var(--main-bg-color);
}
.periodic-element::after {
--description: 1em;
--horizontal-padding: 1em;
--width: 10em;
background: var(--main-text-color);
border: 1px solid var(--main-bg-color);
border-radius: var(--border-radius);
color: var(--main-bg-color);
content: attr(data-description);
font-size: var(--description);
height: auto;
left: calc(((var(--element-size) - var(--width)) / 2) - var(--horizontal-padding));
opacity: 0;
padding: 0.5em var(--horizontal-padding);
pointer-events: none;
position: absolute;
text-align: center;
top: 50%;
transition: opacity var(--animation-time) ease var(--delay-time),
top var(--animation-time) var(--cubic-bezier) var(--delay-time);
width: var(--width);
z-index: 10;
}
.periodic-element:hover::after {
opacity: 1;
pointer-events: auto;
top: 100%;
}
}
.legend {
display: inline-flex;
font-size: 1.5em;
justify-content: center;
margin: 1em auto 0;
text-align: center;
width: 100%;
}
.legend-element {
margin: 0 0.75em;
}
.legend-marker {
--marker-size: 1.5em;
display: inline-block;
height: var(--marker-size);
vertical-align: middle;
width: var(--marker-size);
}
.legend-text {
vertical-align: middle;
}
This Pen doesn't use any external JavaScript resources.