[HTML/CSS] focus-within — ์์ ์์๊ฐ ํฌ์ปค์ค ๋์ ๋ ๋ถ๋ชจ ์คํ์ผ ์ง์
focus-within ์ดํด๋ณด๊ธฐ
:focus-within
์ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์์ ํน์ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์์(์ฃผ๋ก input ํ๊ทธ)๋ฅผ ํฌํจํ๋ ๋ถ๋ชจ ์์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. input ๊ฐ์ ํ์ ์์๊ฐ focus ๋์ ๋ ๋ถ๋ชจ ์์์ ์คํ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
์๋ ์์ ์์ input
ํ๊ทธ๋ฅผ ์์์ผ๋ก ํฌํจํ๋ .wrapper
ํด๋์ค ์ด๋ฆ์ ๋ถ๋ชจ ์์๊ฐ ์๋ค.
<div class="wrapper">
<p>
Lorem Ipsum ist ein einfacher Demo-Text für die Print- und Schriftindustrie.
</p>
<label for="color">Choose text color</label>
<input type="color" id="color" value="#1863b4" />
</div>
input
ํ๊ทธ๋ฅผ ์ ํํด์ ํ์ฑํ๋๋ฉด(ํฌ์ปค์ค๋ฅผ ๋ฐ์ผ๋ฉด), ํด๋น input
ํ๊ทธ๋ฅผ ํฌํจํ๋ ๋ถ๋ชจ ์์์ธ .wrapper
ํด๋์ค์ focus-within
์์ฌํด๋์ค๋ฅผ ์ฌ์ฉํด์ ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ์ฃผ๋ ์ฝ๋.
.wrapper:focus-within {
box-shadow: 0px 0px 5px 5px #ccc;
}
input
ํ๊ทธ์ id
์ label
ํ๊ทธ์ for
์์ฑ์ ๋์ผํ๊ฒ ์
๋ ฅํด์ ์ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ label
ํ๊ทธ๋ฅผ ํด๋ฆญํ์ ๋๋ ๊ทธ๋ฆผ์ ํจ๊ณผ๊ฐ ์ ์ฉ๋๋ค.
์ฝ๋ํ ์์ ์ฝ๋
See the Pen [CSS] :focus-within by ColorFilter (@colorfilter) on CodePen.
๋ฒ์ธ) focus๋ฅผ ๋ฐ์ ์ ์๋ ์์
์ด๋ค ์์๊ฐ focus๋ฅผ ๋ฐ์ ์ ์๋์ง ์ ์ํ ๊ณต์์ ์ธ ๋ฌธ์๋ ์์ง๋ง(๋น๊ณต์์ ์ผ๋ก ์ ๋ฆฌํ ์ฌ์ดํธ๋ ์์) ์ผ๋ฐ์ ์ผ๋ก ์๋ ์๋ฆฌ๋จผํธ๋ค์ด ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์๋ค.
- HTMLInputElement
- HTMLSelectElement
- HTMLTextAreaElement
- HTMLAnchorElement
- HTMLButtonElement
- HTMLAreaElement
document.activeElement
๋ ํ์ฌ ํ์ฑํ(active)๋์ด ์๋ DOM ์์๋ฅผ ๋ฐํํ๋ ์ฝ๊ธฐ ์ ์ฉ ์์ฑ์ด๋ค. ์ด ์์ฑ์ ์ด์ฉํด ์๋ ๊ฐ์ ๊ฐ๋จํ ํจ์๋ฅผ ๋ง๋ค์ด์ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์๋ ์๋ฆฌ๋จผํธ์ธ์ง ํ์ธํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
function focus(el) {
el.focus(); // ์ธ์๋ก ๋ฐ์ ์๋ฆฌ๋จผํธ ํ์ฑํ(active)
return el === document.activeElement; // true๋ฉด focus๋ฅผ ๋ฐ์ ์ ์๋ ์์
}
div
ํ๊ทธ์์๋ focus๋ฅผ ๋ฐ๊ณ ์ถ๋ค๋ฉด tabindex
๋ฅผ 0
ํน์ -1
๋ก ์ค์ ํ๋ฉด ๋๋ค
<div tabindex="-1">ํ
์คํธ</div>
์๋๋ tabindex="-1"
tabindex="0"
์ฐจ์ด์ (์ค๋ช
์ถ์ฒ). ์ฐธ๊ณ ๋ก tabIndex="1"
๋ก ์ค์ ํ๋ฉด ํญ(Tab) ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์์ ธ์ ํญ ํค๋ฅผ ๋๋ฅด๋ฉด ์ฒซ๋ฒ์งธ๋ก ํฌ์ปค์ค๋๋ค.
- If given a value of
-1
, the element can't be tabbed to but focus can be given to the element programmatically (using element.focus()
). - If given a value of
0
, the element can be focused via the keyboard and falls into the tabbing flow of the document. Values greater than0
create a priority level with1
being the most important.
๋ ํผ๋ฐ์ค
- :focus-within - CSS: Cascading Style Sheets | MDN
- :focus-within
- [CSS] ์ ํ์ :focus-within ์์๋ณด๊ธฐ
- tabindex๋ก ํฌ์ปค์ค ์ ์ด
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ES Modules ๋ชจ๋ (Import / Export ์์คํ ) (0) | 2024.04.26 |
---|---|
[Git] SSH ๊ณต๊ฐํค ๋ง๋ค๊ธฐ / Credential ์ธ์ฆ ์์คํ (0) | 2024.04.26 |
[JS] ์ด๋ฒคํธ ์ ํ(์บก์ฒ๋ง, ๋ฒ๋ธ๋ง) / ์ด๋ฒคํธ ์์ / ๋ฐ์ดํฐ ์์ฑ (0) | 2024.04.25 |
[HTML/CSS] ์๋งจํฑ ํ๊ทธ Semantic Tag (0) | 2024.04.25 |
[JS] ์๋ฉด ์ ์ฉํ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ (0) | 2024.04.25 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[JS] ES Modules ๋ชจ๋ (Import / Export ์์คํ )
[JS] ES Modules ๋ชจ๋ (Import / Export ์์คํ )
2024.04.26 -
[Git] SSH ๊ณต๊ฐํค ๋ง๋ค๊ธฐ / Credential ์ธ์ฆ ์์คํ
[Git] SSH ๊ณต๊ฐํค ๋ง๋ค๊ธฐ / Credential ์ธ์ฆ ์์คํ
2024.04.26 -
[JS] ์ด๋ฒคํธ ์ ํ(์บก์ฒ๋ง, ๋ฒ๋ธ๋ง) / ์ด๋ฒคํธ ์์ / ๋ฐ์ดํฐ ์์ฑ
[JS] ์ด๋ฒคํธ ์ ํ(์บก์ฒ๋ง, ๋ฒ๋ธ๋ง) / ์ด๋ฒคํธ ์์ / ๋ฐ์ดํฐ ์์ฑ
2024.04.25 -
[HTML/CSS] ์๋งจํฑ ํ๊ทธ Semantic Tag
[HTML/CSS] ์๋งจํฑ ํ๊ทธ Semantic Tag
2024.04.25