type="file" の入力ボックスのスタイル変更の概要

type="file" の入力ボックスのスタイル変更の概要
入力タイプ「file」とは何ですか?

これが何なのかは説明する必要はないと思います。誰もが知っていることです。そして、さまざまな携帯電話があるこの時代では、写真を撮って直接アップロードすることもできます。以前よりもずっと楽しいです。

以前は 1 つのファイルしかアップロードできませんでした。現在は、 multiple属性を追加することで複数のファイルをアップロードでき、多くのファイル形式がサポートされています。詳細については、http://www.w3.org/html/ig/zh/wiki/HTML5/number-state#.E6.96.87.E4.BB.B6.E4.B8.8A.E4.BC.A0.E7.8A.B6.E6.80.81 を参照してください。

アップロードボタンのスタイル調整

CSS を扱ったことがある人なら、HTML 要素の中で、フォーム コントロール要素のスタイル変更が最も面倒だということを知っています。多くのコントロールのスタイルは、システム テーマによって変わります。変更したい場合、特に IE ブラウザーでは、シミュレートすることしかできません。

アップロードボタンtype="file"については、一度スタイルを変更しました。シミュレーション方式を試した方もいましたが、シミュレーション方式ではいわゆるセキュリティ上の問題が発生する可能性があると言われています。まあ、ページ作成者や画像カッターの私には理解できませんし、理解できたとしても対処方法がわかりません。じゃあシミュレーションしないで…

しかし、シミュレーションを行わない場合、どのようにスタイルを変更できるのでしょうか?

画像配置オーバーレイソリューション

以前私が知っていた方法は、実は誰もが知っている方法で、アップロードボタンtype="file" を透明にして画像の上に重ね合わせるというもので、クリックするだけで画像をアップロードできると感じられ、ネイティブのアップロードボタンを見る必要はありません。


