アップロード画像コントロールを実現するネイティブ 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) の検索機能の例分析

推薦する

vuex の補助関数 mapGetters の基本的な使い方の詳細な説明

mapGettersヘルパー関数mapGettersヘルパー関数は、ストア内のゲッターをローカルの計...

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

Linux での i3 ウィンドウ マネージャーの設定と使用に関するチュートリアル

この記事では、Fedora 28 に i3 をインストールして簡単に設定する方法を説明します。 1....

CSS3を使用してプログレスバー効果を実現し、動的にパーセンテージを追加する

プロジェクト中、プログレスバーを実装するために js の requestAnimationFrame...

LinuxでLVMディスクを拡張する詳細な手順

1.ハードディスクを追加する2. パーティションの状態を確認します: fdisk -l 3. パーテ...

Vue の下部ナビゲーション バー TabBar を実装するための非常に詳細なチュートリアル

目次プロジェクト紹介:プロジェクトディレクトリ: TabBar 効果のプレビュー: TabBar 実...

サブメニューをクリックする効果を実現するJavaScript

この記事では、クリック時にサブメニューを表示するためのJavaScriptの具体的なコードを参考まで...

CSS で垂直方向の中央揃えを実装するいくつかの方法の概要

フロントエンドのレイアウト プロセスでは、水平方向の中央揃えを実現するのは比較的簡単で、通常は ma...

Vue パッケージ化後の空白ページの解決策

1. vue-cli がプロジェクト パッケージを作成した後にページが空白になる問題の解決方法コマン...

JavaScript 配列重複排除問題の詳細な研究

目次序文 👀リサーチを始めましょう🐱‍🏍オリジナル🧶 indexOf を使用した元の方法の最適化 ✍...

CSS3 はアニメーション属性を使用してクールな効果を実現します (推奨)

animation-name アニメーション名。複数のアニメーションがバインドされていることを示す...

Vue は div の高さをドラッグ可能にします

この記事では、divのドラッグ可能な高さを実現するためのVueの具体的なコードを参考までに共有します...

Nginx リクエスト制限の設定方法

Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーで...

html5 の新しいメソッドを使用して JavaScript で要素クラス名を操作する方法の詳細な説明

目次1. classList属性2. 実用化以前の JavaScript では、最初にクラス属性を取...

MySQLインストール後のデフォルトデータベースの役割の詳細な説明

MySQL を学習すると、インストール後にいくつかのデフォルトのデータベースが付属していることに気付...