利用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 相关文章推荐
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
Node.js的Express框架使用上手指南
Mar 12 Javascript
js图片上传前预览功能(兼容所有浏览器)
Aug 24 Javascript
简单谈谈gulp-changed插件
Feb 21 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 Javascript
vue中使用vue-pdf的方法详解
Sep 05 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 防注入函数(格式化数据)
2011/08/08 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
学习ExtJS table布局
2009/10/08 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
python gdal安装与简单使用
2019/08/01 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
网吧七夕活动策划方案
2014/08/31 职场文书
社区党务工作总结2015
2015/05/19 职场文书
预备党员考察意见范文
2015/06/01 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python