花了一周的时间完成了 说吧 (免费网页电话) 的前端开发工作,先将技术点总结如下:

免费电话采用最新的html5 webRTC 技术 实现互联网和电信MIS网互通实现网页电话,目前只有 google chrome 支持,如果你想实现免费电话拨打,测试地址:

https://www.10086china.com/index.html?id=OTkxMzA3MjUwODM3MzE5OQ==  (长链接,顺便赚点积分,目前只支持chrome浏览器哦,哈哈) 

1、  导航(主要采用纯CSS3 实现)


 DOM:

  1. <ul class="nav">
  2. <li><a class="current" href="index.html">首页</a></li>
  3. <li><a class="" href="features.html">功能介绍</a></li>
  4. <li class="hassubnav"><a class="" href="jifenactive.html">活动<span class="navicon"></span></a>
  5. <ul>
  6. <li><a href="###" class="messages">邀请达人</a></li>
  7. <li><a href="###" class="signout">签到达人</a></li>
  8. <li><a href="###" class="signout">游戏达人</a></li>
  9. </ul>
  10. </li>
  11. <li class="hassubnav"><a href="userinfo.html">个人中心<span class="navicon"></span></a>
  12. <ul>
  13. <li><a href="###" class="documents">我的积分</a></li>
  14. <li><a href="###" class="messages">积分兑换</a></li>
  15. <li><a href="###" class="signout">邀请记录</a></li>
  16. <li><a href="###" class="signout">签到奖励</a></li>
  17. </ul>
  18. </li>
  19. <li><a href="###">免费线路图</a></li>
  20. </ul>

 CSS (主要采用CSS3动画transition和伪类:after,:before)

  1.  
  1. .nav{ float:right; padding-top:53px;}
  2. .nav li {float: left;line-height: 40px;padding-left: 20px;position: relative;}
  3. .nav a {position: relative;color: #fff;font-size: 16px;height: 36px;line-height: 36px;display: inline-block;padding: 0 10px;border-radius: 15px;-moz-transition: 0.5s;-o-transition: 0.5s;- webkit-transition: 0.5s;transition: 0.5s;overflow: hidden;}
  4. .nav a span {position: relative;display: inline-block;-webkit-transition: -webkit-transform 0.3s;-moz-transition: -moz-transform 0.3s;transition: transform 0.3s;}
  5. .nav a span::before {position: absolute;top: 100%;content: attr(data-hover);-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);transform: translate3d(0,0,0);}
  6. .nav a:hover span, #header .nav a:focus span {-webkit-transform: translateY(-100%);-moz-transform: translateY(-100%);transform: translateY(-100%);}
  7. .nav li .navicon{ display:inline-block; width: 11px;height: 9px;background:url(../images/nav_icon_2.png) no-repeat left top; margin-left:5px; }
  8. .nav li.hassubnav a{ width:100px; text-align:center; display: inline-block;height: 38px;border-bottom-right-radius:;border-bottom-left-radius:; padding:;}
  9. .nav li.hassubnav a.current{ border-radius:15px; height:36px;}
  10. .nav li.hassubnav:hover a.current{ height: 38px;border-bottom-right-radius:;border-bottom-left-radius:;}
  11. .nav a.current, #header .nav a:hover, #header .nav li.hassubnav:hover a{ background-color:#004574;}
  12. .nav li.hassubnav:hover ul a{ background:none;}
  13. .nav ul {position: absolute;top: 40px;top: 38px\0;display: none\0;left: 20px;opacity:;background: #1f2024;-webkit-border-radius: 0 0 5px 5px;-moz-border-radius: 0 0 5px 5px;border-radius: 0 0 5px 5px;-webkit-transition: opacity .25s ease .1s;-moz-transition: opacity .25s ease .1s;-o-transition: opacity .25s ease .1s;-ms-transition: opacity .25s ease .1s;transition: opacity .25s ease .1s;width: 100px;z-index:;}
  14. .nav ul li{ clear:both;padding-left:; background:#004574;width: 100px; text-align:center; border-top:1px solid #00629b;height:;overflow: hidden;padding:;-webkit-transition: height .25s ease .1s;-moz-transition: height .25s ease .1s;-o-transition: height .25s ease .1s;-ms-transition: height .25s ease .1s;transition: height .25s ease .1s;}
  15. .nav ul li a{ background:none; border-radius:; font-size:14px; padding:;}
  16. .nav li:hover > ul{ opacity:;*display:block;display:block\0;}
  17. .nav li:hover > ul li{height: 36px;overflow: visible;padding:;line-height: 36px;}
  18. .nav ul li:hover{ background:#0384e1;}
  19. .nav ul li a:hover{ background:none;}
  1. 拨号盘功能:文本框只接受 数字,和手机号码检测,键盘按键和网页键盘对应
  1. <div class="usercallbox userboxcon">
  2. <div class="inpubox">
  3. <input id="dial_input" type="text" value="" />
  4. <span class="inputTips">输入手机号立即拨打</span>
  5. <a href="javascript:void(0);" class="delvalulebtn"></a> <a href="javascript:void(0);" id="contactsbtn" class="contactsbtn"></a>
  6. <div class="error_tips">请输入正确的手机号码!</div>
  7. </div>
  8. <div class="dialkey" id="dialkey">
  9. <a href="javascript:void(0);" class="key_97 key_49" data="1"><span class="one">1</span></a>
  10. <a href="javascript:void(0);" class="key_98 key_50" data="2"><span class="two">2</span></a>
  11. <a href="javascript:void(0);" class="key_99 key_51" data="3"><span class="three">3</span></a>
  12. <a href="javascript:void(0);" class="key_100 key_52" data="4"><span class="four">4</span></a>
  13. <a href="javascript:void(0);" class="key_101 key_53" data="5"><span class="five">5</span></a>
  14. <a href="javascript:void(0);" class="key_102 key_54" data="6"><span class="six">6</span></a>
  15. <a href="javascript:void(0);" class="key_103 key_55" data="7"><span class="seven">7</span></a>
  16. <a href="javascript:void(0);" class="key_104 key_56" data="8"><span class="eight">8</span></a>
  17. <a href="javascript:void(0);" class="key_105 key_57" data="9"><span class="nine">9</span></a>
  18. <a href="javascript:void(0);" class="key_96 key_48" data="0"><span class="zero">0</span></a>
  19. </div>
  20. <a href="javascript:void(0);" class="callbtn" id="callbtn"></a>
  21. </div>

 jquery插件

  1. $.fn.keywork = function (options) {
  2. var defaults = {
  3. keyTarget:$('#dialkey')
  4. },
  5. _this = $(this),
  6. deltag = _this.parent().find('.delvalulebtn'),
  7. tiptag = _this.parent().find('.inputTips'),
  8. params = $.extend(defaults, options || {});
  9. _this.unbind('keyup').bind('keyup', keyUphandle).unbind('keydown').bind('keydown', keyDownhandle).blur(function(){
  10. if('' == _this.val()) {
  11. deltag.hide();
  12. tiptag.show();
  13. }
  14. }).focus(function(){
  15. // tiptag.hide();
  16. });
  17. tiptag.click(function(){
  18. _this.focus();
  19. })
  20. deltag.click(function(){
  21. var val = _this.val();
  22. _this.focus().val(val.slice(0, val.length-1))
  23. if( val.length < 2) deltag.fadeOut();
  24. })
  25. function keyhandle(keyEvent, fun){
  26. var keycode = keyEvent.keyCode;
  27. switch (keycode) {
  28. case 48: // M:0
  29. case 49: // M:1
  30. case 50: // M:2
  31. case 52: // M:4
  32. case 53: // M:5
  33. case 54: // M:6
  34. case 55: // M:7
  35. case 57: // M:9
  36. case 96: // B:0
  37. case 97: // B:1
  38. case 98: // B:2
  39. case 99: // B:3
  40. case 100: // B:4
  41. case 101: // B:5
  42. case 102: // B:6
  43. case 103: // B:7
  44. case 104: // B:8
  45. case 105: // B:9
  46. case 51: // M:3
  47. case 56: // M:8
  48. fun(keycode);
  49. deltag.fadeIn();
  50. tiptag.hide();
  51. break
  52. }
  53. }
  54. function keyDownhandle(e) {
  55. var e = e || window.event;
  56. $(this).find('a').addClass('current');
  57. keyhandle(e, function(Digit){
  58. params.keyTarget.find('.key_'+Digit).addClass('current');
  59. })
  60. }
  61. function keyUphandle(e) {
  62. var e = e || window.event;
  63. var val = $(this).val();
  64. var keycode = e.keyCode;
  65. params.keyTarget.find('.key_'+keycode).removeClass('current');
  66. $(this).val(val.replace(/\D/g,''));
  67. $('.error_tips').hide();
  68. }
  69. params.keyTarget.find('a').click(function(){
  70. var digitV = $(this).attr('data');
  71. var val = _this.val();
  72. _this.focus().val(val + digitV);
  73. deltag.fadeIn()
  74. tiptag.hide();
  75. return false;
  76. });
  77. }
  78. $('#dial_input').keywork();

  后续还有一些技术点会总结出来,欢迎批评指正,谢谢。

  1.  

纯CSS3实现3D动画导航,html5 webRTC技术实现免费网页电话拨打的更多相关文章

  1. 纯css3实现的动画导航菜单

    测试咯 css3 前端特效代码 网页模板 图片素材 css3 前端特效代码 网页模板 图片素材 css3 前端特效代码 网页模板 图片素材 css3 前端特效代码 网页模板 图片素材 css3 前端特 ...

  2. 纯CSS3悬停图标旋转导航动画代码

    分享一款纯CSS3悬停图标旋转导航动画代码.这是一款鼠标移到图标上动画旋转显示导航菜单.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="x_con ...

  3. 一款纯css3实现的动画加载导航

    之前为大家介绍了好几款导航菜单,今天为给大家再带来一款纯css3实现的动画加载导航.该导航出现的时候以动画的形式出现.效果图如下: 在线预览   源码下载 实现的代码. html代码: <ul ...

  4. 8个纯CSS3制作的动画应用及源码

    对于一个复杂的图形或者动画来说,之前我们的处理方式是图片叠加或者利用CSS+JavaScript的方法,然而随着CSS3标准的不断成熟,我们甚至完全可以利用CSS3来绘制一些图片和制作丰富的动画特效. ...

  5. 纯css3实现的动画加载条

    之前大大家分享了很多款加载条.今天给大家带来一款纯css3实现的动画加载条. 这款加载条适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8 ...

  6. 纯css3实现的动画加载特效

    之前给大家带了很多款进度加载条,今天再给大家分享一款纯css3实现的动画加载特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="wrap& ...

  7. 一款纯css3实现的动画按钮

    今天给大家分享一款纯css3实现的动画按钮.第一排的按钮当鼠标经过的背景色动画切换,图标从右侧飞入,第二排的按钮当鼠标经过的时候边框动画切换,图标右侧飞入,效果非常好,一起看下效果图: 在线预览    ...

  8. 一款纯css3实现的环形导航菜单

    之前为大家介绍了好几款导航菜单,今天要给大家带来一款纯css3实现的环形导航菜单.该导航比较新鲜,列表图标位于中间,单击列表图标的时候,各项分布于列表图表的四周.形成一个环形.效果图如下: 在线预览  ...

  9. 纯css3加载动画

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name= ...

随机推荐

  1. delphi构造&析构调用顺序

    _ClassCreate ->Create ->AfterConstruction(->DoCreate / OnCreate) BeforeDestruction(->DoD ...

  2. Oracle中查看无效的对象、约束、触发器和索引

    .检查无效的数据库对象: SELECT owner, object_name, object_type,status FROM dba_objects WHERE status = 'INVALID' ...

  3. python爬虫-urllib模块

    urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...

  4. [terry笔记]RMAN综合学习之备份

    rman是最经济实惠的oracle备份工具,在这里做一个rman的整体学习. 文章中大多是rman命令的语法,还是最好做做实验,以便印象深刻,因为大多数数据库的备份就是按时跑脚本,恢复也不是经常能遇到 ...

  5. jQuery两句话实现HTML转义与反转义

    $('<div>').text('<a>').html() 结果:<a> $('<div>').html('<a>').text() 结果: ...

  6. arm 基本

    ARMr0-r4 传递参数与返回值r7 帧指针 指向母函数被调用子函数在栈看中的交界栈帧指针(Frame Pointer).指向前一个保存的栈帧(stack frame)和链接寄存器(link reg ...

  7. 自己写算法---java的堆的非递归遍历

    import java.io.*; import java.util.*; public class Main { public static void main(String args[]) { S ...

  8. makefile复习时发现的编写makefile规则注意事项

    博客中关于makefile的博文数不胜数,比较经典的都很相似,下面这一片,很全面,只是很长,可以作为参考资料:http://blog.csdn.net/liang13664759/article/de ...

  9. 【TOP10 APP】这些应用成了AppCan千人大会的焦点

    如何评价一款APP的好坏?首先,实用性.一款好的APP,首先要能为用户所用.然后是稳定流畅.闪退.卡顿,这样的APP用起来让人抓狂.再一个,界面美观.视觉主观性,在很大程度上会影响使用情况,毕竟没有人 ...

  10. jira插件带ui界面和几种方式

    http://localhost:2990/jira/plugins/servlet/issuecrud jira插件带ui界面和几种方式 https://developer.atlassian.co ...