コードをコピー
コードは次のとおりです。
<input type="file" id="upfile" ><span ></span>.up_icon,.up_input {position: absolute;top: 10px;left: 10px;width: 64px;height: 64px;z-index: 2}.up_icon {overflow: hidden;font-size: 0;line-height: 99em;background: url(http://sfault-image.b0.upaiyun.com/346/967/3469672357-54250d7235406_articlex) no-repeat 0 0;z-index: 1;}

デモをご覧ください: http://jsbin.com/qacijusihivi/1/

このデモでは、実装方法が非常に明確に示されています。アップロード ボタンは画像の上に配置されています。画像は、空のラベルの背景画像として使用できます。次に、アップロード ボタンの不透明度0に設定して、ボタンが見えないようにしています。ただし、実際にはボタンは存在します。その後...その後...他には何も起こらず、効果が達成されます...

WebKit 向けソリューション

この Webkit カーネルのソリューションは、Webkit カーネルにのみ有効であるため、実際には少し無理が​​あり、あまり実用的ではありません。 -webkit-プレフィックスを使用した書き込みがサポートされていない場合は効果がありません。そのため、誰もが娯楽としてそれを見るべきです。


コードをコピー
コードは次のとおりです。
<input type="file" id="upfile">input[type="file"]::-webkit-file-upload-button {position: absolute;top: 10px;left: 10px;width: 64px;height: 64px;overflow: hidden;line-height: 99em;background:url(http://sfault-image.b0.upaiyun.com/346/967/3469672357-54250d7235406_articlex) no-repeat 0 0;border: 0 none;z-index: 2;}

デモをまずご覧ください: http://jsbin.com/wicihihabifi/1/

このデモの HTML 構造は非常にシンプルで、[入力タグが 1 つだけです。以前の方法よりもはるかにシンプルですが、互換性は確実に低くなります。携帯電話でどのように動作するかはわかりません。ほとんどの携帯電話は現在、Webkit ベースのブラウザーを使用しています。忘れて、エンターテイメントとして扱って楽しんでください。

シンプルな HTML 構造変更スタイルは、 ::-webkit-file-upload-button疑似要素に完全に依存しています。これは単なる普通のボタン要素なので、この疑似要素のスタイルに対応する変更を加えるだけです。このボタン要素を Shadow DOM で表示すると、より鮮明に表示されます。

これは Chrome 開発者ツールで表示される DOM ツリーです。一般的に、Shadow DOM の表示を有効にしないと、 type="file"入力にこれほど多くのコンテンツが含まれていることはわかりません。開く方法は非常に簡単です。開発者ツールの右上隅にある歯車をクリックします。ポップアップ レイヤーでこのボックスをチェックするだけです。

これで他の入力タグも自分で確認できるようになりました。Shadow DOMがあれば拡張可能です。そして、新しい HTML5 タグにもいくつかあります...

やっと

type="file"入力タグについては、現在、スタイルを変更する方法が 2 つしか知られておらず、 Webkitのソリューションも非常に限られていますが、携帯電話では問題ないはずです。おそらく誰かが、「他のブラウザはどうですか?」と尋ねるでしょう。はい、どうですか?私も知りません。

Firefox ブラウザでは、 forms.cssにセレクターinput type="file" > button[type="button"]がありますが、なぜかこのセレクターを自分のスタイルに追加しても効果が見られなかったので、それ以上操作しませんでした。

PS: form.css ファイルについては、Firefox ブラウザのファンであれば、パス resource://gre-resources/forms.css の存在を知っているはずです。

ああ、そうか、Opera ブラウザもあるんだ。Mac で遊んでいたときは、プレフィックス-webkit-の付いたスタイルがそのまま継承されていたんだ...

添付ファイル: アップロードボタンの画像:

<<:  Saltstack に Zabbix サービスをデプロイする方法を説明します

>>:  JS クロスドメイン XML - AS URLLoader を使用

推薦する

MySQLデータ移行の概要

目次序文: 1. データ移行について2. 移行計画と留意点要約:序文:日常業務では、テーブル、データ...

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

HTMLフォームのいくつかの送信方法の概要

最も一般的で、最もよく使用され、最も一般的な方法は、submit タイプを使用することです。コードを...

JavaScript におけるシリアル操作と並列操作

目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...

HTML5で見逃せないAPIやヒントのまとめ

これまでのブログ投稿では、HTML 5 ではあまり使われていないが注目すべき API やヒントに焦点...

高度な JavaScript フロントエンド開発でよく使用されるいくつかの API の例の詳細な説明

目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...

Windows 64 ビット版の MySQL 8.0.15 インストール チュートリアル

まず公式サイトにアクセスしてダウンロードし、MySQLダウンロードをクリックします。 ダウンロードし...

js での Object.create インスタンスの使用法の詳細な説明

1. Object.create() メソッドを使用して新しいオブジェクトを作成し、既存のオブジェク...

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...

W3C チュートリアル (9): W3C XPath アクティビティ

XPath は、XML ドキュメントの一部を選択するための言語です。 XPath は、XSLT、XQ...

WEB中国語フォントアプリケーションガイド

Web 上でフォントを使用することは、基本的なスキルであると同時に芸術でもあります。英語のフォントに...

我々は自らの力でIE6を絶滅に追い込んでいる

実際、IE6 が本当にいつ消滅するのか私たちは毎日疑問に思っていますが、2001 年のリリース以来、...

ピクセルを包括的なブランド体験に変えるヒント

編集者:この記事では、インタラクティブデザインがブランドコミュニケーションチェーン全体で果たすべき役...

MySQL 8.0.15 のインストールと設定のグラフィックチュートリアルと Linux でのパスワード変更

このブログは、MySQL8.0.15 を正常にインストールしたことを思い出すために書きました。以前は...

CSS の Display、Visibility、Opacity、rgba、z-index: -1 の違い

ウェブページ上のいくつかの要素の非表示、透明、その他のプロパティを制御する必要があることがよくありま...