Copy /* css reset */
/* :root = html (with higher specificity) */
:root {
box-sizing: border-box;
}
/* "*" doesn't include pseudo-elements */
*, ::before, ::after {
/* box-sizing isn’t normally an inherited property, */
/* use `inherit` to force it. */
box-sizing: inherit;
}
/* css vars for colors */
:root {
--keyboard: hsl(300, 100%, 16%);
--keyboard-shadow: hsla(19, 50%, 66%, 0.2);
--keyboard-border: hsl(20, 91%, 5%);
--black-10: hsla(0, 0%, 0%, 0.1);
--black-20: hsla(0, 0%, 0%, 0.2);
--black-30: hsla(0, 0%, 0%, 0.3);
--black-50: hsla(0, 0%, 0%, 0.5);
--black-60: hsla(0, 0%, 0%, 0.6);
--white-20: hsla(0, 0%, 100%, 0.2);
--white-50: hsla(0, 0%, 100%, 0.5);
--white-80: hsla(0, 0%, 100%, 0.8);
}
/* keys */
.white, .black {
/* ⭐️⭐️⭐️ 有此設定 z-index 才有作用 ⭐️⭐️⭐️ */
position: relative;
/* ⭐️ 讓所有鍵靠在一起 */
float: left;
/* ⭐️ 所有鍵往左移(自己一半的寬度) */
margin: 0 0 0 -1rem;
/* ⭐️ list-style 自動消失❓ */
display: flex;
/* ⭐️ 英文字母放到下方中間 */
justify-content: center;
align-items: flex-end;
padding: .5rem 0;
/* ⭐️ user can't select text */
user-select: none;
cursor: pointer;
/* border: 1px solid black; */
}
#keyboard li:first-child {
border-radius: 5px 0 5px 5px;
}
#keyboard li:last-child {
border-radius: 0 5px 5px 5px;
}
.white {
height: 12.5rem;
width: 3.5rem;
z-index: 1;
border-left: 1px solid hsl(0, 0%, 73%);
border-bottom: 1px solid hsl(0, 0%, 73%);
border-radius: 0 0 5px 5px;
box-shadow:
-1px 0 0 var(--white-80) inset,
0 0 5px hsl(0, 0%, 80%) inset,
0 0 3px var(--black-20);
background: linear-gradient(
to bottom,
hsl(0, 0%, 93%) 0%,
white 100%
);
color: var(--black-30);
}
.black {
height: 8rem;
width: 2rem;
/* ⭐️ 黑鍵在白鍵上方 */
z-index: 2;
border: 1px solid black;
border-radius: 0 0 3px 3px;
box-shadow:
-1px -1px 2px var(--white-20) inset,
0 -5px 2px 3px var(--black-60) inset,
0 2px 4px var(--black-50);
background: linear-gradient(
45deg, hsl(0, 0%, 13%) 0%, hsl(0, 0%, 33%) 100%
);
color: var(--white-50);
}
/* ⭐️ A, F, K 鍵不需左移 */
.no-offset {
margin: 0;
}
/* pressed state */
.white.pressed {
border-top: 1px solid hsl(0, 0%, 47%);
border-left: 1px solid hsl(0, 0%, 60%);
border-bottom: 1px solid hsl(0, 0%, 60%);
box-shadow:
2px 0 3px var(--black-10) inset,
-5px 5px 20px var(--black-20) inset,
0 0 3px var(--black-20);
background: linear-gradient(
to bottom,
white 0%,
hsl(0, 0%, 91%) 100%
);
/* outline: none; */
}
.black.pressed {
box-shadow:
-1px -1px 2px var(--white-20) inset,
0 -2px 2px 3px var(--black-60) inset,
0 1px 2px var(--black-50);
background: linear-gradient(
to right,
hsl(0, 0%, 27%) 0%,
hsl(0, 0%, 13%) 100%
);
/* outline: none; */
}
/* keyboard */
#keyboard {
background-color: var(--keyboard);
box-shadow:
0 0 50px var(--black-50) inset,
0 1px var(--keyboard-shadow) inset,
0 5px 15px var(--black-50);
border: 1px solid var(--keyboard-border);
border-radius: 1rem;
height: 15.25rem;
width: 41rem;
margin: 0.5rem auto;
/* ⭐️ 將鍵盤移往下方偏右 */
padding: 3rem 0 0 1.25rem;
}