因须要 要实现一个类似彩票走势图的功能,初次学Html5 ,非常多地方不明白,前段时间也发帖请教过这个问题。也是没给个明白说话,在网上搜了非常多,也没有实现的样例,今天细致研究了下。发现事实上也不是非常难,现将代码贴出来。共同学习!

先来一张效果图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXBjMDA3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

实现的代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="js/jquery-1.10.2.js"></script>
<style>
table { border: 0; margin: 0; border-collapse: collapse; border-spacing: 0; font-size: 11px; font-family: Arial; margin: 0 auto; }
table td, table th { padding: 0; border: 1px solid #d8d8d8; height: 23px; width: 23px; text-align: center; color: #666; }
table th { font-weight: bold; color: #000; }
</style>
<script type="text/javascript">
$(function () {
CreateTable();
var ids = "";
for (var i = 1; i < 31; i++) {
ids+= "T" + i + "_" + Math.floor(1 + Math.random() * (31 - 1)) + ",";
}
ids = ids.substring(0, ids.length - 1);
CreateLine(ids, 20, "#ff6600", "canvasdiv", "#d5d5d5");
});
function CreateTable() {
var tbody = "";
var head = "<tr>";
for (var i = 1; i < 31; i++) {
head += "<th>H" + i + "</th>";
tbody += "<tr>";
for (var j = 1; j < 31; j++) {
tbody += "<td id='T" + i + "_" + j + "'>" + j + "</td>";
}
tbody += "</tr>";
}
head += "</tr>";
$("#zstable thead").html(head);
$("#zstable tbody").html(tbody);
} function CreateLine(ids, w, c, div, bg) {
var list = ids.split(",");
for (var j = list.length - 1; j > 0; j--) {
var tid = $("#" + list[j]);
var fid = $("#" + list[j - 1]);
var f_width = fid.outerWidth();
var f_height = fid.outerHeight();
var f_offset = fid.offset();
var f_top = f_offset.top;
var f_left = f_offset.left;
var t_offset = tid.offset();
var t_top = t_offset.top;
var t_left = t_offset.left;
var cvs_left = Math.min(f_left, t_left);
var cvs_top = Math.min(f_top, t_top);
tid.css("background", bg).css("color", "red");
fid.css("background", bg).css("color", "red");
var cvs = document.createElement("canvas");
cvs.width = Math.abs(f_left - t_left) < w ? w : Math.abs(f_left - t_left);
cvs.height = Math.abs(f_top - t_top);
cvs.style.top = cvs_top + parseInt(f_height / 2) + "px";
cvs.style.left = cvs_left + parseInt(f_width / 2) + "px";
cvs.style.position = "absolute";
var cxt = cvs.getContext("2d");
cxt.save();
cxt.strokeStyle = c;
cxt.lineWidth = 1;
cxt.lineJoin = "round";
cxt.beginPath();
cxt.moveTo(f_left - cvs_left, f_top - cvs_top);
cxt.lineTo(t_left - cvs_left, t_top - cvs_top);
cxt.closePath();
cxt.stroke();
cxt.restore();
$("#" + div).append(cvs);
}
} </script>
</head>
<body>
<form id="form1" runat="server">
<table id="zstable">
<thead></thead>
<tbody></tbody>
</table>
<div id="canvasdiv">
</div>
</form>
</body>
</html>

最新文章

  1. C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用
  2. 关于学习YYKit的记录
  3. windows系统调用 临界区机制
  4. angular语法:Controller As
  5. 使用Zen coding高效编写html代码
  6. HDU4871 Shortest-path tree(树分治)
  7. js鼠标及对象坐标控制属性详细解析
  8. c#解析xml字符串 分析 EntityName 时出错
  9. Java实现应用程序记住用户名、密码功能
  10. springboot项目利用Swagger2生成在线接口文档
  11. 一条很用的MSSQL语句
  12. es集群数据库~原理细节
  13. JavaScript从入门到精通(附光盘1张):作者:明日科技出版社:清华大学出版社出版时间:2012年09月
  14. [UWP 自定义控件]了解模板化控件(7):支持Command
  15. Ubuntu16.04+CUDA8.0+cudnn6
  16. Windows下如何更新 node.js
  17. golang常用模块介绍
  18. 20145205武钰_Exp5 MSF基础应用
  19. 小冷-wireshark的标志位的值是啥
  20. 编写Avocado测试

热门文章

  1. JavaScript 作用域和闭包——另一个角度:扩展你对作用域和闭包的认识【翻译+整理】
  2. @TargetAPI + 版本判断实现高低API版本兼容
  3. SpringMVC框架使用注解执行定时任务(转)
  4. 我的webrequest经验
  5. 神器phpstorm功能具体解释
  6. 另一鲜为人知的单例写法-ThreadLocal
  7. Selenium Page object Pattern usage
  8. Solidworks 2016中导出URDF文件
  9. ROS中利用V-rep进行地图构建仿真
  10. __set() __get() _isset() __unset() 在__unset() 在类中没有事先声明和已经声明过的属性调用unset的区别