利用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 相关文章推荐
js获取html文件的思路及示例
Sep 17 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 Javascript
利用js获取下拉框中所选的值
Dec 01 Javascript
jquery UI Datepicker时间控件冲突问题解决
Dec 16 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
vue实现评论列表功能
Oct 25 Javascript
原生js canvas实现鼠标跟随效果
Aug 02 Javascript
JavaScript实现H5接金币功能(实例代码)
Feb 22 Javascript
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程序--记数器
2006/10/09 PHP
PHP个人网站架设连环讲(一)
2006/10/09 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
php加密解密字符串示例
2016/10/13 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
政府信息公开实施方案
2014/05/09 职场文书
有关环保的标语
2014/06/13 职场文书
毕业证代领委托书
2014/09/26 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
房屋过户委托书范本
2014/10/07 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
2015年党性分析材料
2014/12/19 职场文书
写给医院的感谢信
2015/01/22 职场文书
新教师个人工作总结
2015/02/06 职场文书
技术员个人工作总结
2015/03/03 职场文书
婚宴新郎致辞
2015/07/28 职场文书