type="file ์ธํ์ด ์๋ง ๊ฐ์ฅ html์์ ์คํ์ผ ํ๊ธฐ ์ด๋ ค์ด ํ๊ทธ์ผ๊ฒ๋๋ค.
๋ณด์ ๋ฌธ์ ๋ก ๋ธ๋ผ์ฐ์ ์์ ๋ณ๊ฒฝํ๋๋ฐ์ ์ ์ฝ์ ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฌผ๋ก , ํธ๋ฆญ์ด ์๊ธฐ์ผ ํ์ง๋ง, ๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ณ ์ ์ ์ปจํธ๋กค์ ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅด๊ฒ ํํ๋๋ฉฐ
๊ฒ๋ค๊ฐ ๋ณด๊ธฐ ์์ข์ ๋ง์ ์ฝ๋๋ฅผ ์จ์ผ๋๋ค๋ ๊ฒ๋๋ค.
๊ฐ์ฅ ๊น๋ญ์ค๋ฌ์ด ๋ถ๋ถ์ด ๋ฐ๋ก ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋ ๊ฒ์ ์ฐพ๋๊ฒ์ด์ฃ .
๋ง์ฝ ์ด ๋ฌธ์ ๋ฅผ ๊ตฌ๊ธ๋งํด๋ณด์๋ฉด, ์ดํดํ๊ธฐ ์ด๋ ค์ด javascript, jquery ๊ทธ๋ฆฌ๊ณ css๋ฅผ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ
ํํ ๋ฆฌ์ผ์ ๊ตฌํ๊ฒ ๋ ๊ฒ๋๋ค.
์ ์๋์ ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ํด๊ฒฐํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๊ณ , ์ดํดํ๊ธฐ ์ฝ๋๋ก ๋
ธ๋ ฅํ์๋๋ค.
4๋จ๊ณ๋ก ๋๋ ์ ๋ค๋ค ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฒซ์งธ - ํ ์คํธ์์์ fileํ์ ์ธ input์ ๋ง๋ ๋ค
div ์ input ํ์ผ ํ์
์ ํ
์คํธ ์์์ ๋ฃ์ด์ ์์ํฉ๋๋ค.
div๋ ์ฌ์ฉํ๊ณ ์ถ์ "์ฐพ์๋ณด๊ธฐ..."๋ฒํผ์ ํฌ๊ธฐ๊ฐ ๋๋๋ก ํฉ๋๋ค. (์ฐพ์๋ณด๊ธฐ ์ด๋ฏธ์ง ๋ฒํผ์ ํฌ๊ธฐ ํน์ ์ํ๋ ํฌ๊ธฐ)
์ง๊ธ ๊น๋ค๋ก์ด ๋ถ๋ถ์ hidden ๋์ด์๋ div์ ํด๋์ค์ overflow ์์ฑ์
๋๋ค.
๊ทธ๊ฒ ์จ๊ฒจ์ ธ์๋ div์ ๋ด์ฉ์ด ํ์ด๋์ค๊ฒ ํฉ๋๋ค. ์คํฌ๋ฆฐ์ท์ ๋ณด์ฃ .
<
input
id
=
"fileName"
class
=
"file_input_textbox"
readonly />
<
div
class
=
"file_input_div"
>
<
input
type
=
"file"
/>
</
div
>
.file_input_textbox
{
float
:
left
}
.file_input_div
{
position
:
relative
;
width
:
100px
;
height
:
23px
;
overflow
:
hidden
;
}
์คํฌ๋ฆฐ์ท:
![image](http://lh6.ggpht.com/_H9pKG-gOXvc/S1egYb_1f-I/AAAAAAAAALw/8YiMr1Ormnk/image_thumb%5B5%5D.png?imgmax=800)
๋์งธ - ์ฌ๋ฐ๋ ๋ถ๋ถ: type="file" ์ธํ์ ๋ ํฌ๊ฒํ๋ค
์ด์ ๋ div ์์ type="file" ์ธํ์ ๋ฒํผ ๋ถ๋ถ์ ๋ณด์ด๊ฒ ํ๊ณ ์์ ํ ์ฑ์์ค์ผ ํฉ๋๋ค.
๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ค์ด ์ด ๊ฒฝ์ฐ์ ๋ค๋ฅด๊ฒ ์๋ํ๋, ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌํ๋๊ฒ์ ์ด์ ์ถฉ๋ถํ๋ค์.
๊ทธ๋ผ, ์ด ํํ ๋ฆฌ์ผ์ ๊ฐ์ฅ ํฐ ํธ๋ฆญ์ ๋ญ๊น์?
์ปจํธ๋กค ๋ถ๋ถ์ ๋ํฌ๊ฒ ํ๋๊ฑฐ์ฃ , ์ด๋ป๊ฒ์?
๊ทธ๋ฅ ํฐํธ ํฌ๊ธฐ๋ฅผ ์ด์ด์์ด ํฐ ํฌ๊ธฐ๋ก ์ก์์ฃผ๋ฉด ๋ฉ๋๋ค. (์๋ง๋ 30px ์ด๋ฉด ์ถฉ๋ถํ ๊ฒ๊ฐ๋ค์)
<
input
type
=
"text"
id
=
"fileName"
class
=
"file_input_textbox"
readonly
=
"readonly"
>
<
div
class
=
"file_input_div"
>
<
input
type
=
"file"
class
=
"file_input_hidden"
/>
</
div
>
.file_input_hidden
{
font-size
:
23px
;
position
:
absolute
;
right
:
0px
;
top
:
0px
;
opacity:
0
;
}
์คํฌ๋ฆฐ์ท2:
![image image](http://lh4.ggpht.com/_H9pKG-gOXvc/S1egZnTKxDI/AAAAAAAAAL4/lvH0MBu5leE/image_thumb%5B7%5D.png?imgmax=800)
์ ์งธ - type="file" ์ธํ์ invisible๋ก ํ๊ณ ์ ์ํ ๋ฒํผ์ ์ด ๋ค๋ก ์จ๊ธฐ๊ธฐ
์ธํ ํ์ผ์ invisible๋ก ๋ง๋ ๋ค๊ณ ํด์ ํด๋ฆญ ๋ชปํ๋๊ฑด ์๋๋๋ค.
invisible๋ก ๋ง๋ค๊ณ , ๊ทธ ๋ค๋ก ์ ์ํ ๋ฒํผ์ ๋ฃ์ฃ .
์ด๋ฐ์์ผ๋ก, ์ ์ํ ๋ฒํผ์ ๋ณผ์ ์์ง๋ง ํด๋ฆญ์์, ์ฌ์ค ์ค์ (์๋ณด์ด๋) ์ฐพ์๋ณด๊ธฐ ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋๊ฒ๋๋ค.
โfile_input_buttonโ ํด๋์ค๋ฅผ ๋ฐ๊ฟ์ ์ฐพ์๋ณด๊ธฐ ๋ฒํผ์ ์ํ๋๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.
<
input
type
=
"text"
id
=
"fileName"
class
=
"file_input_textbox"
readonly
=
"readonly"
>
<
div
class
=
"file_input_div"
>
<
input
type
=
"button"
value
=
"Search files"
class
=
"file_input_button"
/>
<
input
type
=
"file"
class
=
"file_input_hidden"
/>
</
div
>
.file_input_button
{
width
:
100px
;
position
:
absolute
;
top
:
0px
;
background-color
:
#33BB00
;
color
:
#FFFFFF
;
border-style
:
solid
;
}
.file_input_hidden
{
font-size
:
45px
;
position
:
absolute
;
right
:
0px
;
top
:
0px
;
opacity:
0
;
filter: alpha(opacity=
0
);
-ms-filter:
"alpha(opacity=0)"
;
-khtml-opacity:
0
;
-moz-opacity:
0
;
}
์คํฌ๋ฆฐ์ท3:
![image](http://lh5.ggpht.com/_H9pKG-gOXvc/S1egauKHukI/AAAAAAAAAMA/_Tu5wNBPMnY/image_thumb%5B9%5D.png?imgmax=800)
๋ท์งธ - ๋ง์ง๋ง ๋จ๊ณ: ์ ํ๋ ํ์ผ์ ์ด๋ฆ์ ๊ฐ์ง๊ณ ํ ์คํธ ์์๋ฅผ ์ฑ์๋ผ
์ด์ ์ ๋จ๊ณ๋ฅผ ๋ค ํด์๋ค๋ฉด, ํ์ผ์ ์ ํํ์ ํ
์คํธ ์์์ ์๋ฌด๊ฒ๋ ์๋์ค๊ฒ ๋ ๊ฒ๋๋ค.
์๋ํ๋ฉด ํ์ผ๋ช
์ด ์ค์ ๋ก๋ ์จ๊ฒจ์ง type=file ์ธํ์์ ์ฐ์ฌ์ง๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฐ๋ผ์, ์ด ๋ง์ง๋ง ๋จ๊ณ์์ ๊ฐ๋จํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ช
๋ น์ type=file ์ธํ์ onchange ์ด๋ฒคํธ์ ๋ํด์ค ๊ฒ๋๋ค.
์ด ๋ช
๋ น์ ํ
์คํธ ์์์ ๊ฐ(ํ์ผ๋ช
) ์ ๋ณต์ฌํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ณผ ์ ์๊ฒ๋๋๊ฑฐ์ฃ .
<
input
type
=
"text"
id
=
"fileName"
class
=
"file_input_textbox"
readonly
=
"readonly"
>
<
div
class
=
"file_input_div"
>
<
input
type
=
"button"
value
=
"Search files"
class
=
"file_input_button"
/>
<
input
type
=
"file"
class
=
"file_input_hidden"
onchange
=
"javascript: document.getElementById('fileName').value = this.value"
/>
</
div
>
Firefox 3, IE6, IE7, IE8, Opera 10, Chrome 3์์ ํ
์คํธ ํด๋ดค๋๋ฐ ๋ชจ๋ ์๋ฒฝํ๊ฒ ์ ๋๋ค์!
์์ฑ๋ ์ฝ๋
์, ์ฌ๊ธฐ ์์ฑ๋ ์ฝ๋๊ฐ ์์ต๋๋ค. (CSS์ HTML ๋ชจ๋ ํ๊ณณ์ ์์)
//css
.file_input_textbox
{
float: left
}
.file_input_div
{
position: relative;
width: 100px;
height: 23px;
overflow: hidden;
}
.file_input_button
{
width: 100px;
position: absolute;
top: 0px;
background-color: #33BB00;
color: #FFFFFF;
border-style: solid;
}
.file_input_hidden
{
font-size: 45px;
position: absolute;
right: 0px;
top: 0px;
opacity: 0;
filter: alpha(opacity=0);
-ms-filter: "alpha(opacity=0)";
-khtml-opacity: 0;
-moz-opacity: 0;
}
//html
<
input
type
=
"text"
id
=
"fileName"
class
=
"file_input_textbox"
readonly
=
"readonly"
>
<
div
class
=
"file_input_div"
>
<
input
type
=
"button"
value
=
"Search files"
class
=
"file_input_button"
/>
<
input
type
=
"file"
class
=
"file_input_hidden"
onchange
=
"javascript: document.getElementById('fileName').value = this.value"
/>
</
div
>
์ฐธ๊ณ ๋ก ์์๊ฐ์ด ๊ทธ๋ฅ ์ ์ฉํ์ง๋ง๊ณ ์ข๋ ๋ถ์ฌ์ผ๋ ๊ฒ์ด ์๋ค, ๋ง์ฝ ์์๊ฐ์ด ์ ์ฉํ๋ฉด ํ์ ๋ฒํผ์ ๋ง์ฐ์ค๋ฅผ ์ค๋ฒํ ๊ฒฝ์ฐ "์ ํ๋ ํ์ผ์ด ์๋ค"
๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋จ๊ธฐ๋๋ฌธ์ hidden๋์๋ file์๊ฒ title์ ๋ฃ์ด์ฃผ๋ํธ์ด ์ข๋ค.
๊ตญ๋ด์ถ์ฒ : http://www.xemall.net/tutorial_designning/730(๋ฒ์ญ)
ํด์ธ์ถ์ฒ : http://tiagoe.blogspot.kr/2010/01/css-style-typefile-tags.html
'Before. 2021' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น ์ ๊ทผ์ฑ ์งํ๋ณ ์ ๋ฌธ๊ฐ์ฌ์ฌ ํ๊ฐ ๊ธฐ์ค (0) | 2012.11.09 |
---|---|
input&label ์น ์ ๊ทผ์ฑ์ ๋ง๋ ์ฝ๋ฉ (0) | 2012.11.09 |
IE9/Chrom table border ๋ฌธ์ (0) | 2012.10.16 |
์ต์คํ๋ก๋ฌ์์ html5๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ (0) | 2012.10.10 |
html5 ๋ฌธ์๊ตฌ์กฐ ๋ฐ DOCTYPE (0) | 2012.10.10 |