自定义input上传图片组件,美化样式
前段时间因为项目需求,做过一个上传图片组件,这里分享下大致思路,希望对有需要的人有所帮助~~~
功能需求:1.上传图片限制大小、分辨率、类型
2.上传图片支持自由裁剪
3.图片上传后支持预览和删除
效果图,只截取了一小部分,大致看下就ok啦,是不是感觉比原生的好看多了^_^
项目是基于react框架写的,话不多说,开始撸代码~~~
Step1:编写基础html结构Step2:基础样式// uploadButton组件代码如下: const uploadButton = (); 上传照片
input-file {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.ant-upload {
@w: 100px;
width: @w;
height: @w;
padding: 5px;
background-color: #fafafa;
border: 1px dashed #d9d9d9;
border-radius: 4px;
display: block;
cursor: pointer;
position: relative;
}
.upload-plus-text {
width: 100%;
text-align: center;
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
i {
font-size: 28px;
color: #999;
}
.ant-upload-text {
margin-top: 8px;
font-size: 12px;
color: #666;
}
}
Step3:添加事件处理
对上传图片的类型、大小和分辨率进行检测
{
this.onFileChange(e);
}}
/>
代码较多就不展示了= =,使用的是react-cropper
Step5:预览和删除功能预览功能实现思路就是通过判断是否已经上传图片来展示不同的状态。未上传展示uploadButton组件,已上传就展示imagePreview组件。
通过判断是否已经上传图片来控制input标签的id属性值,未上传图id="file",已上传图片将id="",这样一来,再次去点击label的时候由于for属性找不到对应的id,就不会触发input上onChange事件
{ this.onFileChange(e); }} />// imagePreview组件代码如下 const imagePreview = ( ); // 预览图片 handlePreview() { this.setState({ showPreviewModal: true }); } // 删除图片 swapImageFile() { this.setState({ imageUrl: "" }); }
写在最后:项目涉及代码较多,文章只展示了大部分代码,一些具体细节代码可能就没有展示了,还望见谅,第一次写文章,可能比较混乱,有问题还望大家指出~~~ ^_^
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/51922.html
自定义input上传图片组件,美化样式 前段时间因为项目需求,做过一个上传图片组件,这里分享下大致思路,希望对有需要的人有所帮助~~~ 功能需求:1.上传图片限制大小、分辨率、类型 2.上传图片支持自由裁剪 3.图片上传后支持预览和删除 效果图,只截取了一小部分,大致看下就ok啦,是不是感觉比原生的好看多了^_^showImg(https://segment...
自定义input上传图片组件,美化样式 前段时间因为项目需求,做过一个上传图片组件,这里分享下大致思路,希望对有需要的人有所帮助~~~ 功能需求:1.上传图片限制大小、分辨率、类型 2.上传图片支持自由裁剪 3.图片上传后支持预览和删除 效果图,只截取了一小部分,大致看下就ok啦,是不是感觉比原生的好看多了^_^showImg(https://segment...
1. 安装依赖 npm i ngx-quill npm i quill ps:一定要安装 quill ,不然ngx-quill会报Cant resolve quill in xxxx, 因为ngx-quill内部引用了quill。 2. 使用 1. 引用 /* 在自己的`NgModule`的`imports`里面引用,我是在`RoutesModule`里引用的 */ import { Quil...
1. 安装依赖 npm i ngx-quill npm i quill ps:一定要安装 quill ,不然ngx-quill会报Cant resolve quill in xxxx, 因为ngx-quill内部引用了quill。 2. 使用 1. 引用 /* 在自己的`NgModule`的`imports`里面引用,我是在`RoutesModule`里引用的 */ import { Quil...
1. 安装依赖 npm i ngx-quill npm i quill ps:一定要安装 quill ,不然ngx-quill会报Cant resolve quill in xxxx, 因为ngx-quill内部引用了quill。 2. 使用 1. 引用 /* 在自己的`NgModule`的`imports`里面引用,我是在`RoutesModule`里引用的 */ import { Quil...
阅读 2514·2021-11-22 12:01
阅读 2406·2021-11-12 10:34
阅读 4808·2021-09-22 15:47
阅读 3066·2019-08-30 15:56
阅读 3033·2019-08-30 15:53
阅读 2588·2019-08-30 13:53
阅读 3592·2019-08-29 15:35
阅读 3302·2019-08-29 12:27