HTML でファイルをアップロードするときに使用する <input type="file"> 要素のスタイルをカスタマイズします。

HTML でファイルをアップロードするときに使用する <input type="file"> 要素のスタイルをカスタマイズします。

Web ページでは、基本的に <input type="file"> 要素はファイルをアップロードするときに使用されます。デフォルトのスタイルは次のとおりです。

Chromeの場合:

IEの場合:

上記のいずれの場合も、スタイルは比較的シンプルで、多くの Web ページのスタイルとは調和しません。

ユーザーのニーズやデザインスタイルに応じて表示スタイルを変更する機会は数多くあります。

次のようなブートストラップスタイルのアップロードボタンを作成したい場合、どのように実装できますか?

アップロードボタンを構築するために必要な基本要素


コードをコピー
コードは次のとおりです。
<span> <span>アップロード</span> <input type="file"> </span>

効果(クローム):

現在表示されているのは 2 行で表示されます。

周辺を div に置き換えない理由は、IE7 ブラウザでは、インラインに設定されていない限り、その幅が最大可能な幅まで拡張されるためです。 inline に設定すると要素の幅を調整できないため、span を使用して inline-block に設定するとこの問題を解決できます。

スタイルを追加して 2 行を 1 行にします


コードをコピー
コードは次のとおりです。
<span"> <span>アップロード</span> <input type="file"> </span>

css:


コードをコピー
コードは次のとおりです。
.fileinput-button { position: relative; display: inline-block; } .fileinput-button input{ position: absolute; right: 0px; top: 0px; }

効果:

デフォルトでは水色の枠線はありません。マウスをクリックした後にのみ表示されます。ここでは見やすくするために表示されています。

外側のスパンを display:relative に設定し、入力を display:absolute に設定すると、それらはすべてドキュメント フローの外側になります。

入力を外側の範囲に限定し、絶対位置決めを行うことで、本来の2行表示が1行表示に変更されます。

実際、ここでオーバーフローしています。実際の幅は「アップロード」テキストの幅です。fileinput-button スタイルを変更して、overflow: hidden を追加します。


コードをコピー
コードは次のとおりです。
.fileinput-button { 位置: 相対; 表示: インラインブロック; オーバーフロー: 非表示; }

効果:

非常に興味深いです。上部と右側に青い境界線が表示されていますが、これは実際には左側と下部のオーバーフロー部分を隠しています。

このとき、マウスで「アップロード」という単語をクリックすると、実際には入力をクリックすることになり、「開く」ダイアログ ボックスが表示される場合があります。これは、表示階層では入力が「アップロード」よりもユーザーに近いためです。

入力位置の右側に注意してください。なぜ左側の配置を使用しないのですか。

左に変更する場合。

効果(クローム):

効果(IE):

Chromeでは入力要素の選択ボタンが露出していますが、後から透明度を設定することで透明にできるので問題ありません。

ただし、入力ボックスは IE で公開されます。重要なのは、マウスが入力ボックスに移動すると、ポインターが入力状態に変わることですが、これは非常に扱いにくいです。

右配置方法を使用して入力ボックスを左に移動すると、IE でマウス ポインターが入力状態に変わるのを回避できます。

透明な入力要素

CS: ...


コードをコピー
コードは次のとおりです。
.fileinput-button { position: relative; display: inline-block; overflow: hidden; } .fileinput-button input{ position: absolute; left: 0px; top: 0px; opacity: 0; -ms-filter: 'alpha(opacity=0)'; }

効果:

入力は完全に消えてしまいましたが、「アップロード」をクリックすると引き続き機能します。

IE8+ をサポートできます。

Bootstrapをインポートし、ボタンスタイルを追加する

ヘッド内に外部 CSS および JS への参照を追加します。


コードをコピー
コードは次のとおりです。
<link rel="stylesheet" href="bootstrap/bootstrap.css"> <link rel="stylesheet" href="bootstrap/bootstrap-theme.css"> <script src="bootstrap/jquery-1.10.2.js"></script> <script src="bootstrap/bootstrap.js"></script>

ボタンスタイルを追加します。


コードをコピー
コードは次のとおりです。
<span> <span>アップロード</span> <input type="file"> </span>

効果:

サイズの問題を解決する

fileinput-button スタイルに width:100px を追加し、外側のスパンを 100px 幅に設定すると、下部をクリックしても反応がないことがわかります。これは、入力がデフォルトのサイズであり、下部をカバーできないためです。

入力部分のフォントサイズを大きく設定して拡大することで、重なりの問題を解決できます。ここでは 200 px に設定しています。


