アップロード画像コントロールを実現するネイティブ js

アップロード画像コントロールを実現するネイティブ js

この記事の例では、アップロード画像コントロールを実装するためのjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

1. ネイティブ入力スタイルを変更する

HTML構造

<div class="カード">
    <input id="アップロード" type="ファイル" accept=".jpg" />
    <div class="view">
        <!-- アップロードが成功した後 -->
        <div id="imgContainer" class="img-container">
            <画像id="画像" />
            <!-- マウスを動かすとビューが表示され、操作が削除されます-->
            <div class="img-mask">
                <span id="showImg">表示</span>
                <span id="delImg">削除</span>
            </div>
        </div>
        <!-- アップロードが成功するまで -->
        <span id="icon">+</span>
    </div>
</div>

CSS スタイル

.カード{
    位置: 相対的;
    幅: 200ピクセル;
    高さ: 140px;
    パディング: 5px;
    右マージン: 20px;
    境界線: 1px 破線 #d9d9d9;
    境界線の半径: 6px;
    マージン: 300px 自動;
}

.カード入力{
    位置: 絶対;
    左: 0;
    上: 0;
    幅: 100%;
    高さ: 100%;
    不透明度: 0;
    カーソル: ポインタ;
}

.カード .ビュー {
    幅: 100%;
    高さ: 100%;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
}

.card .view #アイコン {
    表示: インラインブロック;
    フォントサイズ: 30px;
}

.カード .ビュー .img-コンテナ {
    位置: 絶対;
    左: 0;
    上: 0;
    幅: 100%;
    高さ: 100%;
    表示: なし;
}

.img-コンテナ画像 {
    幅: 100%;
    高さ: 100%;
}

.imgコンテナ .imgマスク {
    位置: 絶対;
    左: 0;
    上: 0;
    幅: 100%;
    高さ: 100%;
    不透明度: 0;
    背景: rgba(0, 0, 0, .3);
    遷移: すべて 0.5 秒の緩和;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
}

.img-コンテナ:hover .img-マスク {
    不透明度: 1;
}

.img-マスクスパン{
    色: #fff;
    マージン: 0 10px;
    カーソル: ポインタ;
}

エフェクト表示

2. 写真をアップロードして表示する

入力変更イベントを監視し、画像が正常にアップロードされた後にURLを作成します。

<スクリプト>
    定数アップロード = document.getElementById('アップロード');
    const imgContainer = document.getElementById('imgContainer');
    定数img = document.getElementById('img');
    const icon = document.getElementById('icon');

    imgUrl = '' とします。
    // 画像が正常にアップロードされた後に URL を作成します
    upload.onchange = 関数 (値) {
        const fileList = value.target.files;
        if (ファイルリストの長さ) {
            imgContainer.style.display = 'ブロック';
            icon.style.display = 'なし';
            imgUrl = window.URL.createObjectURL(fileList[0]);
            テキストファイル img.src
        }
    }
<スクリプト>

アップロード成功後の表示

3. 画像プレビューを実装する

モーダルボックスを書く

<!-- 画像をプレビューするためのモーダル ボックス -->
<div id="モーダル">
    <span id="closeIcon">閉じる</span>
    <div class="content">
        <img id="modalImg">
    </div>
</div>

モーダルスタイル

/* モーダルスタイル */
#モーダル{
    位置: 固定;
    上位: 50%;
    左: 50%;
    変換: translate(-50%, -50%);
    幅: 0;
    高さ: 0;
    ボックスの影: 0 0 10px #d9d9d9;
    背景: rgba(0, 0, 0, .3);
    /* 遷移: すべて .1s のイーズインアウト; */
    オーバーフロー: 非表示;
}

#モーダル.コンテンツ{
    ボックスのサイズ: 境界線ボックス;
    幅: 100%;
    高さ: 100%;
    パディング: 45px 20px 20px;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
}

#モーダル #モーダル画像 {
    高さ: 100%;
}

#モーダル #閉じるアイコン {
    位置: 絶対;
    上: 10px;
    右: 10px;
    カーソル: ポインタ;
}

