๋ธ๋ก๊ทธ ๊พธ๋ฏธ๊ธฐ ํ๋ฉด์ ๊ฐ๋จํ ๋ฎค์ง ํ๋ ์ด์ด๋ฅผ ๋ง๋ค์๋ค.
์์
์ด ์ฌ์ ์ค์ผ ๋๋ง ํ์ฌ ํ๋ ์ด์ค์ธ ์์
์ ๋ณด๋ฅผ ํ์ํ๋ ์ฝ๋ ์ด๋ป๊ฒ ์งฐ๋์ง ๊ฐ๋จํ ์ฌ๋ ค ๋ณธ๋ค.
ํ๋ ์ด ๋ฒํผ์ ๋๋ฅด๊ธฐ ์ ๊น์ง๋ `Title` ๊ณผ `Progress Bar` ์ด ์จ๊ฒจ์ ธ ์๋ค๊ฐ ๊ณก์ด ์ฌ์๋๋ฉด ์ ๋ชฉ๊ณผ ํ๋ก๊ทธ๋ ์ค๋ฐ๊ฐ ํ๋ ์ด์ด ์๋ก ๋ถ๋๋ฝ๊ฒ ๋ํ๋๋ ์ฝ๋์ด๋ค.
โก music-info ํด๋์ค CSS ์ฝ๋
์์ ์ฌ์ ์ (๊ธฐ๋ณธ์ํ)
.music-body .music-container .music-info {
opacity: 0; /* ํฌ๋ช
๋ 100%๋ก ํ๋ฉด์์์จ๊ฒจ์ง */
transform: translateY(100%); /* (์์ง ๋ฐฉํฅ) ์๊ธฐ ์์ ๋์ด๋งํผ ์๋๋ก ์ด๋ */
transition: transform 0.3s ease-in, opacity 0.3s ease-in; /* ๋ถ๋๋ฝ๊ฒ */
}
์์
์ฌ์์ค
.music-body .music-container.play .music-info {
opacity: 1; /* .play๊ฐ ์์ ๋ ๋ณด์ด๊ฒ */
transform: translateY(10%); /* ์๋ก ์ด์ง ์ฌ๋ผ์ค๋๋ก */
}
โก ์๋ ์๋ฆฌ
๊ธฐ๋ณธ ์ํ์์ music-info๋ opacity: 0๊ณผ transform: translateY(100%)๋ก ์ค์ ๋์ด ํ๋ฉด ์๋์ชฝ์ ์จ๊ฒจ์ ธ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ๋ก ์ธํด `music-container`์ `play` ํด๋์ค๊ฐ ๋์ ์ผ๋ก ์ถ๊ฐ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ๋ฉ์๋๋ `classList.toggle()` ๋ `classList.add()`๊ฐ ์๋๋ฐ ๋๋ ํ์๋ฅผ ์ฌ์ฉํ๋ค.
function playSong() {
musicContainer.classList.add("play");
playButton.querySelector("i.fas").classList.remove("fa-play");
playButton.querySelector("i.fas").classList.add("fa-pause");
audio.play();
}
์ด๋ ๊ฒ `play`๊ฐ `music-container`์ ์ถ๊ฐ๋๋ฉด `music-info`๋ ๋ด๊ฐ ์ค์ ํด ์ค CSS ๊ท์น์ ๋ฐ๋ผ์ ํ๋ฉด์ ๋ํ๋๋ค.
`opacity: 1` โ ํฌ๋ช
๋๊ฐ ์ฌ๋ผ์ ธ์ ์์๊ฐ ์ ๋ช
ํ๊ฒ ๋ณด์ด๋๋ก ํจ.
`transform: translateY(10%)` โ ์์๋ฅผ ์์ง๋ฐฉํฅ์ผ๋ก ์ด๋์ํค๋ css ์์ฑ์ด๋ค. ์์๊ฐ ์์ ์ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์์ ์(์์ง๋ฐฉํฅ)๋ก 10%๋งํผ ์ด์ง ์ฌ๋ผ์ด.
โก ์ ์ฒด์ ์ธ ์ฝ๋ ํ๋ฆ
`.music-container`๋ `play` ํด๋์ค๊ฐ ์๋ ์ํ๋ก ์์
โ `.play` ํด๋์ค๋ฅผ ๊ฐ์ง `Button` ํด๋ฆญ ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ `playSong()` ํจ์๊ฐ ํธ์ถ๋จ
โ `musicContainer.classList.add('play')`๊ฐ ์คํ๋์ด `.play` ํด๋์ค๊ฐ `music-container`์ ์ถ๊ฐ๋จ
โ `music-container.play .music-info`์ css๊ท์น์ ๋ฐ๋ผ `.music-info`๊ฐ ํ๋ฉด์ ํ์๋จ
โ ์ฌ์ ์ค์ผ ๋ ๋ค์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด `musicContainer.classList.remove('play')`๋ก `.play`๊ฐ ์ ๊ฑฐ๋๊ณ ๋ค์ `.music-info`๋ ์จ๊ฒจ์ง!
โก CSS opacity ์์ฑ
`opacity: 0;`์ CSS ์์ฑ์ผ๋ก, ์์์ ํฌ๋ช ๋๋ฅผ ์์ ํ 0์ผ๋ก ์ค์ ํ๋ ์๋ฏธ์ด๋ค. ์ฆ, ์ด ์์ฑ์ด ์ ์ฉ๋ ์์๋ ๋ณด์ด์ง ์๊ฒ ๋๋ค. `opacity` ๊ฐ์ 0์์ 1๊น์ง์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค.
opacity: 1์ ์์ ํ ๋ถํฌ๋ช ํ ์ํ, ์ฆ ์์๊ฐ 100% ๋ณด์ธ๋ค.
opacity: 0์ ์์ ํ ํฌ๋ช ํ ์ํ, ์ฆ ์์๊ฐ ์ ํ ๋ณด์ด์ง ์๋๋ค.
'Coding > html&css' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[html/css] ๊ฐ์์ ํ์ ์ฐ์ตํด๋ณผ ์ ์๋ ์ฌ์ดํธ CSS Diner (50) | 2024.12.12 |
---|---|
[html/css] CSS flex๋ ๋ฌด์์ธ๊ฐ? (65) | 2024.12.10 |
[html/css] ๋ก๊ทธ์ธ ํ๋ฉด html ์ฝ๋๋ก ์์๋ณด๋ form, input ํ๊ทธ ์์ฑ (65) | 2024.11.26 |
[html/css] ์ด๋ฐ ๋ฐ์ค div ์๋ css ์์ฑ์ ์ด๋ป๊ฒ ์ค์ผํ ๊น? (63) | 2024.11.26 |
[html&css] โก CSS์ ์ ํ์ ์ด์ ๋ฆฌ, ์ ํ์ ์ฐ์ ์์ ! (0) | 2024.05.23 |