亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

jQuery動態效果顯示人物結構關系圖的方法

2024-05-06 16:19:39
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了jQuery動態效果顯示人物結構關系圖的方法,涉及jQuery操作json結構數據及鼠標事件的技巧,需要的朋友可以參考下

本文實例講述了jQuery動態效果顯示人物結構關系圖的方法。分享給大家供大家參考。具體分析如下:

這是一個人物關系圖,可動態展示,效果非常漂亮。點擊文字可出現動態關系圖的轉換效果。

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  6. <title>Untitled Document</title> 
  7. <style> 
  8. #box{ 
  9. width:500px; height:500px; 
  10. position: relative 
  11. .host{ 
  12. position:absolute; 
  13. width:100px; height:50px; 
  14. line-height:50px; text-align:center; 
  15. color:#000000; background-color:#eeeeee; 
  16. border:#000000 1px solid; font-weight:bolder 
  17. .guest{ 
  18. position:absolute; 
  19. width:80px; height:40px; 
  20. line-height:40px;text-align:center; 
  21. color: #999999; background-color:#FFFFFF; 
  22. border:#000000 1px solid; cursor:pointer 
  23. .relationship{ 
  24. position:absolute; 
  25. width:60px; height:20px; 
  26. color: #aaa; line-height:20px; 
  27. font-size:12px; text-align:center 
  28. </style> 
  29. <script src="jquery-1.6.2.min.js"></script> 
  30. <script> 
  31. var relationName = [ 
  32. {name:"成龍",friend:[ 
  33. {name:"房祖名",relationship:"父子"}, 
  34. {name:"林鳳嬌",relationship:"夫妻"}, 
  35. {name:"吳綺莉",relationship:"緋聞"}, 
  36. {name:"徐靜蕾",relationship:"激吻"}] 
  37. }, 
  38. {name:"房祖名",friend:[ 
  39. {name:"成龍",relationship:"父子"}, 
  40. {name:"林鳳嬌",relationship:"母子"}, 
  41. {name:"方大同",relationship:"情敵"}, 
  42. {name:"薛凱琪",relationship:"女友"}, 
  43. {name:"陳坤",relationship:"朋友"}, 
  44. {name:"趙薇",relationship:"朋友"}] 
  45. }, 
  46. {name:"林鳳嬌",friend:[ 
  47. {name:"成龍",relationship:"夫妻"}, 
  48. {name:"房祖名",relationship:"母子"}, 
  49. {name:"吳綺莉",relationship:"情敵"}] 
  50. }, 
  51. {name:"吳綺莉",friend:[ 
  52. {name:"成龍",relationship:"緋聞"}, 
  53. {name:"林鳳嬌",relationship:"情敵"}, 
  54. {name:"吳卓林",relationship:"母女"}] 
  55. }, 
  56. {name:"徐靜蕾",friend:[ 
  57. {name:"李亞鵬",relationship:"電影"}, 
  58. {name:"韓寒",relationship:"娛樂圈"}, 
  59. {name:"成龍",relationship:"激吻"}, 
  60. {name:"黃立行",relationship:"電影"}] 
  61. }, 
  62. {name:"方大同",friend:[ 
  63. {name:"房祖名",relationship:"情敵"}, 
  64. {name:"薛凱琪",relationship:"否認拍拖"}, 
  65. {name:"林宥嘉",relationship:"歌手"}, 
  66. {name:"韓庚",relationship:"演唱會"}] 
  67. }, 
  68. {name:"薛凱琪",friend:[ 
  69. {name:"方大同",relationship:"否認拍拖"}, 
  70. {name:"房祖名",relationship:"女友"}] 
  71. var relation = { 
  72. radius:150, 
  73. boxW:500, 
  74. boxH:500, 
  75. hostW:100, 
  76. hostH:50, 
  77. guestW:80, 
  78. guestH:40, 
  79. relationW:60, 
  80. relationH:20, 
  81. angle:0, 
  82. id:"box"
  83. init:function(array,n){//傳入參數1:數組 參數2:第幾個 
  84. this.array = array; 
  85. this.appendHost(this.array,n); 
  86. this.appendQuest(this.array,n); 
  87. this.appendRelationShip(this.array,n); 
  88. }, 
  89. appendHost:function(array,n){ 
  90. var box = $("#"+this.id); 
  91. var host ="<span class='host'>"+array[n].name+"</span>"
  92. box.append(host) 
  93. this.postHost(); 
  94. }, 
  95. postHost:function(){ 
  96. var x = (this.boxW - this.hostW)/2; 
  97. var y = (this.boxH - this.hostH)/2; 
  98. $(".host").css({ 
  99. left:x, 
  100. top:y 
  101. }) 
  102. }, 
  103. appendQuest:function(array,n){ 
  104. var box = $("#"+this.id); 
  105. var guests=""
  106. var that = this
  107. for(var i=0; i<array[n].friend.length; i++){ 
  108. guests+="<span class='guest'>"+array[n].friend[i].name+"</span>"
  109. $(guests).appendTo(box); 
  110. $(".guest").live("click",function(){ 
  111. that.move(that,this); 
  112. }) 
  113. this.postQuest(); 
  114. }, 
  115. postQuest:function(){ 
  116. var guests = $(".guest"); 
  117. var that = this
  118. guests.each(function(i){ 
  119. guests.eq(i).css({ 
  120. left:that.setQuestPose(guests.length,that.radius,i,that.guestW,that.guestH,that.angle).left, 
  121. top:that.setQuestPose(guests.length,that.radius,i,that.guestW,that.guestH,that.angle).top 
  122. }).attr("angle",i/guests.length) 
  123. }) 
  124. }, 
  125. setQuestPose:function(n,r,i,w,h,d){ 
  126. //n:代表共幾個對象 r代表周長 i代表第幾個對象  
  127. //w代表外面對象的寬帶 h代表外面對象的高度 d代表其實角度 
  128. var p = i/n*Math.PI*2+Math.PI*2*d; 
  129. var x = r * Math.cos(p); 
  130. var y = r * Math.sin(p); 
  131. return { 
  132. "left":parseInt(this.boxW/2+ x - w/2), 
  133. "top":parseInt(this.boxH/2 + y - h/2) 
  134. }, 
  135. appendRelationShip:function(array,n){ 
  136. var box = $("#"+this.id); 
  137. var relation=""
  138. for(var i=0; i<array[n].friend.length; i++){ 
  139. relation+="<span class='relationship'>"+array[n].friend[i].relationship+"</span>"
  140. box.append(relation); 
  141. this.postRelationShip(); 
  142. }, 
  143. postRelationShip:function(){ 
  144. var guests = $(".relationship"); 
  145. var that = this
  146. guests.each(function(i){ 
  147. guests.eq(i).css({ 
  148. left:that.setQuestPose(guests.length,that.radius/2,i,that.relationW,that.relationH,that.angle).left, 
  149. top:that.setQuestPose(guests.length,that.radius/2,i,that.relationW,that.relationH,that.angle).top 
  150. }) 
  151. }) 
  152. }, 
  153. move:function(t,i){ 
  154. var n = $(".guest").index($(i)); 
  155. this.angle = parseFloat($(i).attr("angle"))+0.5; 
  156. this.delect(n); 
  157. this.moveHost(i); 
  158. this.moveQuest(i); 
  159. this.moveRelationship(i); 
  160. this.changeClass(); 
  161. setTimeout(function(){t.newAppend(i)},500); 
  162. }, 
  163. newAppend:function(i){ 
  164. this.newAppendGuest(i,"guest","name",this.guestW,this.guestH,this.radius); 
  165. this.newAppendGuest(i,"relationship","relationship",this.relationW,this.relationH,this.radius/2); 
  166. }, 
  167.  
  168. newAppendGuest:function(i,className,name,w,h,r){ 
  169. var host = $(i).html(); 
  170. var guest = $(".guest").html(); 
  171. var box = $("#"+this.id); 
  172. var that = this
  173. var next=0; 
  174. for(var i=0; i<this.array.length; i++){ 
  175. if(host == this.array[i].name){ 
  176. for(var j=0;j<this.array[i].friend.length; j++){ 
  177. if(guest !== this.array[i].friend[j].name){ 
  178. next++; 
  179. var guests ="<span class='"+className+"'>"+this.array[i].friend[j][name]+"</span>"
  180. $(guests).appendTo(box).css({ 
  181. left:that.setQuestPose(this.array[i].friend.length,r,next,w,h,that.angle).left, 
  182. top:that.setQuestPose(this.array[i].friend.length,r,next,w,h,that.angle).top 
  183. }).attr("angle",that.angle+next/this.array[i].friend.length).hide().fadeIn(1000); 
  184. }, 
  185.  
  186. moveHost:function(i){ 
  187. var hLeft = parseInt($(".host").css("left")) + this.hostW/2; 
  188. var hTop = parseInt($(".host").css("top")) + this.hostH/2; 
  189. var gLeft = parseInt($(i).css("left")) + this.guestW/2; 
  190. var gTop = parseInt($(i).css("top")) + this.guestH/2; 
  191. var l = gLeft - hLeft; 
  192. var t = gTop - hTop; 
  193. var left = (hLeft - l - this.guestW/2)+"px"
  194. var top = (hTop - t - this.guestH/2)+"px"
  195. this.animate(".host",left,top); 
  196. }, 
  197. moveRelationship:function(i){ 
  198. var hLeft = parseInt($(".host").css("left")) + this.hostW/2;; 
  199. var hTop = parseInt($(".host").css("top")) + this.hostH/2; 
  200. var gLeft = parseInt($(".relationship").css("left")) + this.relationW/2; 
  201. var gTop = parseInt($(".relationship").css("top")) + this.relationH/2; 
  202. var l = gLeft - hLeft; 
  203. var t = gTop - hTop; 
  204. var left = (hLeft - l - this.relationW/2)+"px"
  205. var top = (hTop - t - this.relationH/2)+"px"
  206. this.animate(".relationship",left,top); 
  207. }, 
  208. moveQuest:function(i){ 
  209. var left = $(".host").css("left"); 
  210. var top = $(".host").css("top"); 
  211. this.animate(i,left,top); 
  212. }, 
  213. delect:function(n){ 
  214. $(".guest").slice(0,n).remove(); 
  215. $(".guest").slice(1).remove(); 
  216. $(".relationship").slice(0,n).remove(); 
  217. $(".relationship").slice(1).remove(); 
  218. }, 
  219. animate:function(i,left,top){ 
  220. $(i).animate({ 
  221. left:left, 
  222. top:top 
  223. },500); 
  224. }, 
  225. changeClass:function(){ 
  226. var that =this
  227. $(".guest").addClass("abcdef").removeClass("guest"); 
  228. $(".host").addClass("guest").removeClass("host").attr("angle",that.angle); 
  229. $(".abcdef").addClass("host").removeClass("abcdef").attr("angle",null); 
  230. $(document).ready(function(){ 
  231. relation.init(relationName,0) 
  232. }) 
  233. </script> 
  234. </head> 
  235. <body> 
  236. <div id="box"></div> 
  237. </body> 
  238. </html> 

希望本文所述對大家的jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕在线观看| www.xxxx欧美| 久久久久国产一区二区三区| 中文字幕日韩电影| 亚州欧美日韩中文视频| 亚洲xxxx3d| 国产视频精品一区二区三区| 亚洲女人天堂成人av在线| 国产精品一区二区三区免费视频| 久久这里有精品视频| 欧美日韩激情小视频| 亚洲a级在线播放观看| 欧美小视频在线| 欧美尺度大的性做爰视频| 日韩亚洲综合在线| 这里只有精品久久| 黄色一区二区在线| 久久久av电影| 中文字幕亚洲欧美一区二区三区| 国内揄拍国内精品| 91精品啪aⅴ在线观看国产| 最新国产精品拍自在线播放| 一区二区三区回区在观看免费视频| 亚洲欧美激情视频| 91av在线国产| 亚洲片国产一区一级在线观看| 欧美成人三级视频网站| 欧美午夜宅男影院在线观看| 疯狂做受xxxx高潮欧美日本| 97超碰色婷婷| 日韩乱码在线视频| 国产福利精品视频| 亚洲午夜未删减在线观看| 久久久噜久噜久久综合| 亚洲人a成www在线影院| 国产精品吹潮在线观看| 国产精品视频一区二区高潮| 日韩美女视频免费在线观看| 亚洲第一网站男人都懂| 久久噜噜噜精品国产亚洲综合| 日本精品在线视频| 日韩精品免费观看| 亚洲国产高清福利视频| 国产精自产拍久久久久久| 97超级碰在线看视频免费在线看| 精品香蕉在线观看视频一| 精品国偷自产在线| 狠狠躁夜夜躁人人爽超碰91| 91精品国产高清| 91久久综合亚洲鲁鲁五月天| 欧美成人免费va影院高清| 深夜成人在线观看| 亚洲精品99久久久久中文字幕| 欧美xxxwww| 国语自产精品视频在免费| 亚洲国产一区二区三区在线观看| 国产亚洲精品高潮| 欧美视频在线看| 日韩成人av在线播放| yw.139尤物在线精品视频| 在线观看视频99| 成人免费观看a| 亚洲精品乱码久久久久久金桔影视| 亚洲免费电影在线观看| 尤物yw午夜国产精品视频| 日韩精品黄色网| 最近的2019中文字幕免费一页| 国产日韩在线播放| 欧洲午夜精品久久久| 亚洲欧美在线x视频| 亚洲第一精品久久忘忧草社区| 中文字幕久久久av一区| 北条麻妃久久精品| 成人免费视频在线观看超级碰| 欧美片一区二区三区| 国产中文字幕亚洲| 亚洲美女性生活视频| 亚洲一区二区三区sesese| 4444欧美成人kkkk| 欧美成人精品不卡视频在线观看| 国产亚洲一区二区精品| 欧美国产精品va在线观看| 久久精品视频播放| 欧美成人在线影院| 欧美成人自拍视频| 亚洲人成毛片在线播放| 韩国三级日本三级少妇99| 一区二区亚洲精品国产| 久久久国产一区二区| 久久久久久久亚洲精品| 国产精品入口免费视| 日韩欧美综合在线视频| 欧美富婆性猛交| 精品久久久久久国产| 欧美日韩在线观看视频小说| 亚洲激情视频网站| 51色欧美片视频在线观看| 国产亚洲精品高潮| 欧美性猛交xxxx黑人猛交| 色综合色综合网色综合| 欧美日韩中文字幕在线视频| 日韩成人在线视频观看| 成人激情视频小说免费下载| 在线观看精品国产视频| 精品国产欧美一区二区五十路| 日韩欧美国产网站| 亚洲欧美国产一区二区三区| 色婷婷**av毛片一区| 国产视频精品久久久| 97婷婷涩涩精品一区| 日韩成人在线观看| 97涩涩爰在线观看亚洲| 国产偷亚洲偷欧美偷精品| 欧美在线一级va免费观看| 色偷偷91综合久久噜噜| 日韩免费av片在线观看| 欧美美女18p| 亚洲影院高清在线| 一个人看的www久久| 2024亚洲男人天堂| 亚洲精品成人免费| 欧美与黑人午夜性猛交久久久| 亚洲国产精品va在线观看黑人| 亚洲欧美综合v| 欧美精品激情在线| 色婷婷av一区二区三区在线观看| 国产精品第8页| 日韩在线一区二区三区免费视频| 国产免费观看久久黄| 亚洲精品自产拍| 国产精自产拍久久久久久| 日韩av日韩在线观看| 久久久久久av| 亚洲欧美色婷婷| 日韩在线视频网站| 欧美极品第一页| 亚洲高清久久网| 日韩大陆毛片av| 精品久久久久久国产91| 久久精品亚洲热| 自拍偷拍亚洲在线| 91高清视频在线免费观看| 成人免费在线视频网址| 综合网日日天干夜夜久久| 国产v综合v亚洲欧美久久| 狠狠躁夜夜躁人人爽天天天天97| 91美女高潮出水| 91亚洲精品久久久| 在线视频日本亚洲性| 日韩av在线高清| 亚洲一区二区久久久久久| 亚洲国模精品私拍| 国产精品一区二区三区在线播放| 国产精品电影网| 欧美激情综合色综合啪啪五月| 热门国产精品亚洲第一区在线| 日韩av电影中文字幕| 日韩国产精品一区| 国产美女精品视频免费观看| 91免费精品视频| 久久手机免费视频| 久久久97精品| 97久久超碰福利国产精品…| 国产网站欧美日韩免费精品在线观看|