JSFiddle - React, Tailwind, and code Playground
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>html/cssだけで、MacのDockを、できる限り再現してみた</title>
</head>
<body>
<ul>
<li alt="Adobe Illustrator 2022">Ai</li>
<li alt="Adobe Photoshop 2022">Ps</li>
<li alt="Adobe Indesign 2022">Id</li>
<li alt="Adobe XD 2022">Xd</li>
<li alt="Adobe After Effects 2022">Ae</li>
<li alt="Adobe Dimention 2022">Dn</li>
<li alt="Adobe Premiere Pro 2022">Pr</li>
<li alt="Adobe Lightroom 2022">Lr</li>
<li alt="Adobe Bridge 2022">Br</li>
<li alt="Adobe Animate 2022">An</li>
</ul>
</body>
</html>
CSS
:root {
--size: 5vw;
--lot: 10;
--margin: .5vw;
}
ul {
display: flex;
list-style: none;
width: max-content;
height: max-content;
margin: auto;
padding: 10px;
justify-content: center;
background-color: #666;
border-radius: 10px;
transition: width .3s 0s ease;
position: fixed;
inset: 0;
}
li {
display: grid;
place-items: center;
width: var(--size);
height: var(--size);
position: relative;
background: #ccc;
text-align: center;
line-height: var(--size);
cursor: default;
user-select: none;
color: #fff;
transition-property: transform, margin;
transition-duration: .3s;
font-family: arial;
font-size: 2.3vw;
font-weight: bold;
box-sizing: content-box;
margin-inline: var(--margin);
transform-origin: 50% 100%;
border-radius: .5vw;
}
li:before {
content: "";
display: block;
position: absolute;
width: calc(100% + 1.2vw);
height: 100%;
left: -0.6vw;
}
/* tool tips */
li:after {
display: none;
content: attr(alt);
position: absolute;
white-space: nowrap;
text-align: center;
top: -25px;
color: #fff;
background-color: #626262;
line-height: 1;
border-radius: 3px;
padding: 5px 10px;
margin-inline: auto;
font-size: .2vw;
font-weight: normal;
box-shadow: 0 0 0 1px #000 inset, 0 0 0 2px #797979 inset;
}
li:hover:after {
display: block;
transform: scale(0.8);
}
/* scale change */
li:hover {
transform: scale(1.8);
margin-inline: 3.5vw;
}
li:has(+li:hover),
li:hover +li {
transform: scale(1.4);
}
li:has(+li +li:hover),
li:hover +li +li{
transform: scale(1.3);
}
li:hover +li {
margin-inline: var(--margin) 2vw;
}
li:hover +li +li{
margin-inline: var(--margin) 1vw;
}
li:has(+li:hover) {
margin-inline: 2vw var(--margin);
}
li:has(+li +li:hover){
margin-inline: 1vw var(--margin);
}
/* color */
[alt="Adobe Illustrator 2022"] {
background-color: #330000;
color: #ff9a00;
}
[alt="Adobe Photoshop 2022"] {
background-color: #001e36;
color:...