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

推薦する

Tomcat のパフォーマンス最適化方法の簡単な概要

Tomcat自体の最適化Tomcat メモリ最適化起動時に大きなメモリ ブロックが必要であることを ...

3 階層ナビゲーション メニューを実現するための js+css

この記事の例では、3レベルのナビゲーションメニューを実装するためのjs + cssの具体的なコードを...

Vueは下部のポップアップウィンドウで複数選択を実装します

この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...

純粋な HTML タグにどれくらい精通していますか?

以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...

JavaScript の基本演算子

目次1. オペレーター要約する1. オペレーター演算子は、代入、比較、算術演算などの機能を実装するた...

WeChatアプレットがユーザーの移動軌跡を記録

目次設定を追加json 構成レイヤー構成の表示論理層の構成位置追跡をオンにする録音を開始開始座標を決...

CSSアニメーション効果アニメーションの一般的なスタイル

アニメーションアニメーションを定義します。 /*アニメーションの各ステップで実行されるアクションを定...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...

Vue ファースト スクリーン パフォーマンス最適化コンポーネントの知識ポイントの概要

Vue ファースト スクリーン パフォーマンス最適化コンポーネントVue ファースト スクリーン パ...

Nginx の負荷分散構成、ダウンタイム発生時の自動切り替えモード

厳密に言えば、nginx には負荷分散バックエンド ノードのヘルス チェック機能はありませんが、デフ...

::before/:before と ::after/:after の使用に関する深い理解

パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...

Webフロントエンド開発におけるエラーを見つけるための基本的な考え方

WEB開発は主に2つのインタラクション(B/Sデータ)から構成されますブラウザ: 1html、css...

PHP スケジュールバックアップ MySQL および mysqldump 構文パラメータの詳細

まず、MySQL バックアップ コマンド mysqldump の一般的な操作例をいくつか紹介します。...

MySQL操作テーブルでよく使われるSQLのまとめ

1. テーブル内のフィールドの種類を表示する テーブル名を記述する desc テーブル名 2. テー...

MySQLクエリ最適化: 100万件のデータに対するテーブル最適化ソリューション

1. 2つのクエリエンジン(myIsamエンジン)のクエリ速度InnoDB はテーブル内の特定の行数...