コードをコピー
コードは次のとおりです。
.fileinput-button input{ position:absolute; right: 0px; top:0px; opacity: 0; -ms-filter: 'alpha(opacity=0)'; font-size: 200px; }

これにより、カバレッジの問題が解決されます。

仕上げる。

参考: jQuery-File-Upload

IE7 に対応させたい場合は、jQuery-File-Upload の記述方法を参考にしてください。

コード:

XML/HTML コードコンテンツをクリップボードにコピー
  1. <!DOCTYPE html >   
  2. <html>   
  3. <ヘッド>   
  4.      <タイトル> </タイトル>   
  5.      <メタ  http-equiv = "コンテンツタイプ"  コンテンツ= "text/html;charset=utf-8" >   
  6.      <リンク  rel = "スタイルシート"   href = "bootstrap/bootstrap.css" >   
  7.      <リンク  rel = "スタイルシート"   href = "bootstrap/bootstrap-theme.css" >   
  8.      <スクリプト  src = "bootstrap/jquery-1.10.2.js" > </スクリプト>   
  9.      <スクリプト  src = "bootstrap/bootstrap.js" > </スクリプト>   
  10.      <スタイル>   
  11. .file入力ボタン{
  12. 位置: 相対的;
  13. 表示: インラインブロック;
  14. オーバーフロー: 非表示;
  15. }
  16. .fileinput-button 入力{
  17. 位置:絶対;
  18. 右: 0px;
  19. 上: 0px;
  20. 不透明度: 0;
  21. -ms-filter: 'アルファ(不透明度= 0 )';
  22. フォントサイズ: 200px;
  23. }
  24.      </スタイル>   
  25. </ヘッド>   
  26. <本文 スタイル= "パディング: 10px" >   
  27.      < div   align = "center" >   
  28.          <スパン  class = "btn btn-success ファイル入力ボタン" >   
  29.              < span >アップロード</ span >   
  30.              <入力 タイプ= "ファイル" >   
  31.          </スパン>   
  32.      </div>   
  33. </本文>   
  34. </html>   

<<:  vue3を使用してAppleシステムのサイドメッセージプロンプト効果を模倣する

>>:  Mysqlチュートリアルでのグループランキングの実装例の詳細な説明

推薦する

安全な構成のためにDockerでTLSを有効にする手順

序文以前、Docker の 2375 Remote API を有効にしていました。会社のセキュリティ...

Web デザイン: Web ミュージックの実装テクニック

<br />Web ページに音楽を挿入する場合、サフィックスに応じて異なるコードを記述す...

Docker Swarmの概念と使用法の詳細な説明

Docker Swarm は、Docker によって開発されたコンテナ クラスター管理サービスです。...

Linux コマンド sort、uniq、tr ツールの詳細な説明

並べ替えツールLinux の sort コマンドは、テキスト ファイルの内容を並べ替えるために使用さ...

MySQL の Like の概念と使用法の説明

Like は中国語で「好き」を意味しますが、MySQL データベースに適用される場合、Like は、...

ins タグと del タグの属性と使用法

insとdel は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、また...

Dockerでリモートアクセスを有効にする方法

DockerデーモンソケットDocker デーモンは、 unix 、 tcp 、 fdの 3 種類の...

MySQL ストアド関数(カスタム関数)の定義と使用方法の詳細な説明

ストアド関数ストアド関数とは: SQL コードの一部をカプセル化し、特定の関数を完了して、結果を返し...

入力ボックスのプレースホルダーテキストのデフォルトの色を変更する -webkit-input-placeholder メソッド

HTML5 では、入力用のネイティブ プレースホルダー属性が追加されており、これは高度なブラウザでサ...

ウェブページのカラーマッチングスキルについての簡単な説明(フロントエンド開発者必読)

一般的に、Web ページの背景色は、より柔らかく、よりシンプルで、より明るく、暗いテキストとマッチし...

JavaScriptのアンチシェイクとスロットリングとは

目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...

Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

目次テクノロジースタック効果分析するテクノロジースタックサイドバー用Antdtabは要素を使用します...

テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加によく使用される MySQL の SQL 文の概要

この記事では、テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加を行う一般的な ...

基本的なウェブページパフォーマンス最適化ルールの簡単な概要

ブラウザのウェブページを最適化するためのいくつかのルールページの最適化静的リソース圧縮ビルド ツール...

DPlayer.js ビデオ再生プラグインの使い方

DPlayer.jsビデオプレーヤープラグインは使いやすい主な用途: ビデオの再生、監視の開始、終了...