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文件中定义图片数组并且给一定的模拟数据:

    Bandy AI
    Bandy AI

    全球领先的电商设计Agent

    下载


    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

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    java入门学习合集
    java入门学习合集

    本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

    2

    2026.01.29

    java配置环境变量教程合集
    java配置环境变量教程合集

    本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

    2

    2026.01.29

    java成品学习网站推荐大全
    java成品学习网站推荐大全

    本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

    0

    2026.01.29

    Java字符串处理使用教程合集
    Java字符串处理使用教程合集

    本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

    0

    2026.01.29

    Java空对象相关教程合集
    Java空对象相关教程合集

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

    3

    2026.01.29

    clawdbot ai使用教程 保姆级clawdbot部署安装手册
    clawdbot ai使用教程 保姆级clawdbot部署安装手册

    Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

    25

    2026.01.29

    clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
    clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

    clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

    16

    2026.01.29

    Golang 网络安全与加密实战
    Golang 网络安全与加密实战

    本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

    8

    2026.01.29

    俄罗斯Yandex引擎入口
    俄罗斯Yandex引擎入口

    2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

    622

    2026.01.28

    热门下载

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

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    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号