html
<section>
<h1>Choose Interests</h1>
<div class="contaner">
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-user"></i>
<p>Users</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-cloud"></i>
<p>Cloud</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-code"></i>
<p>Code</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-square-rss"></i>
<p>Blog</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-server"></i>
<p>Server</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-regular fa-image"></i>
<p>Image</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-envelope"></i>
<p>Contact</p>
</div>
</div>
</div>
<div class="box">
<input type="checkbox">
<div class="cover">
<div class="icon">
<i class="fa-solid fa-location-dot"></i>
<p>Location</p>
</div>
</div>
</div>
</div>
</section>
css
:root {
--main-purple-color: #5c48f1;
--elements-background-color: #eeecfd;
--element-border-color: #e0e0e1;
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
section {
text-align: center;
padding: 50px
}
h1 {
color: var(--main-purple-color);
margin-bottom: 50px;
}
.contaner {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 15px;
background-color: #fff;
padding: 20px
}
.box {
height: 250px;
/* background-color: red; */
position: relative;
}
.cover {
position: relative;
height: 100%;
width: 100%;
border-radius: 3px;
border: 3px solid var(--element-border-color);
background-color: var(--elements-background-color);
}
input {
-webkit-appearance: none;
appearance: none;
position: absolute;
top: 15px;
left: 15px;
z-index: 10;
}
input:before {
content: "";
position: absolute;
width: 20px;
height: 20px;
border-radius: 2px;
border: 2px solid #999;
transition: all 0.5s;
}
input:after {
content: "";
position: absolute;
width: 16px;
height: 16px;
border-radius: 2px;
top: 4px;
left: 4px;
transition: all 0.5s;
}
.box:hover input:not(:checked)::before {
border-color: var(--main-purple-color);
}
.box:hover input:not(:checked)::after {
background-color: var(--main-purple-color);
opacity: 0.5;
}
input:checked:before {
border-color: var(--main-purple-color);
}
input:checked:after {
background-color: var(--main-purple-color);
}
input:checked ~ .cover {
border-color: var(--main-purple-color);
}
.icon {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.icon i {
color: var(--main-purple-color);
font-size: 100px;
}
.icon p {
color: #000;
margin-top: 15px;
font-size: 25px;
font-weight: 900;
}