日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript — 原生js实现上传图片控件

發(fā)布時間:2023/12/20 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript — 原生js实现上传图片控件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、修改原生 input 樣式

html 結(jié)構(gòu)

<div class="card"><input id="upload" type="file" accept=".jpg" /><div class="view"><!-- 上傳成功后 --><div id="imgContainer" class="img-container"><img id="img" /><!-- 鼠標移入展示 查看 與 刪除 操作 --><div class="img-mask"><span id="showImg">查看</span><span id="delImg">刪除</span></div></div><!-- 上傳成功前 --><span id="icon">+</span></div> </div>

css 樣式

.card {position: relative;width: 200px;height: 140px;padding: 5px;margin-right: 20px;border: 1px dashed #d9d9d9;border-radius: 6px;margin: 300px auto; }.card input {position: absolute;left: 0;top: 0;width: 100%;height: 100%;opacity: 0;cursor: pointer; }.card .view {width: 100%;height: 100%;display: flex;justify-content: center;align-items: center; }.card .view #icon {display: inline-block;font-size: 30px; }.card .view .img-container {position: absolute;left: 0;top: 0;width: 100%;height: 100%;display: none; }.img-container img {width: 100%;height: 100%; }.img-container .img-mask {position: absolute;left: 0;top: 0;width: 100%;height: 100%;opacity: 0;background: rgba(0, 0, 0, .3);transition: all .5s ease;display: flex;justify-content: center;align-items: center; }.img-container:hover .img-mask {opacity: 1; }.img-mask span {color: #fff;margin: 0 10px;cursor: pointer; }

效果展示

二、上傳圖片并展示

監(jiān)聽 input 的 change 事件,圖片上傳成功后創(chuàng)建 URL

<script>const upload = document.getElementById('upload');const imgContainer = document.getElementById('imgContainer');const img = document.getElementById('img');const icon = document.getElementById('icon');let imgUrl = '';// 圖片上傳成功后創(chuàng)建 URLupload.onchange = function (value) {const fileList = value.target.files;if (fileList.length) {imgContainer.style.display = 'block';icon.style.display = 'none';imgUrl = window.URL.createObjectURL(fileList[0]);img.src = imgUrl;}} <script>

上傳成功后展示

三、實現(xiàn)圖片預覽

寫一個 modal 框

<!-- 預覽圖片的 modal 框 --> <div id="modal"><span id="closeIcon">關閉</span><div class="content"><img id="modalImg"></div> </div>

modal 樣式

/* modal 樣式 */ #modal {position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 0;height: 0;box-shadow: 0 0 10px #d9d9d9;background: rgba(0, 0, 0, .3);/* transition: all .1s ease-in-out; */overflow: hidden; }#modal .content {box-sizing: border-box;width: 100%;height: 100%;padding: 45px 20px 20px;display: flex;justify-content: center; }#modal #modalImg {height: 100%; }#modal #closeIcon {position: absolute;top: 10px;right: 10px;cursor: pointer; }

然后獲取元素, 監(jiān)聽點擊事件

/* ...接以上代碼 */ const showImg = document.getElementById('showImg'); const delImg = document.getElementById('delImg'); const modal = document.getElementById('modal'); const modalImg = document.getElementById('modalImg'); const closeIcon = document.getElementById('closeIcon');// 點擊預覽圖片 showImg.onclick = function () {modal.style.width = '100%';modal.style.height = '100%';modalImg.src = imgUrl; }// 關閉 modal 框 closeIcon.onclick = function () {modal.style.width = '0';modal.style.height = '0';modalImg.src = ''; }// 刪除上傳的圖片 delImg.onclick = function () {upload.value = '';imgUrl = '';icon.style.display = 'block';imgContainer.style.display = 'none'; }

預覽效果圖

總結(jié)

以上是生活随笔為你收集整理的JavaScript — 原生js实现上传图片控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。