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

ブログ    

推薦する

MySQLサーバーが消えたエラーの解決策

PHP で MySQL サーバーが消えた問題1. 背景以前、Codeigniter でコンソール コ...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

Docker を使用した Laravel アプリケーションのデプロイ例

この記事で使用されているPHPベースイメージはphp:7.3-apacheです。この記事の Lara...

CSS3 でシンプルな白い雲が浮かぶ背景効果を実現

これは非常にシンプルな純粋な CSS3 の白い雲の浮遊する背景効果です。浮かぶ白い雲の特殊効果は、C...

画像をMySQLデータベースに保存し、フロントエンドページに表示するための実装コード

目次1. まず、pycharmを使用してDjangoプロジェクトを作成し、関連する環境を設定します。...

MySQL セキュリティ管理の詳細

目次1. 順番に紹介する2. ユーザーを作成する3. ユーザーアカウントを削除する4. アクセス権5...

MySQL 8.0.20 Window10無料インストール版設定とNavicat管理チュートリアルグラフィック詳細説明

1. MySQL 8.0.20をダウンロードして解凍するダウンロードリンク: https://dev...

MySQL のクエリパフォーマンスに対する制限の影響

I. はじめにまず、MySQL のバージョンについて説明します。 mysql> バージョンを選...

Linux環境でよく使われるMySQLコマンドの紹介

mysql コマンドを入力します: mysql -u+(ユーザー名) -p+(パスワード) mysq...

Vueデータ割り当て問題の解決

私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

nofollowタグの使用と分析に関する簡単な説明

nofollowをめぐる論争Zac と Guoping の間では、nofollow が PR を無駄...

スケルトン スクリーンの読み込みプレースホルダー アニメーション効果を実装するための CSS + HTML (アニメーション付き)

効果上から下へフェードアウト ソースコードhtml、Angular構文を使用して、必要な構文を取得す...

moment.jsの時間と日付の処理の詳細な説明

月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...