<button onclick="toggleTheme()" class="themer"></button>
<main>
<div class="profile" onclick="expand(this)">
<div class="profile__banner" style="background-color: rgb(153,255,204);"></div>
<div>
<div class="profile__pic">
<img src="https://i.imgur.com/mQvmS3c.jpg?1" alt="Profile picture of Cho Miyeon">
</div>
<div class="profile__info">
<span class="profile__info-display">Cho Miyeon</span>
<span class="profile__info-username">@ramyeon</span>
</div>
</div>
<div class="profile__data">
<span class="profile__data-following">
<span class="profile__data-following-number">32</span>
<span class="profile__data-following-label">Following</span>
</span>
<span class="profile__data-followers">
<span class="profile__data-followers-number">6M</span>
<span class="profile__data-following-label">Followers</span>
</span>
<span class="profile__data-likes">
<span class="profile__data-likes-number">502</span>
<span class="profile__data-likes-label">Likes</span>
</span>
</div>
</div>
<div class="profile" onclick="expand(this)">
<div class="profile__banner" style="background-color: rgb(255, 202, 211);"></div>
<div>
<div class="profile__pic">
<img src="https://i.imgur.com/0i8CS8i.jpg?1" alt="Profile picture of Kim Minnie">
</div>
<div class="profile__info">
<span class="profile__info-display">Kim Minnie</span>
<span class="profile__info-username">@nicha</span>
</div>
</div>
<div class="profile__data">
<span class="profile__data-following">
<span class="profile__data-following-number">5</span>
<span class="profile__data-following-label">Following</span>
</span>
<span class="profile__data-followers">
<span class="profile__data-followers-number">6M</span>
<span class="profile__data-following-label">Followers</span>
</span>
<span class="profile__data-likes">
<span class="profile__data-likes-number">24</span>
<span class="profile__data-likes-label">Likes</span>
</span>
</div>
</div>
<div class="profile" onclick="expand(this)">
<div class="profile__banner" style="background-color: rgb(204,238,255);"></div>
<div>
<div class="profile__pic">
<img src="https://i.imgur.com/bN6vfk3.jpg?1" alt="Profile picture of Seo Soojin">
</div>
<div class="profile__info">
<span class="profile__info-display">Seo Soojin</span>
<span class="profile__info-username">@cherryjin</span>
</div>
</div>
<div class="profile__data">
<span class="profile__data-following">
<span class="profile__data-following-number">12</span>
<span class="profile__data-following-label">Following</span>
</span>
<span class="profile__data-followers">
<span class="profile__data-followers-number">6M</span>
<span class="profile__data-following-label">Followers</span>
</span>
<span class="profile__data-likes">
<span class="profile__data-likes-number">198</span>
<span class="profile__data-likes-label">Likes</span>
</span>
</div>
</div>
<div class="profile" onclick="expand(this)">
<div class="profile__banner" style="background-color: rgb(255,255,153);"></div>
<div>
<div class="profile__pic">
<img src="https://i.imgur.com/3ONm3eG.jpg" alt="Profile picture of Jeon Soyeon">
</div>
<div class="profile__info">
<span class="profile__info-display">Jeon Soyeon</span>
<span class="profile__info-username">@windyjeon</span>
</div>
</div>
<div class="profile__data">
<span class="profile__data-following">
<span class="profile__data-following-number">9</span>
<span class="profile__data-following-label">Following</span>
</span>
<span class="profile__data-followers">
<span class="profile__data-followers-number">6M</span>
<span class="profile__data-following-label">Followers</span>
</span>
<span class="profile__data-likes">
<span class="profile__data-likes-number">67</span>
<span class="profile__data-likes-label">Likes</span>
</span>
</div>
</div>
<div class="profile" onclick="expand(this)">
<div class="profile__banner" style="background-color: rgb(255,128,128);"></div>
<div>
<div class="profile__pic">
<img src="https://i.imgur.com/wPclYKP.jpg" alt="Profile picture of Song Yuqi">
</div>
<div class="profile__info">
<span class="profile__info-display">Song Yuqi</span>
<span class="profile__info-username">@woogiraffe</span>
</div>
</div>
<div class="profile__data">
<span class="profile__data-following">
<span class="profile__data-following-number">23</span>
<span class="profile__data-following-label">Following</span>
</span>
<span class="profile__data-followers">
<span class="profile__data-followers-number">6M</span>
<span class="profile__data-following-label">Followers</span>
</span>
<span class="profile__data-likes">
<span class="profile__data-likes-number">356</span>
<span class="profile__data-likes-label">Likes</span>
</span>
</div>
</div>
<div class="profile" onclick="expand(this)">
<div class="profile__banner" style="background-color: rgb(221,204,255);"></div>
<div>
<div class="profile__pic">
<img src="https://i.imgur.com/g7tmwlB.jpg?1" alt="Profile picture of Yeh Shuhua">
</div>
<div class="profile__info">
<span class="profile__info-display">Yeh Shuhua</span>
<span class="profile__info-username">@yehwolf</span>
</div>
</div>
<div class="profile__data">
<span class="profile__data-following">
<span class="profile__data-following-number">5</span>
<span class="profile__data-following-label">Following</span>
</span>
<span class="profile__data-followers">
<span class="profile__data-followers-number">6M</span>
<span class="profile__data-following-label">Followers</span>
</span>
<span class="profile__data-likes">
<span class="profile__data-likes-number">32</span>
<span class="profile__data-likes-label">Likes</span>
</span>
</div>
</div>
</main>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700;900&display=swap');
:root {
--light-bg: white;
--light-primary: rgb(247, 249, 250);
--dark-bg: black;
--dark-primary: #15181c;
--gray-text: rgb(153, 153, 153);
font-size: 16px;
font-family: 'Roboto', sans-serif;
}
* {
box-sizing: border-box;
}
.light-theme {
--background-color: var(--light-bg);
--primary-bg: var(--light-primary);
color: black;
}
.dark-theme {
--background-color: var(--dark-bg);
--primary-bg: var(--dark-primary);
color: white;
}
body {
background-color: var(--background-color);
padding: 16px;
}
main {
height: 100%;
width: 100%;
text-align: center;
}
.themer {
all: unset;
padding: 4px;
height: 20px;
width: 40px;
border-radius: 20px;
position: relative;
}
.light-theme .themer {
border: 2px solid var(--dark-bg);
}
.dark-theme .themer {
border: 2px solid var(--light-bg);
}
.themer:hover {
cursor: pointer;
}
.themer::after {
content: '';
display: block;
height: 20px;
width: 20px;
border-radius: 50%;
position: absolute;
top: 4px;
}
.light-theme .themer::after {
background-color: var(--dark-bg);
right: 4px;
}
.dark-theme .themer::after {
background-color: var(--light-bg);
left: 4px;
}
.profile {
background-color: var(--primary-bg);
border-radius: 8px;
height: 180px;
width: 350px;
position: relative;
overflow: hidden;
transition: height 0.2s ease;
/* */
display: inline-block;
margin: 8px;
vertical-align: top;
}
.profile:hover {
cursor: pointer;
}
.profile.profile--expanded {
height: 240px;
animation: expand 0.5s ease;
}
.profile__banner {
display: block;
height: 70px;
width: 100%;
background-color: rgb(175, 105, 175);
border-top-right-radius: inherit;
border-top-left-radius: inherit;
}
.profile__pic {
width: 100%;
text-align: center;
position: absolute;
top: 20px;
}
.profile__pic img {
background-color: var(--primary-bg);
border-radius: 50%;
height: 80px;
width: 80px;
padding: 3px;
object-fit: cover;
}
.profile__info {
width: 100%;
text-align: center;
position: absolute;
top: 104px;
}
.profile__info-display, .profile__info-username {
display: block;
width: 100%;
}
.profile__info-display {
font-size: 1.5rem;
font-weight: bold;
}
.profile__info-username {
color: var(--gray-text);
}
.profile__data {
opacity: 0;
}
.profile--unexpanded > .profile__data, .profile--expanded > .profile__data {
width: 100%;
text-align: center;
padding-top: inherit;
height: 66px;
position: absolute;
top: 168px;
display: flex;
flex-wrap: nowrap;
justify-content: space-around;
}
.profile--unexpanded > .profile__data {
opacity: 0;
animation: unreveal 0.2s ease;
}
.profile--expanded > .profile__data {
opacity: 1;
animation: reveal 0.7s ease;
}
.profile__data > * > * {
display: block;
}
.profile__data > * > *:first-child {
font-size: 1.2rem;
font-weight: bold;
}
.profile__data > * > *:nth-child(2) {
font-size: 0.9rem;
}
@keyframes reveal {
0% {
opacity: 0;
transform: translateY(-20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
@keyframes unreveal {
0% {
opacity: 1;
transform: translateY(0);
}
100% {
opacity: 0;
transform: translateY(-20px);
}
}
@keyframes expand {
0% {
height: 180px;
}
100% {
height: 240px;
}
}
@keyframes unexpand {
0% {
height: 240px;
}
100% {
height: 180px;
}
}
function expand(card) {
card.classList.toggle('profile--expanded');
// If card is not expanded after toggle, add 'unexpanded' class
if (!card.classList.contains('profile--expanded')) card.classList.toggle('profile--unexpanded');
// Else if card is expanded after toggle and still contains 'unexpanded' class, remove 'unexpanded'
else if (card.classList.contains('profile--expanded') && card.classList.contains('profile--unexpanded')) card.classList.toggle('profile--unexpanded');
}
function toggleTheme() {
let docu = document.querySelector('html');
docu.classList.toggle('light-theme');
docu.classList.toggle('dark-theme');
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.