0

0

Angular2仿微信实现9张图片上传和预览实例分享

小云云

小云云

发布时间:2018-01-09 10:19:41

|

1978人浏览过

|

来源于php中文网

原创

本文主要介绍了angular2仿照微信ui实现9张图片上传和预览的示例代码,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。

这几天做得最久的是仿照微信UI做的图片上传/显示缩略图/预览/删除功能,要求图片1--9张。下面来记录下如何实现微信的图片预览/删除功能。

样式--weui.css

样式用的是微信官方ui,weui.min.css(生产环境下建议使用此压缩版)。

下载地址weui.css/weui.min.css。

样例--weui.io

微信官方自带了demo: weui.io。

主要步骤

在正式进入各个小功能的解说前,先上官方demo->weui.io查看图片上传组件的样式以及源代码。

官方ui显示如下,图片上传的ui在Uploader中。

图片上传的源码从审查元素中可获取,如下所示:


Uploader

上传组件,一般配合组件Gallery来使用。

图片上传

0/2

  • 50%

< img src="./images/icon_footer_link.png">

观察上面的代码,外层样式直接套用,核心功能块如下:

图片预览/删除部分:



图片缩略图列表部分:

有了上面的准备,下载就可以对功能进行实现了:

1. 图片缩略图显示

观察源码可知,每张图片的缩略图的代码结构如下:


  • 他将图片的url直接放到了background-img:url()属性中,样式直接使用微信的官方ui的class。因此,我们可以做这样操作:创建一个数组存picturesUrl放图片的url,用angular2的指令*ngFor根据数组中的内容动态生成缩略图列表(注意picturesUrl中元素的格式为:url(图片的url)):,图片url数组中的每个元素依次存进中间变量img中,然后使用angular2指令[ngStyle]根据img的值生成预览图,主要代码如下:


    在ts文件中定义图片数组并且给一定的模拟数据:

    GoEnhance
    GoEnhance

    全能AI视频制作平台:通过GoEnhance AI让视频创作变得比以往任何时候都更简单。

    下载


    picturesUrl = [
      'url(http://upload-images.jianshu.io/upload_images/7166236-40ed406c30ef20a0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1241240)',
      'url(http://upload-images.jianshu.io/upload_images/7166236-d79762ed654342bf.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1241240)',
      'url(http://upload-images.jianshu.io/upload_images/7166236-64e1a458e5e29d59.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1241240)',
      'url(http://upload-images.jianshu.io/upload_images/7166236-9a267a540acb8688.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1241240)',
      'url(http://upload-images.jianshu.io/upload_images/7166236-283f5687cb73eea8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1241240)',
     ]; //存储图片Url
     title = 'app';
     shown = false;  //是否显示预览,初始化为否
     selectImageUrl: string; //用于存放选中图片的url

    2. 图片预览显示与消失

    此处图片预览使用原生自带的方法,微信的做法应该是通过[ngStyle]来控制整个

    样式,而我采用了与生成缩略图相同的方法,用[ngStyle]指令以及*ngIf指令控制预览图的显示,然后在预览图的范围上绑定一个点击事件(click)="touchEvent()",用于监听用户的点击,实现点击退出预览的功能。主要代码如下:

    微信的做法(根据点击页面获取到的代码):


    
    
    
    
    

    我采用的做法:


    
    


    //点击缩略图显示预览
     showPicture($event){
      console.log("$event.target.backgroundImage:" + $event.target.style.backgroundImage);
      this.selectImageUrl = $event.target.style.backgroundImage;
      this.shown = true;
     }
    
    //点击屏幕退出预览
    touchEvent(){
      this.shown = false;
     }

    3. 图片删除

    图片删除的主要代码嵌套在图片预览的代码块中,只要为删除部分绑定一个点击事件((click)="onDelete()"),点击时出发删除并且退出预览即可。


    onDelete(){
      if(isUndefined(this.selectImageUrl)){
       console.log("查看图片预览,图片url未定义,this.selectImageUrl:" + this.selectImageUrl);
       return;
      }
     //正则去除URL中的双引号
      this.selectImageUrl = this.selectImageUrl.replace(/"/g,"");
      console.log("(this.picturesUrl.indexOf(this.selectImageUrl):"+this.picturesUrl.indexOf(this.selectImageUrl));
      //判断图片URL是否存在
      if(this.picturesUrl.indexOf(this.selectImageUrl)!== -1){
       this.picturesUrl.splice(this.picturesUrl.indexOf(this.selectImageUrl) , 1);
       setTimeout(()=>{
         this.shown = false;
        },
        20);
      }else{
       console.log("删除图片出错,获取URL或URL格式出错出错:" + this.selectImageUrl )
      }
     }

    效果如下:

    显示缩略图:

     

    显示预览:

     

    点击下面的删除栏:

    相关推荐:

    ajax实现异步文件或图片上传功能实例分享

    PHP利用iframe实现图片上传显示

    PHP实现微信小程序图片上传实例代码分享

    相关文章

    微信app下载
    微信app下载

    微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    c++ 根号
    c++ 根号

    本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

    69

    2026.01.23

    c++空格相关教程合集
    c++空格相关教程合集

    本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

    72

    2026.01.23

    yy漫画官方登录入口地址合集
    yy漫画官方登录入口地址合集

    本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

    297

    2026.01.23

    漫蛙最新入口地址汇总2026
    漫蛙最新入口地址汇总2026

    本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

    469

    2026.01.23

    C++ 高级模板编程与元编程
    C++ 高级模板编程与元编程

    本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

    17

    2026.01.23

    php远程文件教程合集
    php远程文件教程合集

    本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

    114

    2026.01.22

    PHP后端开发相关内容汇总
    PHP后端开发相关内容汇总

    本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

    77

    2026.01.22

    php会话教程合集
    php会话教程合集

    本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

    94

    2026.01.22

    宝塔PHP8.4相关教程汇总
    宝塔PHP8.4相关教程汇总

    本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

    74

    2026.01.22

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.8万人学习

    PHP入门速学(台湾同胞版)
    PHP入门速学(台湾同胞版)

    共10课时 | 1.2万人学习

    Linux网络安全之防火墙技术汇总
    Linux网络安全之防火墙技术汇总

    共31课时 | 3.1万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号