[HTML/CSS] select ํ๊ทธ์ ํ์ดํ ์์ด์ฝ ๋ณ๊ฒฝํ๊ธฐ
<select>
์์๋ <option>
๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ต์
์ ์ ํํ ์ ์๋ ๋๋กญ๋ค์ด์ ํ์ํ๋ค. <select>
์ฐ์ธก์ ์๋ ๋๋กญ๋ค์ด ํ์ดํ ์์ด์ฝ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์คํ์ผ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค. ์ด๋ค ๋ธ๋ผ์ฐ์ ์์๋ ๋๊ฐ์ ์์ด์ฝ์ผ๋ก ํ์ํ๊ณ ์ถ๋ค๋ฉด background
์คํ์ผ ์์ฑ์ ์ด์ฉํด์ ๋ณ๊ฒฝํ ์ ์๋ค.
<!-- ์๋ ์์์์ ์ฌ์ฉํ HTML ๋งํฌ์
-->
<label for="select-device">Select your device</label>
<select id="select-device">
<option value="apple">Apple</option>
<option value="oppo">Oppo</option>
<option value="xiaomi">Xiaomi</option>
</select>
appearance ์์ฑ ์์
appearance
CSS ์์ฑ์ ์ด์์ฒด์ ์ ํ
๋ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ UI ์ปจํธ๋กค์ ๊ธฐ๋ณธ ์ธํ(appearance)์ ์ ์ดํ ๋ ์ฌ์ฉํ๋ค. appearance: none
์์ฑ์ ์ ์ฉํ๋ฉด input
progress
๋ฑ์ ์์๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๋ ์คํ์ผ์ ํด์ ํ ์ ์๋ค. select
์์์ ์ฌ์ฉํ๋ฉด ์ฐ์ธก ํ์ดํ ์์ด์ฝ์ด ์ฌ๋ผ์ง๋ค.
select[id="select-device"] {
height: 2.5rem;
width: 10rem;
padding: 0 0.5rem;
color: black;
border: 1px solid lightgray;
-moz-appearance: none; /* Firefox */
-webkit-appearance: none; /* Safari and Chrome */
appearance: none;
}
background ์์ฑ ์์
background-image
์์ฑ์ ์ด์ฉํด <select>
ํ๊ทธ์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ํ์ดํ ์์ด์ฝ์ผ๋ก ์ค์ ํ๋ค.
select[id="select-device"] {
background-image: url("https://img.icons8.com/ios-filled/50/sort-down.png");
background-repeat: no-repeat;
background-position: 96% center;
background-size: 1rem;
}
background-image : ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ์ง์
background-image: none | url | initial | inherit
none
: ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉํ์ง ์์ — ๊ธฐ๋ณธ๊ฐurl
: ์ด๋ฏธ์ง url ์ ๋ ฅinitial
: ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ inherit
: ๋ถ๋ชจ ์์์ ์์ฑ๊ฐ ์์
url()
ํจ์์ ์
๋ ฅํ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ์ง์ ํ ์๋ ์๋ค. url()
ํจ์์ ์๋๊ฒฝ๋ก, ์ ๋๊ฒฝ๋ก, blob URL, data URL์ ์
๋ ฅํ ์ ์๋ค. ์๋๊ฒฝ๋ก๋ ํ์ฌ ์คํ์ผ์ํธ๋ฅผ ๊ธฐ์ค์ผ๋กํ๋ฉฐ, ๊ฒฝ๋ก ๊ฐ์ฅ ์์ ์ฌ๋์ /
๋ฅผ ๋ถ์ด๋ฉด ์ ๋๊ฒฝ๋ก๋ก ์ง์ ๋๋ค.
- ์๋๊ฒฝ๋ก :
background-image: url('../assets/icons/arrow-down.svg')
- ์ ๋๊ฒฝ๋ก :
background-image: url('/src/assets/icons/arrow-down.svg')
- ์ผ๋ฐ URL :
background-image: url('https://...')
- dataURL :
background-image: url('data:image/png;base64,iVBORw...')
background-repeat : ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ๋ฐ๋ณต ์ฌ๋ถ์ ๋ฐ๋ณต ๋ฐฉํฅ ์ง์
background-repeat: repeat | repeat-x | repeat-y | no-repeat | inherit
repeat
: ๊ฐ๋ก ๋ฐฉํฅ, ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ๋ฐ๋ณต — ๊ธฐ๋ณธ๊ฐrepeat-x
: ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ๋ฐ๋ณตrepeat-y
: ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ๋ฐ๋ณตno-repeat
: ๋ฐ๋ณต ์ํจinitial
: ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ inherit
: ๋ถ๋ชจ ์์์ ์์ฑ๊ฐ ์์
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ชฝ ์๋ถํฐ ์์ํด์ ๊ฐ๋ก, ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ์์๋ฅผ ์ฑ์ธ๋๊น์ง ๋ฐ๋ณตํด์ ๋์จ๋ค. ๋ฐ๋ณต ์์ด ์ด๋ฏธ์ง๊ฐ 1๋ฒ๋ง ๋์ค๋๋ก ํ๊ณ ์ถ๋ค๋ฉด no-repeat
์์ฑ๊ฐ์ ์ฃผ๋ฉด ๋๋ค.
background-position : ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง์ ์๋ ์์น ์ง์
background-position: x-position y-position | initial | inherit
x-position y-position
: ๊ฐ๋ก ์์น์ ์ธ๋ก ์์น ์ง์ — ๊ธฐ๋ณธ๊ฐ0% 0%
initial
: ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ inherit
: ๋ถ๋ชจ ์์์ ์์ฑ๊ฐ ์์
์์น ๊ฐ์ผ๋ก ์์(left
, right
๋ฑ), ๋ฐฑ๋ถ์จ(%
), ๊ธธ์ด(px
, rem
, em
๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ๊ฐ๋ก ์์น ๊ฐ :
left
,right
,center
,%
,length
- ์ธ๋ก ์์น ๊ฐ :
top
,bottom
,center
,%
,length
background-size : ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ ์ง์
background-size: auto | length | cover | contain | initial | inherit
auto
: ์ด๋ฏธ์ง ํฌ๊ธฐ ์ ์ง — ๊ธฐ๋ณธ๊ฐlength
: ๊ฐ์ 2๊ฐ ๋ฃ์ผ๋ฉด 1๋ฒ์งธ๋ ๊ฐ๋ก, 2๋ฒ์งธ๋ ์ธ๋ก ํฌ๊ธฐ๋ก ์ง์ ๋จ. ๊ฐ์ 1๊ฐ๋ง ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ์ ๊ฐ๋ก ํฌ๊ธฐ๋ก ์ง์ ๋๊ณ , ์ธ๋ก ํฌ๊ธฐ๋ ๋น์จ์ ๋ง๊ฒ ์๋ ์กฐ์ ๋จ. ๋ฐฑ๋ถ์จ๋ ์ฌ์ฉ ๊ฐ๋ฅcover
: ๊ฐ๋ก ์ธ๋ก ๋น์จ์ ์ ์งํ๋ฉด์ ์์๋ฅผ ์ฑ์ธ๋๊น์ง ํ๋ / ์ถ์contain
: ๊ฐ๋ก ์ธ๋ก ๋น์จ์ ์ ์งํ๋ฉด์ ์์๋ฅผ ๋ฒ์ด๋์ง ์๋ ์ต๋ ํฌ๊ธฐ๋ก ํ๋ / ์ถ์. ์ด๋ฏธ์ง์ ์์์ ๋น์จ์ด ๋ง์ง ์๋ค๋ฉด ๋น ๊ณต๊ฐ์ด ์๊ธธ ์ ์์.initial
: ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ inherit
: ๋ถ๋ชจ ์์์ ์์ฑ๊ฐ ์์
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ๊ด๋ จ ์์ฑ์ background
์์ฑ์ ์ถ์ฝํ์ผ๋ก ์์ฑํ ์ ์๋ค. position
๊ณผ size
๋ ๊ฐ์ ๋จ์๋ฅผ ๊ณต์ ํ๋ฏ๋ก ์ฌ๋์ /
๋ก ๊ตฌ๋ถํ๋ค. size
๋ง ์ฌ์ฉํ ๋๋ position
๊ฐ์ ํ์์ ์ผ๋ก ๋ช
์ํด์ผ ๋๋ค.
background: [image] [repeat] [position] [size]
select[id="select-device"] {
background: url("...") no-repeat 96% center / 1rem;
}
์์ ํด๋ฆญ์ ํ์ดํ ํ์
๐ก :focus
์์ฌ ํด๋์ค๋ ํค๋ณด๋ ์ด๋ฒคํธ๋ ์ฌ์ฉ์ ์
๋ ฅ์ ํ์ฉํ๋ ์์์๋ง ์ฌ์ฉํ ์ ์๋ค.
ex) โ input ์์ ํด๋ฆญ, โก๋ฒํผ/์ต์ปค ํด๋ฆญ, โขํค๋ณด๋ ํญ(Tab)ํค์ ์ํด ์์ ์ด์ ์ ๋ง์ท์ ๋
:focus
์์ฌ ํด๋์ค(Pseudo Class)๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์์๋ฅผ ๋ํ๋ธ๋ค. ์์๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ํญ ํค๋ก ์ ํํ์ ๋ ํ์ฑํ(ํฌ์ปค์ค)๋๋ค. :focus
์์ฌ ํด๋์ค๋ฅผ ์ด์ฉํด ํน์ ์์๋ฅผ ํด๋ฆญํ์ ๋ 180๋ ํ์ ํ๋๋ก ํ ์ ์๋ค.
select[id="select-device"]:focus {
transform: rotate(180deg);
}
ํ์ง๋ง select
์์์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ์์ฒด๋ฅผ ํ์ดํ ์์ด์ฝ์ผ๋ก ์ง์ ํ ๊ฒฝ์ฐ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ์ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ ์ฉํ๋ฉด select
์์ ์ ์ฒด๊ฐ 180๋ ํ์ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ ๋ฐฉ๋ฒ ๋์ ํฌ์ปค์ค๋ฅผ ๋ฐ์์ ๋ 180๋ ํ์ ํ ํ์ดํ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ๊ต์ฒดํ๋ฉด ๋๋ค. ํฌ์ปค์ค๋ฅผ ๋ฐ๊ธฐ ์ ์ ...sort-down.png
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ , ํฌ์ปค์ค๋ฅผ ๋ฐ์ ํ์ ...sort-up.png
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์.
select[id="select-device"]:focus {
background: url("https://img.icons8.com/ios-filled/50/sort-up.png") no-repeat
96% 50% / 1rem;
}
์ฝ๋ํ ์์
See the Pen change select arrow style by ColorFilter (@colorfilter) on CodePen.
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Git] ์๋ฉด ์ ์ฉํ GitHub ๋จ์ถํค / ํ
[Git] ์๋ฉด ์ ์ฉํ GitHub ๋จ์ถํค / ํ
2024.05.05 -
[TS] ํ์ ์คํฌ๋ฆฝํธ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์กฐ๊ฑด๋ถ ํ์
[TS] ํ์ ์คํฌ๋ฆฝํธ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์กฐ๊ฑด๋ถ ํ์
2024.05.05 -
[React] ๋ฆฌ์กํธ Strict Mode ์๊ฒฉ ๋ชจ๋์ ์ฌ์ด๋ ์ดํํธ
[React] ๋ฆฌ์กํธ Strict Mode ์๊ฒฉ ๋ชจ๋์ ์ฌ์ด๋ ์ดํํธ
2024.05.05 -
[React] ํค๋ณด๋๋ก ์กฐ์ํ ์ ์๋ ๋๋กญ๋ค์ด ์๋์์ฑ ๊ฒ์์ฐฝ ๊ตฌํํ๊ธฐ
[React] ํค๋ณด๋๋ก ์กฐ์ํ ์ ์๋ ๋๋กญ๋ค์ด ์๋์์ฑ ๊ฒ์์ฐฝ ๊ตฌํํ๊ธฐ
2024.05.05