<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>QUOIT Blog &#187; input</title>
	<atom:link href="http://ken.quoit.jp/tag/input/feed/" rel="self" type="application/rss+xml" />
	<link>http://ken.quoit.jp</link>
	<description>Programming, OpenSource, HTML/CSS etc...</description>
	<lastBuildDate>Sat, 04 Feb 2012 17:18:36 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>input fileをCSSでキレイにしたい</title>
		<link>http://ken.quoit.jp/2009/10/27/input-file%e3%82%92css%e3%81%a7%e3%82%ad%e3%83%ac%e3%82%a4%e3%81%ab%e3%81%97%e3%81%9f%e3%81%84/</link>
		<comments>http://ken.quoit.jp/2009/10/27/input-file%e3%82%92css%e3%81%a7%e3%82%ad%e3%83%ac%e3%82%a4%e3%81%ab%e3%81%97%e3%81%9f%e3%81%84/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 10:23:28 +0000</pubDate>
		<dc:creator>yakumo</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[input]]></category>

		<guid isPermaLink="false">http://ken.quoit.jp/?p=294</guid>
		<description><![CDATA[結構この壁にぶつかってる人はいると思います。 textとかsubmitをキレイにしたのに、fileの参照ボタンが…！という思いをした人は多いでしょう。 というか僕がぶつかったので記事を書いているわけですが。 というわけで早速調べてみました。 一番参考になったのはこちらのサイト。 CSS2/DOM &#8211; Styling an input type=&#8221;file&#8221; 英語です。 なので、大事なとこだけ簡単に要約します。 ＜CSS＞ １．&#60;input type=&#8221;file&#8221; /&#62;を「position:relative」で配置した要素（divとか）の中に配置する。 ２．「position:relative」で配置した要素（divとか）の中に子要素（divとか）を配置して、そこに&#60;input /&#62;と&#60;img /&#62;（実際表示されるもの）を入れる。 ３．&#60;input type=&#8221;file&#8221; /&#62;に「z-index:2」「opacity:0」をかける。 ４．おしまい ＜JavaScript＞ ここでJavaScriptが出てくる理由は大きく分けて２つ。 １）CSSの２．で配置した&#60;input /&#62;の中に何にも表示されないので、ファイルのパスファイル名を表示させたい。 ２）設定したCSSがきいてくれない古いブラウザ対応 しかし古いブラウザっていっても、上記サイトで言及されていたのはNetScape3/4とIE4です。 これはもう無視していいレベルと勝手に判断。 ※もしかしたら他のブラウザで問題があるかもなので、自分で調べてください！ なので、ファイルのパスファイル名を表示させる処理だけ加えれば完成ということになりそうですな。 一通り上記の内容をまとめるとこうなります。 ＜HTML＞ ＜CSS＞ div.fileinputs { position: relative; height:20px; } div.fakefile { position: absolute; top: 0px; left: 0px; z-index: 1; } input.file { [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>結構この壁にぶつかってる人はいると思います。<br />
textとかsubmitをキレイにしたのに、fileの参照ボタンが…！という思いをした人は多いでしょう。<br />
というか僕がぶつかったので記事を書いているわけですが。</p>
<p>というわけで早速調べてみました。<br />
<span id="more-294"></span></p>
<p>一番参考になったのはこちらのサイト。</p>
<blockquote><p><a href="http://www.quirksmode.org/dom/inputfile.html" target="_blank">CSS2/DOM &#8211; Styling an input type=&#8221;file&#8221;</a></p></blockquote>
<p>英語です。</p>
<p>なので、大事なとこだけ簡単に要約します。</p>
<p><strong>＜CSS＞</strong></p>
<p>１．&lt;input type=&#8221;file&#8221; /&gt;を「position:relative」で配置した要素（divとか）の中に配置する。<br />
２．「position:relative」で配置した要素（divとか）の中に子要素（divとか）を配置して、そこに&lt;input /&gt;と&lt;img /&gt;（実際表示されるもの）を入れる。<br />
３．&lt;input type=&#8221;file&#8221; /&gt;に「z-index:2」「opacity:0」をかける。<br />
４．おしまい</p>
<p><strong>＜JavaScript＞</strong><br />
ここでJavaScriptが出てくる理由は大きく分けて２つ。</p>
<p>１）CSSの２．で配置した&lt;input /&gt;の中に何にも表示されないので、<del datetime="2009-10-28T05:14:14+00:00">ファイルのパス</del>ファイル名を表示させたい。<br />
２）設定したCSSがきいてくれない古いブラウザ対応</p>
<p>しかし古いブラウザっていっても、上記サイトで言及されていたのはNetScape3/4とIE4です。<br />
これはもう無視していいレベルと勝手に判断。<br />
※もしかしたら他のブラウザで問題があるかもなので、自分で調べてください！</p>
<p>なので、<del datetime="2009-10-28T05:14:14+00:00">ファイルのパス</del>ファイル名を表示させる処理だけ加えれば完成ということになりそうですな。</p>
<p>一通り上記の内容をまとめるとこうなります。</p>
<p><strong>＜HTML＞</strong></p>
<pre name="code" class="html">
<div class="fileinputs">
<input type="file" name="img" class="file" />
<div class="fakefile">
<input id="targetInput" />
  <img src="img/btn-choose-file.jpg" />
 </div>
</div>
</pre>
<p><strong>＜CSS＞</strong></p>
<pre name="code" class="html">
div.fileinputs {
 position: relative;
 height:20px;
}

div.fakefile {
 position: absolute;
 top: 0px;
 left: 0px;
 z-index: 1;
}

input.file {
 position: relative;
 text-align: right;
 -moz-opacity:0 ;
 filter:alpha(opacity: 0);
 opacity: 0;
 z-index: 2;
}
</pre>
<p><strong>＜JavaScript＞</strong></p>
<pre name="code" class="javascript">
<script type="text/javascript" language="javascript" src="js/jquery-1.3.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(function(){
 $(".file").change(function(){
 $("#targetInput").val($(".file").val());
 });
});
</script>
</pre>
<p>※jQueryを使ってます。</p>
<p>あとはお好きにデザインしちゃってください！</p>
<div class="shr-publisher-294"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://ken.quoit.jp/2009/10/27/input-file%e3%82%92css%e3%81%a7%e3%82%ad%e3%83%ac%e3%82%a4%e3%81%ab%e3%81%97%e3%81%9f%e3%81%84/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