次に要素を取得し、クリックイベントをリッスンします

/* ...上記のコードを続けます*/
定数 showImg = document.getElementById('showImg');
定数 delImg = document.getElementById('delImg');
定数 modal = document.getElementById('modal');
modalImg は、 document.getElementById('modalImg') に格納されます。
closeIcon は、 document.getElementById('closeIcon') に格納されます。

// クリックして画像をプレビューします showImg.onclick = function () {
    modal.style.width = '100%';
    modal.style.height = '100%';
    modalImg.src = imgUrl;
}

// モーダルボックスを閉じる closeIcon.onclick = function () {
    モーダルスタイルの幅 = '0';
    modal.style.height = '0';
    modalImg.src = '';
}

// アップロードした画像を削除する delImg.onclick = function () {
    アップロード値 = '';
    画像URL = '';
    icon.style.display = 'ブロック';
    imgContainer.style.display = 'なし';
}

プレビュー効果画像

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JSは、写真をアップロードし、プレビュー写真機能を実現する3つの方法を実装します
  • アップロードした写真のプレビューを実現する js メソッド
  • アップロード画像プレビュー JS スクリプト 入力ファイル画像プレビュー実装例
  • WeChat JSSDK 写真をアップロード
  • js を使用して写真をアップロードし、アップロード前にプレビューします
  • js は、アップロードされた画像を貼り付けるための ctrl+v を実装します (Chrome、Firefox、IE11 と互換性があります)
  • Javascript はアップロードされた画像のサイズを検証します [クライアント側]
  • アップロードした写真をJSPで即時表示する機能を実現
  • JS が画像をアップロードする前の制限には、(jpg、jpg、gif、サイズ、高さ、幅) などがあります。
  • js アップロード画像プレビューの問題

<<:  VSCode と SSH を使用したリモート開発

>>:  MySQL 正規表現 (regexp と rlike) の検索機能の例分析

推薦する

node.js チュートリアルの Util モジュールの例の詳細な説明

目次タイプ判定から始める厳格な平等エラーファーストと約束デバッグと出力タイプ判定から始めるJavaS...

MySQL innodb_autoinc_lock_mode について

innodb_autoinc_lock_mode パラメータは、auto_increment 列を持...

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

MySQL最新バージョン8.0.17解凍版インストールチュートリアル

個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...

Node.jsとDenoの比較

目次序文Denoとは何ですか? Node.jsとの比較建築ESモジュール依存関係の管理TypeScr...

Linuxサーバー間のリアルタイムファイル同期の実現

使用シナリオ既存のサーバー A と B の場合、サーバー A の指定されたディレクトリ (たとえば、...

クリーンなXHTML構文

XHTML を書くには、明確な HTML 構文が必要です。 XHTMLを書くには、きれいなHTML構...

Linux で完全な Samba サーバーを構築する方法 (CentOS バージョン)

序文smb は、クライアントとサーバー間の Web 接続および情報通信に使用できるプロトコルの名前で...

js 配列 fill() 充填メソッド

目次1. fill() 構文2. fill() の使用3. まとめ序文:配列の初期化方法についてはよ...

フロントエンドの状態管理(パート2)

目次1. 再出発1.1. ストア(司書) 1.2. 状態(書籍) 1.3. アクション(図書貸出リス...

MySQLインスタンスクラッシュ事例の詳細な分析

[問題の説明]私たちの実稼働環境には、複数の MySQL サーバー (MySQL 5.6.21) の...

HTML でのフォームとフォーム送信操作に関する情報のコレクション

ここでは、フォーム要素とフォーム送信に関する知識を紹介します。フォーム要素フォーム要素の DOM イ...

JSデータ型検出のさまざまな方法の概要

目次背景データ型を決定する方法は何ですか? 1. typeof を使用して基本データ型を決定します。...

MySql 8.0.16-win64 インストール チュートリアル

1. ダウンロードしたファイルを以下のように解凍します。 。 2. 環境変数に解凍ディレクトリを追加...

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...