利用JavaScript的AngularJS库制作电子名片的方法


Posted in Javascript onJune 18, 2015

利用JavaScript的AngularJS库制作电子名片的方法

简介

在这个例子中,我引用了包括AngularJS在内的一些JavaScript库,实现了一个很简单的名片生成器。 尽管在这个小应用中,AngularJS库相较于其他JavaScript库来说做的事不多,然而,这个小而强大的AngularJS却是该应用的全部灵感之源。
背景

在该应用中,我们需要做些简单工作。首先,我们需要用CSS设计名片。然后,我们需要让用户实时的输入和编辑数据,这个地方AngularJS就不可或缺了。再然后,我们需要将名片的HTML div容器转化为canvas画布,并以PNG图片形式下载即可。就这么简单!

代码的使用

这里,我来解释下下面的代码块。

<!DOCTYPE html>
<html>
<head>
  <title>vCard Creator demo</title>
  <link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
 
<div id="wrapper" ng-app>
  <h1>Real time vCard Creator</h1>
<div id="editor">
  <input placeholder="Company name" ng-model="cname"/>
  <input placeholder="Company tag line" ng-model="tagline"/>
  <input placeholder="Your full name" ng-model="name"/>
  <input placeholder="Your designation" ng-model="desig"/>
  <input placeholder="Phone number" ng-model="phone"/>
  <input placeholder="Email address" ng-model="email"/>
  <input placeholder="Website url" ng-model="url"/>
  <button id="saveBut">Download vCard as PNG</button>
  
</div>
   
<div id="card">
  
  <header>
    <h4>{{cname}}</h4>
    <p>{{tagline}}</p>
  </header>
  <div id="theBody">
    <div id="theLeft">
      <h2>{{name}}</h2>
      <h5>{{desig}}</h5>
    </div>
    <div id="theRight">
      <p>{{phone}}</p>
      <p>{{email}}</p>
      <p>{{url}}</p>
    </div>
  </div>  
   
</div>
   
</div>
 
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="html2canvas.js"></script>
<script type="text/javascript" src="canvas2image.js"></script>
<script type="text/javascript" src="base64.com"></script>
 
</body>
</html>

这个是该应用的HTML结构。本结构包括了两部分。一个是id为editor的div,一个是id为card的div。前一个用于让用户输入信息,后一个的作用是用来在名片上显示信息。 这俩div又被一个id为wrapper的div给包裹起来。这个id为wrapper的div里面,我们会添加 ng-app属性,因为就是在这个div容器里,我们就要使用angular了。我们可以添加ng-app到HTML的标签里,这样一来,我们就能在该网页的任何地方使用angular了。 下一步,我们创建一些输入框来接收用户的输入信息。确保每个输入框都有ng-model 这么个属性,用于传递输入框里相应的值。我们把ng-model属性放在这里,主要是因为我们想要实时的更新id为card的div里的值。现在,在id为card的div内部,确保我们已经放置了一些卖相古怪的双括弧,并且在双括弧里我们放了来自ng-model的值。 基本上,我们在输入框中输入内容后,双括弧里的值立马就随之改变了。所以对名片的编辑到此结束。我们的目标是,当一个用户点击了下载按钮,当前的名片将被转化为一张图片,并被下载到用户电脑里。

#editor{
  width:350px;
  background: silver;
  margin:0 auto;
  margin-top:20px;
  padding-top:10px;
  padding-bottom:10px;
}
input{
  width:90%;
  margin-left:5px;
}
button{
  margin-left:5px;
}
#card{
  width:350px;
  height:200px;
  background:whitesmoke;
  box-shadow: 0 0 2px #323232;
  margin:0 auto;
  margin-top:20px;
}
header{
  background:#323232;
  padding:5px;
}
header h4{
  color:white;
  line-height:0;
  font-family:helvetica;
  margin:7px;
  margin-top:20px;
  text-shadow: 1px 1px black;
  text-transform:uppercase;
}
header p{
  line-height:0;
  color:silver;
  font-size:10px;
  margin:11px;
  margin-bottom:20px;
}
#theBody{
  background:blue;
  width:100%;
  height:auto;
}
#theLeft{
  width:50%;
  float:left;
  text-align:right;
}
#theLeft h2{
  margin-right:10px;
  margin-top:40px;
  font-family:helvetica;
  margin-bottom:0;
  color:#323232;
}
#theLeft h5{
  margin-right:10px;
  font-family:helvetica;
  margin-top:5px;
  line-height:0;
  font-weight: bold;
  color:#323232;
}
 
#theRight{
  width:50%;
  float:right;
  padding-top:42px;
}
#theRight p{
  line-height:0;
  font-size:12px;
  color:#323232;
  font-family:Calibri;
  margin-left:15px;
}

这是该应用的CSS样式。在这地方我们模拟了一个名片的设计,并创建了让用户输入信息的编辑面板。

 

<script>
  $(function() { 
   
  $("#saveBut").click(function() { 
     
    html2canvas($("#card"), {
       
      onrendered: function(canvas) {
         
        theCanvas = canvas;
 
        Canvas2Image.saveAsPNG(canvas); 
        
      }
    });
  });
}); 
</script>

最后,在HTML页面的body结束标签之前插入这段script脚本。这段脚本的包含了下载按钮对应的事件响应,也就是说 html2canvas 函数的作用是将id为card的div转化为HTML的canvas画布,并在对canvas画布完成渲染之后,以PNG文件的形式保存该canvas画布。添加完了这个script脚本之后,该做的就做完了。
注意事项

这个canvas2image.js脚本代码里默认没有在生成的文件名称结尾使用扩展名.png。所以如果你无法打开图片的时候,请重命名该文件名,在文件名结尾加上.png这个扩展名即可。
在线调试 jsFiddle

    点击这里

Javascript 相关文章推荐
Javascript 八进制转义字符(8进制)
Apr 08 Javascript
ajax的hide隐藏问题解决方法
Dec 11 Javascript
JS定时器实例
Apr 17 Javascript
jquery 操作iframe的几种方法总结
Dec 13 Javascript
javascript实现二级级联菜单的简单制作
Nov 19 Javascript
前端框架Vue.js构建大型应用浅析
Sep 12 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
Dec 23 Javascript
vue自定义过滤器创建和使用方法详解
Nov 06 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
微信公众号生成新浪短网址的实现(快速生成)
Aug 18 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
javascript实现根据时间段显示问候语的方法
Jun 18 #Javascript
javascript显示中文日期的方法
Jun 18 #Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
Jun 18 #Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 #Javascript
初步认识JavaScript函数库jQuery
Jun 18 #Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 #Javascript
浅谈Jquery核心函数
Jun 18 #Javascript
You might like
用PHP动态创建Flash动画
2006/10/09 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
js实现简易计算器功能
2019/10/18 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
python如何读写csv数据
2018/03/21 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
应届生服务员求职信
2013/10/31 职场文书
新学期开学标语
2014/06/30 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
先进班组事迹材料
2014/12/25 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
党支部半年考察意见
2015/06/01 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书