iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >原生js实现上传图片控件
  • 182
分享到

原生js实现上传图片控件

2024-04-02 19:04:59 182人浏览 泡泡鱼
摘要

本文实例为大家分享了js实现上传图片控件的具体代码,供大家参考,具体内容如下 一、修改原生 input 样式 html 结构 <div class="card">

本文实例为大家分享了js实现上传图片控件的具体代码,供大家参考,具体内容如下

一、修改原生 input 样式

html 结构


<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;
}

效果展示

二、上传图片并展示

监听 input 的 change 事件,图片上传成功后创建 URL


<script>
    const upload = document.getElementById('upload');
    const imgContainer = document.getElementById('imgContainer');
    const img = document.getElementById('img');
    const icon = document.getElementById('icon');

    let imgUrl = '';
    // 图片上传成功后创建 URL
    upload.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>

上传成功后展示

三、实现图片预览

写一个 modal 框


<!-- 预览图片的 modal 框 -->
<div id="modal">
    <span id="closeIcon">关闭</span>
    <div class="content">
        <img id="modalImg">
    </div>
</div>

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);
    
    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;
}

然后获取元素, 监听点击事件



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';
}

预览效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 原生js实现上传图片控件

本文链接: https://www.lsjlt.com/news/133128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 原生js实现上传图片控件
    本文实例为大家分享了js实现上传图片控件的具体代码,供大家参考,具体内容如下 一、修改原生 input 样式 html 结构 <div class="card"> ...
    99+
    2024-04-02
  • 原生JS实现文件上传
    本文实例为大家分享了JS实现文件上传的具体代码,供大家参考,具体内容如下 一、目的: 实现上传图片功能 二、效果: 三、思路: 用input标签自带的上传,先隐藏掉,给上传按钮添加...
    99+
    2024-04-02
  • 怎么用原生JS实现文件上传
    本篇内容主要讲解“怎么用原生JS实现文件上传”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用原生JS实现文件上传”吧!一、目的:实现上传图片功能二、效果:三、思路:用input标签自带的上传...
    99+
    2023-07-02
  • js实现上传图片功能
    前端上传图片的原理是:运用input type=“file”的标签获取图片,再使用FileReader这个对象 new 一个实例,通过这个对象的readAsDataURL()方法读取...
    99+
    2024-04-02
  • 原生JS实现图片轮播 JS实现小广告插件
    最近想用原生JS多实现一些小功能,现在写到博客里,大家可以借鉴,有问题欢迎指出。 轮播图 需求: 图片循环轮播,可点击左右切换,切换状态与<li>绑定,鼠标移入图片悬停,...
    99+
    2024-04-02
  • 原生ajax和iframe框架如何实现图片文件上传
    这篇文章主要为大家展示了“原生ajax和iframe框架如何实现图片文件上传”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“原生ajax和iframe框架如何实现...
    99+
    2024-04-02
  • js实现上传图片到服务器
    本文实例为大家分享了js实现上传图片到服务器的具体代码,供大家参考,具体内容如下 HTML //多张图片上传multiple <input type="file" id...
    99+
    2024-04-02
  • 原生javascript如何实现上传图片带进度条
    小编给大家分享一下原生javascript如何实现上传图片带进度条,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascri...
    99+
    2024-04-02
  • 如何利用原生JS实现图片预览加上传(前后端交互)
    目录前言效果大致如下前端代码后端代码总结前言 最近在写vue项目的时候发现了个Vant的一个upload的图片上传的组件,就好奇了一下下,于是萌生了一个自己手写一个图片上传的组件的想...
    99+
    2024-04-02
  • 原生JavaScript+PHP多图上传实现
    摘要 很多场景下需要选择多张图片上传,或者是批量上传以提高效率,多图上传的需求自然就比较多了,本文使用最简单的XMLHttpRequest异步上传图片。 界面 上传示例 代码 index.html...
    99+
    2023-10-06
    javascript php
  • Java实现图片文件上传
    Java实现后台图片上传,将上传图片的接口进行分层,便于维护接口。 接口部分(interface) 将接口分为单图片上传以及多图片上传 public interface FileUp...
    99+
    2024-04-02
  • 原生JS实现图片跑马灯特效
    今天给大家分享一个用原生JS实现的图片跑马灯特效,效果如下: 实现的代码如下,欢迎大家复制粘贴。 <!DOCTYPE html> <html> &l...
    99+
    2024-04-02
  • js实现上传图片到服务器的
    这篇文章主要介绍了js实现上传图片到服务器的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下HTML//多张图片上传multiple<input t...
    99+
    2023-06-14
  • 原生JS实现分页点击控件
    这是一个面试题,要求使用原生JS实现一个分页点击控件,供大家参考,具体内容如下 1、点击首页、上一页、下一页和末页要实现相应的数字编号变红。 2、在页数1 不能够点击首页和上一页。 ...
    99+
    2024-04-02
  • JS如何实现异步上传压缩图片
    小编给大家分享一下JS如何实现异步上传压缩图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先看调用页面:<!doctyp...
    99+
    2024-04-02
  • vue如何实现上传图片文件
    这篇文章给大家分享的是有关vue如何实现上传图片文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原始input标签form表单上传<input type="file"&nbs...
    99+
    2023-06-15
  • vue如何实现上传图片组件
    这篇文章给大家分享的是有关vue如何实现上传图片组件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。未上传状态上传状态其他状态(查看/删除)自定义组件文件名称 - 这里叫UploadImg.vue<templ...
    99+
    2023-06-25
  • JS如何实现上传图片实时预览功能
    这篇文章主要为大家展示了“JS如何实现上传图片实时预览功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现上传图片实时预览功能”这篇文章吧。前段时间在...
    99+
    2024-04-02
  • JS+HTML5如何实现上传图片预览效果
    这篇文章给大家分享的是有关JS+HTML5如何实现上传图片预览效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。示例代码如下:<!DOCTYPE HTML>...
    99+
    2024-04-02
  • vue+js实现微信上传图片选择功能
    本文实例为大家分享了vue+js实现微信上传图片选择的具体代码,供大家参考,具体内容如下 需求:实现微信发送图片或发朋友圈选择图片功能 可实现选后点击后 选择图片标记值自减或自增 最...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作