JSFiddle - React, Tailwind, and code Playground
HTML
<ul>
<li><span>Lorem ipsum</span></li>
<li><span>Lorem ipsum</span></li>
<li><span>Lorem ipsum</span></li>
</ul>
CSS
@import url('https://fonts.googleapis.com/css2?family=Neucha&display=swap');
* {
box-sizing: inherit;
}
html {
box-sizing: border-box;
}
body {
margin: 0;
font-family: 'Neucha', cursive;
}
ul {
display: grid;
grid-template-columns: repeat(3, minmax(100px, 1fr));
gap: 20px;
max-width: 800px;
margin-left: auto;
margin-right: auto;
list-style-type: none;
padding-left: 0;
}
li {
display: grid;
}
li span {
grid-column: 1/2;
grid-row: 1/2;
display: flex;
justify-content: center;
align-items: center;
margin: 20px;
font-size: clamp(12px, 2vw, 30px);
background: #333;
color: #fff;
opacity: 0;
transition: opacity 1s;
}
li::before {
content: "";
grid-column: 1/2;
grid-row: 1/2;
padding-top: 100%;
background: url(https://picsum.photos/300/300) no-repeat center / cover;
}
li:hover span {
opacity: 0.8;
}