๋ชจ๋ฐ์ผ์์ ํธ๋ฒ ์ด์ ๋ฐ์
๋ฌธ์ : ๋ชจ๋ฐ์ผ์์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํธ๋ฒ๊ฐ ๊ณ์ ์ ์ฉ๋์ด, ๋ค๋ฅธ ๋ฒํผ๊น์ง๋ ๋๋ฆผ ํจ๊ณผ๊ฐ ์ ์ง๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
1. ๊ฐ๊ฐ์ ์ฌ์ฉ ํ๊ฒฝ์ ๊ณ ๋ คํ์ฌ css ์ฝ๋ ์์ฑ
2. ํฐ์น ๊ด๋ จ ์ด๋ฒคํธ ๋ฐ์์, css ํจ๊ณผ๊ฐ ์์ด์ง๋๋ก js ์ฝ๋ ์์ฑ
1. CSS๋ก PC์ Mobile์ ๊ตฌ๋ถํ๋ ์ฝ๋
/* smartphones, touchscreens */
@media (hover: none) and (pointer: coarse) {
...
}
/* stylus-based screens */
@media (hover: none) and (pointer: fine) {
...
}
/* Nintendo Wii controller, Microsoft Kinect */
@media (hover: hover) and (pointer: coarse) {
...
}
/* mouse, touch pad */
@media (hover: hover) and (pointer: fine) {
...
}
/* ์ค๋งํธํฐ, ํ๋ธ๋ฆฟ ๋ฑ ํฐ์น์คํฌ๋ฆฐ ๊ธฐ๊ธฐ์์ active ์ํ๋ฅผ ์ฒ๋ฆฌ
ํฐ์น์คํฌ๋ฆฐ์ ๋น ๋ฅธ ๋ฐ์์ด ํ์ํ๋ฏ๋ก ์ ๋๋ฉ์ด์
์๊ฐ์ ์งง๊ฒ(200ms) ์ค์ */
@media (hover: none) and (pointer: coarse) {
.btn-fade:active {
background: #ff7d4d; /* ๋ฒํผ ํด๋ฆญ ์ ๋ฐฐ๊ฒฝ์์ ์ค๋ ์ง๋ก ๋ณ๊ฒฝ */
transition: 200ms ease-in; /* 200ms ๋์ ๋ถ๋๋ฝ๊ฒ ์์์ด ๋ณํ */
}
}
/* ๋ฐ์คํฌํ์ด๋ ํฐ์นํจ๋์์ hover ์ํ๋ฅผ ์ฒ๋ฆฌ
๋ง์ฐ์ค ์ฌ์ฉ์๋ ๋ ์ฌ์ ๋ก์ด ์ํธ์์ฉ์ ๊ธฐ๋ํ๋ฏ๋ก ์ ๋๋ฉ์ด์
์๊ฐ์ ์กฐ๊ธ ๋ ๊ธธ๊ฒ(300ms) ์ค์ */
@media (hover: hover) and (pointer: fine) {
.btn-fade:hover {
background: #ff7d4d; /* ๋ง์ฐ์ค ์ค๋ฒ ์ ๋ฐฐ๊ฒฝ์์ ์ค๋ ์ง๋ก ๋ณ๊ฒฝ */
transition: 300ms ease-in; /* 300ms ๋์ ๋ถ๋๋ฝ๊ฒ ์์์ด ๋ณํ */
}
}
- hover: ๋ง์ฐ์ค ์ค๋ฒ = ๋ชจ๋ฐ์ผ์์๋ ํฐ์น ํ์ ๋ค๋ฅธ์์ญ ํฐ์น ์ ๊น์ง ์ ์ง๋๋ค.
- active: ๋ง์ฐ์ค ํด๋ฆญ = ๋๋ฅด๊ณ ์๋ ๋์์๋ง ์ ์ง = ๋ชจ๋ฐ์ผ์์๋ ํฐ์นํ๊ณ ์๋ ๋์์๋ง ์ ์ง๋๋ค.
2. JS์์ ์ด๋ฒคํธ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ์ฝ๋
function startup() {
var el = document.getElementById("canvas");
el.addEventListener("touchstart", handleStart, false);
el.addEventListener("touchend", handleEnd, false);
el.addEventListener("touchcancel", handleCancel, false);
el.addEventListener("touchmove", handleMove, false);
}
// handler์๋ css ์์ฑ์ ์ ๊ฑฐํ๋ dom ์ฝ๋๋ฅผ ์์ฑ
ํผ๋ธ๋ฆฌ์ฑ ๊ฒฝํ์ ํตํด ๋๋์
1. ๋ถ์ผ๊ฐ ์๋กญ๋ค: ์๋์ ์ผ๋ก ๋
ผ๋ฆฌ๋ฅผ ๋ ์ฌ์ฉํ ๋ฟ์ด์ง, ๊ฒฐ์ฝ "์ฌ์ด"๋ถ์ผ๋ ์๋๋ค.
2. ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ค์ฐจ์์ด๋ค: ๋ชจ๋ฐ์ผ, PC, ๋ธ๋ผ์ฐ์ ๊ฐ๊ฐ์ ํ๊ฒฝ์ ๊ตฌ๋ถํ์ฌ ๊ฐ๋ฐํด์ผํ๋ค.
๋ฐ์ํ
'๐ Front > โจ CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] ๋ง์ง ์์ (Margin collapsing) ํ์ ์ดํดํ๊ธฐ (0) | 2022.04.19 |
---|---|
[CSS: flex box] flex item์ ์ ๋ ฌ๊ณผ ๊ฐ๊ฒฉ / justify-content /align-items/ align-content (0) | 2021.08.10 |
BEM์ CSSํ๊ธฐ๋ฒ (0) | 2021.05.03 |