어제, 파일찾기를 만들었는데 난관에 봉착했다;
사실 파일찾기를 처음 코딩해 보는 입장이니; 대충 다른데서 많이 사용하는 방법을 이용했는데;
아오....익스에서 안먹힘 ㅠㅠ;; 몇 시간을 씨름하다가 검색을 통해; 한줄기 빛을 발견;
<input type="file".../> 태그의 "파일 찾기" 버튼을 이미지로 대체하는 방법에 대해 소개하겠습니다.
1. 교체할 이미지의 크기와 일치하는 div 태그를 만듭니다.
<div id="divFake" style="position:relative; left: 2px; width: 67px;height:27px; overflow:hidden;"></div>
위의 div 태그안의 width, height는 이미지 파일과 상관이 있고, left 속성은 이미지가 살짝 밀려서 위치가 뜨는(?) 문제로 지정한 것이니
경우에 따라 안해주셔도 됩니다.
overflow:hidden은 좀 있다가 설명 ㅋ
2. 만들어준 div 태그 안에 <input type="file".../> 태그를 넣어줍니다.
<input id="file" name="filea" type="file"
style="font-size: 23px; position: absolute;right:0px;top:0px; opacity:0; filter: alpha(opacity=0);cursor: pointer;"/>
폰트 사이즈를 크게하면 브라우저에서 지원하는 '파일찾기' 버튼의 크기가 커지게 됩니다.
div태그의 속성 중에서 overflow:hidden 으로 했으니 div를 벗어나는 부분은 보이지 않게 됩니다.
그럼 버튼부분만 보이게 됩니다. 그런데 이 부분에서도 주의해야하는게 폰트를 크게 했어도 버튼은 보이지 않고 오히려
빈칸만 보일 수가 있습니다. 그 이유는 그 이전 태그들의 정렬규칙을 따라가기 때문입니다. 따라서 버튼이 보이지 않고 파일 경로가
나오는 부분만 보일때 해당 경우가 있는지 확인해주셔야 합니다.
filter: alpha(opacity=0); 속성은 파일찾기 버튼의 기능이 수행되지만 모습은 보이지 않게 하는 역할을 해줍니다.
왜 그런지는 저도 공부를 더 해야....OTL
cursor: pointer; 속성은 위와 같이 <input type="file".../> 태그에 해줘도 되고 뒤에 붙일 이미지 태그에 해줘도 됩니다.
자. 여기까지 성공하셨으면 이제 마무리만 남았습니다.
3. 이미지 파일 입히기
<input type="file".../> 태그뒤에 이미지 태그를 붙여줍니다.
ex) <img src="/images/btn/btn_file_serch.gif" alt="찾아보기"/>
그래서 전체 html 코드는..!
<div id="divFake" style="position:relative; left: 1px; width: 67px;height:27px; overflow:hidden;">
<input id="file" name="filea" type="file"
style="font-size: 23px; position: absolute;right:0px;top:0px; opacity:0; filter: alpha(opacity=0);cursor: pointer;"/>
<img src="/images/btn/btn_file_serch.gif" alt="찾아보기"/>
</div>
여기에 추가로 원래 태그에 보이는 파일 경로를 다른 <input>태그에 넣어주는 것까지 하면 완벽하게 원래 기능을 대체할 수 있습니다.
사용자가 보는 부분만 변하고 실제 동작은 여전히 <input type="file"...> 태그가 하기 때문입니다.
- 2013.12.30 추가내용
'파일찾기'버튼을 이미지로 변경했다손 치더라도 원래의 파일 경로를 복사해주는 부분은
브라우져 보안이슈상 더이상 구현할 수 없는 부분입니다.
[출처] input type="file" 의 '파일찾기' 버튼을 이미지로 대체하기|작성자 moonv11
http://blog.naver.com/moonv11/60163211002
그리고, div안에서 항상 텍스트 정렬이 내 맘대로 되지 않는 것에 대한 해결책;
div 안에 텍스트를 수평중앙정렬하기 위해서는 text-align:center; 스타일을 주면 된다.
div 안에 텍스트를 수직중앙정렬을 하려면 vertical-align:middle; 스타일을 주면 될 것 같지만, 되지 않는다.
div 가 아닌 테이블의 경우 자동으로 수직으로도 정렬이 된다.
div 에서 수직으로 중앙정렬하기 위해서는 스타일에 display:table-cell; 속성을 주면 된다.
<div style="height:300px;text-align:right;display:table-cell;vertical-align:middle;">로그인 | 회원가입</div>
하지만 IE에서는 8.0 이상부터 위의 속성이 적용된다.
꼼수로는 div 의 height 값을 line-height 값과 동일하게 주면 된다.
<div style="height:300px;text-align:right;line-height:300px;">로그인 | 회원가입</div>
http://dantes.kr/410
아아 너무 감사합니다;
alt와 title의 차이점
둘 다 커서를 올리면(hover) 설명이 나오도록 해주지만
title은 일반적인 링크나 텍스트 등에 부가설명을 달 때 달아주고
<a href=" " title="이런 저런 이야기입니다">
이미지 설명에는 alt를 단다.
<img src=" " alt="이 그림입니다">
'designband™ > web' 카테고리의 다른 글
구글링 잘하는 방법.txt (0) | 2014.05.29 |
---|---|
포털들의 새로운 디자인들.. (24) | 2009.07.01 |
CSS 이미지대치, 링크꾸미기 (0) | 2008.10.06 |
JW Media Player 초간단 사용법 (0) | 2008.09.30 |
여러가지 팁 정보정리 (9) | 2008.09.30 |