当前位置:   article > 正文

HTML+JS好例子集锦_html js实例

html js实例

HTML+JS好例子集锦

一些HTML+JavaScript好例子,有些例子照网络资料,包括: HTML+JS限时小学数学出题、打开对话框选择本地文件、 简单画布画板、 俄罗斯方块游戏、 落英纷飞动画 、随机点名器的示例、生成二维码等。从中感受HTML+JavaScript可以实现功能的强大。

基础知识参见  HTML5+CSS入门与提高学习系列 https://blog.csdn.net/cnds123/article/details/113860164
JavaScript入门与提高学习讲座系列文章 https://blog.csdn.net/cnds123/article/details/110119640

一、HTML+JS限时小学数学出题

先给出效果演示图:

源码如下:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>简单的出题计算</title>
  6. <style type="text/css">
  7. body{font-family:Dunkin,"开心软件甜蜜蜜简体","Segoe","Segoe UI","微软雅黑",sans-serif;font-size:30px;background-color:#fff}
  8. input,button{font-family:Dunkin,"开心软件甜蜜蜜简体","Segoe","Segoe UI","微软雅黑",sans-serif;font-size:20px}
  9. .title{width:100%;height:100%;position:absolute;left:0;top:0;background-color:#fff;z-index:3;}
  10. #ti{font-family:Dunkin,"Segoe","Segoe UI",sans-serif;font-size:50px;background-color:#fff}
  11. </style>
  12. </head>
  13. <body>
  14. <div class="title" id="title">
  15. <br><br><h3 align="center">简单的小学数学随机出题,限时</h3>
  16. <center><input type="button" value="开始答题" onclick="$('title').style.display='none';dati()"></center>
  17. </div>
  18. <center>
  19. <br>
  20. <h2 id="ti">17+12</h2><br>
  21. <input type="text" id="texts"><br><br>
  22. <input type="button" value="判断" onclick="ok()">
  23. <input type="button" value="清除" onclick="cls()">
  24. <br><br>
  25. 答对<span id="att1">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打错<span id="att2">0</span><br><span id="att3">60</span>
  26. </center>
  27. <script>
  28. function $(i){
  29. return document.getElementById(i)
  30. }
  31. function rand(min,max){return Math.round(Math.random()*(max-min)+min)}
  32. var dui=0,cuo=0,time=60,fu1=0,fu2=0,add=0,pd=29;
  33. function dati(){
  34. dui=0;cuo=0;time=60
  35. $("att1").innerHTML="0"
  36. $("att2").innerHTML="0"
  37. $("att3").innerHTML="倒计时:60"
  38. var art=setInterval(function(){
  39. time--
  40. $("att3").innerHTML="倒计时:" + time
  41. if(time<=0){alert("时间到");$('title').style.display='';clearInterval(art)}
  42. },1000)
  43. document.getElementById("texts").focus(); //文本框获取焦点
  44. tis()
  45. }
  46. function tis(){
  47. fu1=rand(5,100);fu2=rand(5,100);add=rand(0,1)
  48. if(fu2>fu1){add=0}
  49. if(add==0){pd=fu1+fu2}
  50. if(add==1){pd=fu1-fu2}
  51. $("ti").innerHTML=fu1+""+["+","-"][add]+""+fu2
  52. }
  53. function ok(){
  54. if($("texts").value==pd){dui++;$("att1").innerHTML=dui}else{cuo++;$("att2").innerHTML=cuo}
  55. tis()
  56. }
  57. function cls(){
  58. document.getElementById("texts").value = ""; //清空文本框
  59. document.getElementById("texts").focus(); //文本框获取焦点
  60. }
  61. </script>
  62. </body>
  63. </html>

二、打开对话框选择本地文件

先给出效果演示图:

源码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <script>
  9. function show()
  10. {
  11. var reader = new FileReader();
  12. reader.onload = function()
  13. {
  14. //document.body.innerText = this.result;
  15. //alert(this.result)
  16. document.getElementById("content1").value = this.result; //将文本文件的内容读入textarea中
  17. }
  18. var f = document.getElementById("filePicker").files[0];
  19. reader.readAsText(f);
  20. }
  21. </script>
  22. <input type="file" name="file" id="filePicker"/>
  23. <br>
  24. <input type="button" value = "显示" onclick="show()"/>
  25. <br>
  26. <textarea id="content1" cols="50" rows="10">显示区</textarea>
  27. </body>
  28. </html>

三、 简单画布画板

先给出效果演示图:

 可以按着鼠标左键绘图写字,可以保存绘图。

源码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>canvas绘图板</title>
  6. <style>
  7. canvas{
  8. border:1px dashed black;}
  9. </style>
  10. <script type="text/javascript">
  11. var canvas;
  12. var context;
  13. window.onload=function(){
  14. canvas=document.getElementById("drawingCanvas");
  15. context=canvas.getContext("2d");
  16. context.fillStyle="rgb(255,255,255)";
  17. context.fillRect(0,0,canvas.width,canvas.height);
  18. context.strokeStyle="rgb(0,0,0)";
  19. context.lineWidth=5;
  20. canvas.onmousedown=startDrawing;
  21. canvas.onmouseup=stopDrawing;
  22. canvas.onmouseout=stopDrawing;
  23. canvas.onmousemove=draw;
  24. }
  25. var previousColorElement;
  26. function changeColor(color,imgElement){
  27. context.strokeStyle=color;
  28. imgElement.className="Selected";
  29. if(previousColorElement!=null){
  30. previousColoeElement.className="";
  31. }
  32. previousColorElement=imgElement;
  33. }
  34. var previousThicknessElement;
  35. function changeThickness(thickness,imgElement){
  36. context.lineWidth=thickness;
  37. imgElement.className="Selected";
  38. if(previousThicknessElement!=null){
  39. previousThicknessElement.className="";
  40. }
  41. previousThicknessElement=imgElement;
  42. }
  43. var isDrawing=false;
  44. function startDrawing(e){
  45. isDrawing=true;
  46. context.beginPath();
  47. context.moveTo(e.pageX-canvas.offsetLeft,e.pageY-canvas.offsetTop);
  48. }
  49. function draw(e){
  50. if(isDrawing==true){
  51. var x=e.pageX-canvas.offsetLeft;
  52. var y=e.pageY-canvas.offsetTop;
  53. context.lineTo(x,y);
  54. context.stroke();
  55. }
  56. }
  57. function stopDrawing(){
  58. isDrawing=false;
  59. }
  60. function clearCanvas(){
  61. context.fillStyle="rgb(255,255,255)";
  62. context.fillRect(0,0,canvas.width,canvas.height);
  63. }
  64. //canvas保存图片为png格式并下载到本地
  65. function exportCanvasAsPNG(canvas_id, fileName) {
  66. var canvasElement = document.getElementById(canvas_id);
  67. var MIME_TYPE = "image/png";
  68. var imgURL = canvasElement.toDataURL(MIME_TYPE);
  69. var dlLink = document.createElement('a');
  70. dlLink.download = fileName;
  71. dlLink.href = imgURL;
  72. dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':');
  73. document.body.appendChild(dlLink);
  74. dlLink.click();
  75. document.body.removeChild(dlLink);
  76. }
  77. </script>
  78. </head>
  79. <body>
  80. <div align="center">
  81. COLOR<input type="color" id="colorSelect" onchange="changeColor(colorSelect.value,this);" value="rgb(255,255,255)"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  82. WIDTH<input type="range" id="widthSelect" onchange="context.lineWidth=widthSelect.value;" min="1" max="20" value="5"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  83. <button id="clearCanvas" onclick="clearCanvas();">CLEAR ALL</button>
  84. <button onclick="exportCanvasAsPNG('drawingCanvas','nianling')">SAVE</button>
  85. <br/>
  86. <canvas id="drawingCanvas" width="800" height="400"></canvas>
  87. </div>
  88. </body>
  89. </html>

四、 俄罗斯方块游戏

先给出效果演示图:

可以赢键盘上的箭头键移动或旋转方块

源码如下:

  1. <!doctype html>
  2. <HTML>
  3. <HEAD>
  4. <title>Tetris</title>
  5. <script>window.resizeTo(410,450)</script>
  6. <style>
  7. <!--
  8. .MB
  9. {
  10. BACKGROUND-COLOR: firebrick;
  11. CURSOR: default;
  12. HEIGHT: 22px;
  13. WIDTH: 22px
  14. }
  15. .SB
  16. {
  17. BACKGROUND-COLOR: slategray;
  18. CURSOR: default;
  19. HEIGHT: 22px;
  20. WIDTH: 22px
  21. }
  22. .BK
  23. {
  24. BACKGROUND-COLOR: white;
  25. CURSOR: default;
  26. HEIGHT: 22px;
  27. WIDTH: 22px
  28. }
  29. .GT
  30. {
  31. BORDER-BOTTOM: deepskyblue thin solid;
  32. BORDER-LEFT: deepskyblue thin solid;
  33. BORDER-RIGHT: deepskyblue thin solid;
  34. BORDER-TOP: deepskyblue thin solid;
  35. CURSOR: default
  36. }
  37. -->
  38. </style>
  39. <script>
  40. <!--
  41. var BX=new Array(4);
  42. var BY=new Array(4);
  43. var PX=new Array(4);
  44. var PY=new Array(4);
  45. var mTimer
  46. var firstView
  47. var gameState = 0;
  48. function beginGame()
  49. {
  50. gameState=0;
  51. speed=1;
  52. outTime=1100-speed*100;
  53. score=0;
  54. if(gameState!=0)return;
  55. firstView=true;
  56. for(j=0;j<16;j++)
  57. for(i=0;i<10;i++)
  58. setClass(i,j,"BK");
  59. randBar();
  60. gameState=1;
  61. Play.disabled=true;
  62. window.clearInterval(mTimer);
  63. mTimer=window.setInterval("moveBar()",outTime);
  64. }
  65. function keyControl()
  66. {
  67. if(gameState!=1)return;
  68. switch(event.keyCode){
  69. case 37:{ //left
  70. for(i=0;i<4;i++)if(BX[i]==0)return;
  71. for(i=0;i<4;i++)if(getClass(BX[i]-1,BY[i])=="SB")return;
  72. for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK");
  73. for(i=0;i<4;i++)BX[i]=BX[i]-1;
  74. for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB");
  75. break;}
  76. case 38:{ //up
  77. var preMBarX=new Array(4);
  78. var preMBarY=new Array(4);
  79. var cx=Math.round((BX[0]+BX[1]+BX[2]+BX[3])/4);
  80. var cy=Math.round((BY[0]+BY[1]+BY[2]+BY[3])/4);
  81. for(i=0;i<4;i++){
  82. preMBarX[i]=Math.round(cx-cy+BY[i]);
  83. preMBarY[i]=Math.round(cx+cy-BX[i]);
  84. if(preMBarX[i]<0 || preMBarX[i]>9 || preMBarY[i]<0 || preMBarY[i]>15)return;
  85. if(getClass(preMBarX[i],preMBarY[i])=="SB")return;
  86. }
  87. for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK");
  88. for(i=0;i<4;i++){
  89. BX[i]=preMBarX[i];
  90. BY[i]=preMBarY[i];
  91. }
  92. for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB");
  93. break;}
  94. case 39:{ //right
  95. for(i=0;i<4;i++)if(BX[i]==9)return;
  96. for(i=0;i<4;i++)if(getClass(BX[i]+1,BY[i])=="SB")return;
  97. for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK");
  98. for(i=0;i<4;i++)BX[i]=BX[i]+1;
  99. for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB");
  100. break;}
  101. case 40:{ //down
  102. moveBar();
  103. break;}
  104. }
  105. }
  106. function delLine()
  107. {
  108. for(i=0;i<4;i++)setClass(BX[i],BY[i],"SB");
  109. for(j=0;j<16;j++){
  110. dLine=true;
  111. for(i=0;i<10;i++){
  112. if(getClass(i,j)!="SB"){
  113. dLine=false;
  114. break;
  115. }
  116. }
  117. if(dLine){
  118. score=score+100;
  119. for(k=j;k>0;k--)
  120. for(l=0;l<10;l++)
  121. setClass(l,k,getClass(l,k-1));
  122. for(l=0;l<10;l++)setClass(l,0,"BK");
  123. }
  124. }
  125. randBar();
  126. speed=Math.floor(score/3000)+1;
  127. outTime=1100-speed*100;
  128. scoreBar.innerHTML="Score : " + score;
  129. speedBar.innerHTML="Speed : " + speed;
  130. window.clearInterval(mTimer);
  131. mTimer=window.setInterval("moveBar()",outTime);
  132. }
  133. function getClass(x,y){return GameBar.children[y].children[x].className;}
  134. function setClass(x,y,cName){GameBar.children[y].children[x].className=cName;}
  135. function moveBar()
  136. {
  137. if(gameState!=1)return;
  138. dropLine=true;
  139. for(i=0;i<4;i++)if(BY[i]==15)dropLine=false;
  140. if(dropLine)for(i=0;i<4;i++)if(getClass(BX[i],BY[i]+1)=="SB")dropLine=false;
  141. if(!dropLine){
  142. window.clearInterval(mTimer);
  143. delLine();
  144. return;
  145. }
  146. for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK");
  147. for(i=0;i<4;i++)BY[i]=BY[i]+1;
  148. for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB");
  149. }
  150. function pauseGame()
  151. {
  152. if(gameState==0)return;
  153. if(event.srcElement.value=="Pause"){
  154. gameState=2;
  155. event.srcElement.value="Continue";
  156. window.clearInterval(mTimer);
  157. }
  158. else{
  159. gameState=1;
  160. event.srcElement.value="Pause";
  161. mTimer=window.setInterval("moveBar()",outTime);
  162. }
  163. }
  164. function fMnu(){return false;}
  165. document.oncontextmenu=fMnu;
  166. function preview()
  167. {
  168. if(previewWnd.style.display!="none")
  169. previewWnd.style.display="none";
  170. else
  171. previewWnd.style.display="block";
  172. }
  173. function replayGame()
  174. {
  175. if(gameState!=1)return;
  176. if(!confirm("Really want to re-start the game?"))return;
  177. gameState=0;
  178. window.clearInterval(mTimer);
  179. beginGame();
  180. }
  181. function randBar()
  182. {
  183. randNum=Math.floor(Math.random()*20)+1;
  184. if(!firstView)
  185. for(i=0;i<4;i++){
  186. BX[i]=PX[i];
  187. BY[i]=PY[i];
  188. }
  189. switch(randNum){
  190. case 1:{
  191. PX[0]=4;
  192. PY[0]=0;
  193. PX[1]=4;
  194. PY[1]=1;
  195. PX[2]=5;
  196. PY[2]=1;
  197. PX[3]=6;
  198. PY[3]=1;
  199. break;}
  200. case 2:{
  201. PX[0]=4;
  202. PY[0]=0;
  203. PX[1]=5;
  204. PY[1]=0;
  205. PX[2]=4;
  206. PY[2]=1;
  207. PX[3]=4;
  208. PY[3]=2;
  209. break;}
  210. case 3:{
  211. PX[0]=4;
  212. PY[0]=0;
  213. PX[1]=5;
  214. PY[1]=0;
  215. PX[2]=6;
  216. PY[2]=0;
  217. PX[3]=6;
  218. PY[3]=1;
  219. break;}
  220. case 4:{
  221. PX[0]=5;
  222. PY[0]=0;
  223. PX[1]=5;
  224. PY[1]=1;
  225. PX[2]=5;
  226. PY[2]=2;
  227. PX[3]=4;
  228. PY[3]=2;
  229. break;}
  230. case 5:{
  231. PX[0]=6;
  232. PY[0]=0;
  233. PX[1]=6;
  234. PY[1]=1;
  235. PX[2]=4;
  236. PY[2]=1;
  237. PX[3]=5;
  238. PY[3]=1;
  239. break;}
  240. case 6:{
  241. PX[0]=4;
  242. PY[0]=0;
  243. PX[1]=4;
  244. PY[1]=1;
  245. PX[2]=4;
  246. PY[2]=2;
  247. PX[3]=5;
  248. PY[3]=2;
  249. break;}
  250. case 7:{
  251. PX[0]=4;
  252. PY[0]=0;
  253. PX[1]=4;
  254. PY[1]=1;
  255. PX[2]=5;
  256. PY[2]=0;
  257. PX[3]=6;
  258. PY[3]=0;
  259. break;}
  260. case 8:{
  261. PX[0]=4;
  262. PY[0]=0;
  263. PX[1]=5;
  264. PY[1]=0;
  265. PX[2]=5;
  266. PY[2]=1;
  267. PX[3]=5;
  268. PY[3]=2;
  269. break;}
  270. case 9:{
  271. PX[0]=4;
  272. PY[0]=0;
  273. PX[1]=5;
  274. PY[1]=0;
  275. PX[2]=5;
  276. PY[2]=1;
  277. PX[3]=6;
  278. PY[3]=1;
  279. break;}
  280. case 10:{
  281. PX[0]=5;
  282. PY[0]=0;
  283. PX[1]=5;
  284. PY[1]=1;
  285. PX[2]=4;
  286. PY[2]=1;
  287. PX[3]=4;
  288. PY[3]=2;
  289. break;}
  290. case 11:{
  291. PX[0]=4;
  292. PY[0]=1;
  293. PX[1]=5;
  294. PY[1]=1;
  295. PX[2]=5;
  296. PY[2]=0;
  297. PX[3]=6;
  298. PY[3]=0;
  299. break;}
  300. case 12:{
  301. PX[0]=4;
  302. PY[0]=0;
  303. PX[1]=4;
  304. PY[1]=1;
  305. PX[2]=5;
  306. PY[2]=1;
  307. PX[3]=5;
  308. PY[3]=2;
  309. break;}
  310. case 13:{
  311. PX[0]=4;
  312. PY[0]=0;
  313. PX[1]=5;
  314. PY[1]=0;
  315. PX[2]=6;
  316. PY[2]=0;
  317. PX[3]=5;
  318. PY[3]=1;
  319. break;}
  320. case 14:{
  321. PX[0]=4;
  322. PY[0]=0;
  323. PX[1]=4;
  324. PY[1]=1;
  325. PX[2]=4;
  326. PY[2]=2;
  327. PX[3]=5;
  328. PY[3]=1;
  329. break;}
  330. case 15:{
  331. PX[0]=5;
  332. PY[0]=0;
  333. PX[1]=5;
  334. PY[1]=1;
  335. PX[2]=4;
  336. PY[2]=1;
  337. PX[3]=6;
  338. PY[3]=1;
  339. break;}
  340. case 16:{
  341. PX[0]=5;
  342. PY[0]=0;
  343. PX[1]=5;
  344. PY[1]=1;
  345. PX[2]=5;
  346. PY[2]=2;
  347. PX[3]=4;
  348. PY[3]=1;
  349. break;}
  350. case 17:{
  351. PX[0]=4;
  352. PY[0]=0;
  353. PX[1]=5;
  354. PY[1]=0;
  355. PX[2]=4;
  356. PY[2]=1;
  357. PX[3]=5;
  358. PY[3]=1;
  359. break;}
  360. case 18:{
  361. PX[0]=4;
  362. PY[0]=0;
  363. PX[1]=5;
  364. PY[1]=0;
  365. PX[2]=4;
  366. PY[2]=1;
  367. PX[3]=5;
  368. PY[3]=1;
  369. break;}
  370. case 19:{
  371. PX[0]=3;
  372. PY[0]=0;
  373. PX[1]=4;
  374. PY[1]=0;
  375. PX[2]=5;
  376. PY[2]=0;
  377. PX[3]=6;
  378. PY[3]=0;
  379. break;}
  380. case 20:{
  381. PX[0]=5;
  382. PY[0]=0;
  383. PX[1]=5;
  384. PY[1]=1;
  385. PX[2]=5;
  386. PY[2]=2;
  387. PX[3]=5;
  388. PY[3]=3;
  389. break;}
  390. }
  391. if(firstView){
  392. firstView=false;
  393. randBar();
  394. return;
  395. }
  396. for(i=0;i<4;i++){
  397. for(j=0;j<4;j++){
  398. previewBar.children[j].children[i].className="BK";
  399. }
  400. }
  401. for(i=0;i<4;i++)previewBar.children[PY[i]].children[PX[i]-3].className="MB";
  402. for(i=0;i<4;i++){
  403. if(getClass(BX[i],BY[i])!="BK"){
  404. alert("Game Over!");
  405. window.clearInterval(mTimer);
  406. Play.disabled=false;
  407. gameState=0;
  408. return;
  409. }
  410. }
  411. for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB");
  412. }
  413. // -->
  414. </script>
  415. </HEAD>
  416. <BODY bgcolor="#EAF0F8" onkeydown="return keyControl();" topmargin="10" leftmargin="10" rightmargin="10" bottommargin="0" scroll=no>
  417. <table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%"><tr><td width="100%" height="100%" align="center">
  418. <table cellspacing=2 cellpadding=0 class=gt border=0 bordercolor="#EAF0F8" bgcolor="#EAF0F8">
  419. <tr>
  420. <td valign="top">
  421. <table cellspacing=0 cellpadding=0 class=gt border=1 bordercolor="#EAF0F8" style="">
  422. <Tbody id=GameBar>
  423. <tr><td nowrap class=BK> </td><td nowrap class=BK> </td><td nowrap class=BK> </td><td nowrap class=BK> </td><td nowrap class=BK> </td><td nowrap class=BK>
  424. </td><td nowrap class=BK> </td><td nowrap class=BK> </td><td nowrap class=BK> </td><td nowrap class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK>
  425. </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK>
  426. </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK>
  427. </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK>
  428. </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK>
  429. </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr>
  430. </tbody>
  431. </table>
  432. </td>
  433. <td valign="top" align="center" style="padding: 10 10 0 10" bgcolor="#466285">
  434. <table cellspacing=0 cellpadding=0 border=0>
  435. <tr><td><font size=5 color=red face=consolas>Tetris</font></td></tr>
  436. </table>
  437. <table id="previewWnd" cellspacing=0 cellpadding=0 class=gt border=1 bordercolor="#EAF0F8" bgcolor="#EAF0F8" style="margin-top:15">
  438. <Tbody id="previewBar">
  439. <tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr><tr><td class=BK> </td><td class=BK> </td><td class=BK> </td><td class=BK> </td></tr>
  440. </tbody>
  441. </table>
  442. <table cellspacing=3 cellpadding=0 border=0 style="margin-top:15">
  443. <tr><td><input type=button id="Play" style="font-family:Tahoma; font-size:9pt; width:100px" value="Play" onclick="return beginGame();"></td></tr>
  444. <tr><td><input type=button id="Pause" style="font-family:Tahoma; font-size:9pt; width:100px" value="Pause" onclick="return pauseGame();"></td></tr>
  445. <tr><td><input type=button id="Preview" style="font-family:Tahoma; font-size:9pt; width:100px" value="Preview" onclick="preview();"></td></tr>
  446. <tr><td><input type=button id="Replay" style="font-family:Tahoma; font-size:9pt; width:100px" value="Replay" onclick="replayGame();"></td></tr>
  447. </table>
  448. <table cellspacing=3 cellpadding=0 border=0 style="font-family:Tahoma; font-size:9pt; font-weight: bold; margin-top:10">
  449. <tr><td id=scoreBar style="color:#FFFFFF">Score : 0</td></tr>
  450. <tr><td id=speedBar style="color:#FFFFFF">Speed : 1</td></tr>
  451. </table>
  452. </td>
  453. </tr>
  454. </table>
  455. </td></tr></table>
  456. </BODY>
  457. </HTML>
  458. <script>
  459. function unSel()
  460. {
  461. document.execCommand("Unselect");
  462. window.setTimeout("unSel()",100);
  463. }
  464. unSel();
  465. </script>

五、  落英纷飞动画

先给出效果演示图:

运行时花瓣动态飘落

源码如下:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title></title>
  5. <style type="text/css">
  6. canvas{
  7. position: absolute;
  8. left: 0;
  9. top: 0;
  10. }
  11. </style>
  12. </head>
  13. <body bgcolor="#000000">
  14. <canvas id="tree"></canvas>
  15. <canvas id="flower"></canvas>
  16. <script>
  17. //两个canvas
  18. var tree = document.getElementById("tree");
  19. tree.width = window.innerWidth;
  20. tree.height = window.innerHeight ;
  21. var tCxt = tree.getContext("2d");
  22. var flower = document.getElementById("flower");
  23. flower.width = window.innerWidth;
  24. flower.height = window.innerHeight ;
  25. var cxt = flower.getContext("2d");
  26. var flowerList = [];//樱花列表
  27. var rootTop = 450 ;//树起点
  28. var flowerColor = "rgba(255,192,203,.3)" ;//花色
  29. var flowerColorDeep = "rgba(241,158,194,.5)" ;//花色深
  30. var treeColor2 = "rgba(255,192,203,.5)" ;//树枝颜色
  31. var treeColor = "#FFF" ;//树干颜色
  32. var fallList = [];//飘落樱花列表
  33. var g = 0.01 ;//重力加速度
  34. var gWind = 0.005;//风力加速度
  35. var limitSpeedY = 1;//速度上限
  36. var limitSpeedX = 1 ;//速度上限
  37. cxt.shadowColor= "#FFF" ;
  38. cxt.shadowBlur = 10 ;
  39. function drawTree(x,y,deg,step,type){
  40. var deg1 = step%2 == 0 ? 0.1 : -0.1 ;
  41. var x1 = x + Math.cos(deg+deg1) * (step+4) * 0.8 ;//以步长来判断枝干长度 x轴偏移大一些
  42. var y1 = y + Math.sin(deg+deg1) * (step-1) * 0.8 ;//以步长来判断枝干长度 Y轴压缩一些
  43. tCxt.beginPath();
  44. tCxt.lineWidth = step/3;
  45. tCxt.moveTo(x,y);
  46. tCxt.lineTo(x1,y1);
  47. tCxt.strokeStyle = (step > 5 ) ? treeColor : treeColor2 ;//细纸条都换成花的颜色
  48. tCxt.stroke();
  49. if(step > 20){//树干相交的位置有间隙,以一个圆填充
  50. tCxt.fillStyle = treeColor ;
  51. tCxt.arc(x,y,step/6,0,Math.PI*2);
  52. tCxt.fill();
  53. }
  54. if(step < 3 || (step < 23 && Math.random() > 0.1)){
  55. //末梢位置 画花瓣
  56. var color = [flowerColorDeep,flowerColor,flowerColor][Math.round(Math.random()+0.2)] ;
  57. var r = 2+Math.random()*2
  58. tCxt.fillStyle = color ;
  59. tCxt.arc(x1+Math.random()*3,y1+Math.random()*3,r,0,Math.PI)
  60. tCxt.fill();
  61. flowerList.push({x:x,y:y,sx:(Math.random()-0.5),sy:0,color:color,r:r,deg:deg});//保存下画樱花的位置
  62. }
  63. step -- ;
  64. if(step > 0){
  65. drawTree(x1,y1,deg,step,type);
  66. if(step%3 == 1 && step > 0 && step < 30)
  67. drawTree(x1,y1,deg+0.2 + 0.3 * Math.random(),Math.round(step/1.13));//右分叉
  68. if(step%3 == 0 && step > 0 && step < 30)
  69. drawTree(x1,y1,deg-0.2 - 0.3 * Math.random(),Math.round(step/1.13));//左分叉
  70. }
  71. }
  72. drawTree(tree.width/2,rootTop,-Math.PI/2,30,1);//执行
  73. var len = flowerList.length ;
  74. function step(){
  75. if(Math.random() > 0.3) fallList.push(flowerList[Math.floor(Math.random()*len)]);//随机取出一个,花瓣复制到飘落花瓣的列表中
  76. cxt.clearRect(0,0,tree.width,tree.height);
  77. for(var i = 0 ;i < fallList.length ; i ++){
  78. if(fallList[i].sy < limitSpeedY) fallList[i].sy += g ;
  79. fallList[i].sx += gWind ;
  80. fallList[i].x += fallList[i].sx ;
  81. fallList[i].y += fallList[i].sy ;
  82. if(fallList[i].y > rootTop+30){//飘到树根+30的花瓣移除
  83. fallList.splice(i,1);
  84. i -- ;
  85. continue ;
  86. }
  87. cxt.beginPath();
  88. cxt.fillStyle = fallList[i].color ;
  89. fallList[i].deg += fallList[i].sx*0.05 ;//跟速度相关的旋转花瓣
  90. cxt.arc(fallList[i].x,fallList[i].y,fallList[i].r,fallList[i].deg,fallList[i].deg+Math.PI*1.3);
  91. cxt.fill();
  92. }
  93. requestAnimationFrame(step);
  94. }
  95. requestAnimationFrame(step);
  96. </script>
  97. </body>
  98. </html>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

六、随机点名器的示例代码

随机点名器的示例代码一

先给出效果演示图:

源码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>随机点名生成</title>
  6. <style>
  7. /* 页面css样式 */
  8. .wrapper {
  9. width: 800px;
  10. margin: 60px auto;
  11. border: 1px solid #ddd;
  12. text-align: center;
  13. }
  14. .box li {
  15. vertical-align: top;
  16. display: inline-block;
  17. width: 100px;
  18. height: 50px;
  19. border: 2px solid #ddd;
  20. border-radius: 15px;
  21. text-align: center;
  22. line-height: 50px;
  23. margin: 5px;
  24. }
  25. .wrapper button {
  26. border: none;
  27. width: 100px;
  28. height: 50px;
  29. border-radius: 10px;
  30. cursor: pointer;
  31. outline: none;
  32. margin-top: 20px;
  33. font-weight: bolder;
  34. color: #333;
  35. background-color: rgb(14, 146, 43);
  36. }
  37. .wrapper button {
  38. display: inline-block;
  39. }
  40. body {
  41. background-color: #eee;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <div class="wrapper">
  47. <h1 align="center">随机点名系统</h2>
  48. <h6 id="data" align="right"></h6>
  49. <ul class="box"></ul>
  50. <button class="start">开始</button>
  51. <button class="stop">停止</button>
  52. </div>
  53. </body>
  54. <script>
  55. //定义全局变量方便引用
  56. var boxUl = document.getElementsByClassName('box')[0];
  57. var start = document.getElementsByClassName('start')[0];
  58. var stop = document.getElementsByClassName('stop')[0]
  59. var oLi = document.getElementsByTagName('li');
  60. //数据准备
  61. var nameString = new String("张明民,燕妍,滕朗,陶金震,彭祥,苏歌澜,李钰光,宣艺,童孝辉,徐都蓓,徐元,缪贝平,张中斌,林伯,冉凯进,戚玉素,楚婷,鲁利,孙玉筠,益友旭,孟义政,曾钰中,宁豪,鲍仁俊,文长达,裴义健,江智婉,龚娜");
  62. var nameArr = nameString.split(",");
  63. //获取每个学生姓名添加到标签中,自动解析html标签
  64. var str = "";
  65. for (let i = 0; i < nameArr.length; i++) {
  66. str += "<li >" + nameArr[i] + "</li>"
  67. }
  68. boxUl.innerHTML = str;
  69. //添加开始按钮的点击事件
  70. var timer = null;
  71. start.onclick = function () {
  72. // 设置定时器
  73. timer = setInterval(function () {
  74. // 根据数组长度范围生成随机数
  75. var i = Math.floor(Math.random() * nameArr.length);
  76. // 先通过for循环清空所有style属性
  77. for (var j = 0; j < oLi.length; j++) {
  78. oLi[j].removeAttribute("style");
  79. }
  80. // 为随机选择的li颜色属性
  81. oLi[i].style.background = "red";
  82. }, 150);
  83. };
  84. // 点击停止
  85. stop.onclick = function () {
  86. // 清空定时器停止点名
  87. clearInterval(timer);
  88. }
  89. //页面初始化时间设置
  90. window.onload = function () {
  91. datatime();
  92. }
  93. //页面时间动态刷新
  94. setInterval(datatime, 1000);
  95. function datatime() {
  96. let data = new Date();
  97. let dataString ="现在是北京时间:" + data.toLocaleString();
  98. document.getElementById("data").innerHTML = dataString;
  99. }
  100. </script>
  101. </html>

随机点名器的示例代码二

先给出效果演示图:

源码如下:

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width"/>
  6. <title>随机点名网页</title>
  7. <style>
  8. #box {
  9. width: 30%;
  10. height: 200px;
  11. background-color: rgb(233, 248, 214);
  12. border: 1px solid rgb(130, 216, 18);
  13. font-size: 40px;
  14. font-weight: 600;
  15. font-family: Arial, Helvetica, sans-serif;
  16. line-height: 200px;
  17. text-align: center;
  18. margin: 25px auto;
  19. border-radius: 10px;
  20. }
  21. span {
  22. display: block;
  23. width: 30%;
  24. height: 44px;
  25. line-height: 44px;
  26. background-color: rgb(6, 158, 64);
  27. border-radius: 10px;
  28. color: #fff;
  29. text-align: center;
  30. margin: 0 auto;
  31. font-size: 18px;
  32. font-family: 华文细黑;
  33. }
  34. span:hover {
  35. background-color: rgb(4, 190, 76);
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div id="box">随机点名</div>
  41. <span id="span">开始</span>
  42. <script>
  43. var arr = ["张明民","燕妍","滕朗","陶金震","彭祥","苏歌澜","李钰光","宣艺","童孝辉","徐都蓓","徐元","缪贝平",
  44. "张中斌","林伯","冉凯进"," 戚玉素","楚婷","鲁利","孙玉筠","益友旭","孟义政","曾钰中","宁豪","鲍仁俊",
  45. "文长达","裴义健","江智婉","龚娜"]
  46. var box = document.getElementById("box");
  47. var span = document.getElementById("span");//获取元素
  48. var state = 0;//定义状态,开始和结束
  49. var t;
  50. span.onclick = function () {
  51. if (state == 0) {
  52. //如果是0即开始随机,变为1时结束,不是0时执行else
  53. clearInterval(t);
  54. t = setInterval(function () {
  55. // console.log(1);
  56. var sj = Math.round(Math.random() * (arr.length - 1));
  57. console.log(arr[sj]);
  58. box.innerHTML = arr[sj];
  59. }, 3)
  60. span.innerHTML = "暂停"//更改按钮的内容
  61. state=1;
  62. }else{
  63. state=0;
  64. clearInterval(t);
  65. span.innerHTML = "开始"
  66. }
  67. }
  68. </script>
  69. </body>
  70. </html>

改进版,从文本文件中读入人员名单随机点名例子,可参见https://blog.csdn.net/cnds123/article/details/128304666一本后面部分

七、JS生成二维码

最常见的二维码为QRCode(Quick Response Code),是上世纪90年代由日本公司Denso创造出来一种矩阵式二维条码,最早用在汽车零部件管理,后来手机上网普及了,就成了一种扫描输入网址的方式。

下面给出JS使用QRCode.js二维码库生成二维码

QRCode.js库网址mirrors / davidshimjs / qrcodejs · GitCode

下载后解压,使用其中的qrcode.js

建立indexA.html,将indexA.html和qrcode.js放在同一个文件夹中

indexA.html内容如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title> JS 生成二维码</title>
  6. </head>
  7. <body>
  8. 内容:<input type="text" id="content" value="https://www.csdn.net/" /> <br><br>
  9. 尺寸:<input type="text" id="size" value="150"><br><br>
  10. 背景:<input type="text" id="color" value="#fff"><br><br>
  11. 前景:<input type="text" id="colorr" value="#000"><br><br>
  12. <button id="btn">生成二维码</button><br><br>
  13. <div id="qrcode"></div>
  14. </body>
  15. <script src='qrcode.js'></script>
  16. <script type="text/javascript">
  17. //声明变量
  18. let qrcode;
  19. let content;
  20. let size;
  21. let color;
  22. let colorr;
  23. // 设置点击事件
  24. document.getElementById("btn").onclick =function(){
  25. // 获取内容
  26. content = document.getElementById("content").value;
  27. // 获取尺寸
  28. size = document.getElementById("size").value;
  29. // 获取背景
  30. color = document.getElementById("color").value;
  31. // 获取前景
  32. colorr = document.getElementById("colorr").value;
  33. // 清除上一次的二维码
  34. document.getElementById("qrcode").innerHTML = ''; //清除上一次的二维码
  35. // 创建二维码
  36. qrcode = new QRCode(document.getElementById("qrcode"), {
  37. width : size,//设置宽高
  38. height : size,
  39. colorLight : color,
  40. colorDark : colorr,
  41. });
  42. //qrcode.makeCode(document.getElementById("content").value);
  43. var elText = document.getElementById("content");
  44. qrcode.makeCode(elText.value);
  45. }
  46. </script>
  47. </html>

用浏览器打开indexA.html,效果如下:

OK!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/922248
推荐阅读
相关标签
  

闽ICP备14008679号