基本的に、ファイルのアップロード等で使用するフォーム要素として
『input』要素の『type="file"』がありますが、
ファイル選択ボタンや、ファイル名表示エリアの位置やデザインは
基本的にブラウザ依存で、中々デザインを当て込むのは困難です。
デフォルトで適用されるデザインは、
IEや
Firefoxはファイル選択ボタンがファイル名表示エリアに対して右側ですし、
Chromeや
Safariはファイル選択ボタンがファイル名表示エリアに対して左側です。
ファイル未選択字のデフォルトメッセージ(『ファイルが選択されていません』等)も
言葉が異なっていたり、そもそも表示が無い等まちまちです。
これだけブラウザによって異なれば、
そのままデフォルトで使用すると
他のデザインとのバランスが悪くなったりして、
どうしてもデザインを入れたいパターンが出てくる場合があります。
また、ブラウザ依存のデザインなので、ブラウザによってデザインが異なるため、
UI的に迷いが生じる等を危惧して、全端末同じ様な見た目にする為に
デザインを適用する場合もあります。
今回は、そんなブラウザ依存のデザインが入ってしまっている
『input』要素の『type="file"』をカスタマイズして、好きなデザインに変えてしまう方法を
サンプルコード付きで解説します。
イベント起動などでは、分かりやすいので
jQueryを使用していますが、
勿論ネイティブの
JavaScriptでも同じ事が出来ますので、
適当に置き換えて読み進めて下さい。
実際、
jQueryを使用しているイベント駆動の部分でも、
そこまで複雑な事はしていないので、セレクタをドキュメントから書く必要がある程度の違いです。
要望があれば、ネイティブの
JavaScriptへ書き直したものを追記しますので、
コメント頂ければ幸いです。
- まずは普通に『input』要素の『type="file"』を設置しよう。
- ファイル選択を起動させよう。
- ファイル選択状況表示エリアを実装しよう。
- 忘れがちなテキストボックス選択イベント
- Internet Explorer 対策
『【jQuery】ファイル選択フォームデザインのカスタマイズ方法』を続きを読む »