本文實例講述了jQuery動態效果顯示人物結構關係圖的方法。分享給大家供大家參考。具體分析如下:
這是一個人物關係圖,可動態展示,效果非常漂亮。點選文字可出現動態關係圖的轉換效果。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style> #box{ width:500px; height:500px; position: relative } .host{ position:absolute; width:100px; height:50px; line-height:50px; text-align:center; color:#000000; background-color:#eeeeee; border:#000000 1px solid; font-weight:bolder } .guest{ position:absolute; width:80px; height:40px; line-height:40px;text-align:center; color: #999999; background-color:#FFFFFF; border:#000000 1px solid; cursor:pointer } .relationship{ position:absolute; width:60px; height:20px; color: #aaa; line-height:20px; font-size:12px; text-align:center } </style> <script src="jquery-1.6.2.min.js"></script> <script> var relationName = [ {name:"成龙",friend:[ {name:"房祖名",relationship:"父子"}, {name:"林凤娇",relationship:"夫妻"}, {name:"吴绮莉",relationship:"绯闻"}, {name:"徐静蕾",relationship:"激吻"}] }, {name:"房祖名",friend:[ {name:"成龙",relationship:"父子"}, {name:"林凤娇",relationship:"母子"}, {name:"方大同",relationship:"情敌"}, {name:"薛凯琪",relationship:"女友"}, {name:"陈坤",relationship:"朋友"}, {name:"赵薇",relationship:"朋友"}] }, {name:"林凤娇",friend:[ {name:"成龙",relationship:"夫妻"}, {name:"房祖名",relationship:"母子"}, {name:"吴绮莉",relationship:"情敌"}] }, {name:"吴绮莉",friend:[ {name:"成龙",relationship:"绯闻"}, {name:"林凤娇",relationship:"情敌"}, {name:"吴卓林",relationship:"母女"}] }, {name:"徐静蕾",friend:[ {name:"李亚鹏",relationship:"电影"}, {name:"韩寒",relationship:"娱乐圈"}, {name:"成龙",relationship:"激吻"}, {name:"黄立行",relationship:"电影"}] }, {name:"方大同",friend:[ {name:"房祖名",relationship:"情敌"}, {name:"薛凯琪",relationship:"否认拍拖"}, {name:"林宥嘉",relationship:"歌手"}, {name:"韩庚",relationship:"演唱会"}] }, {name:"薛凯琪",friend:[ {name:"方大同",relationship:"否认拍拖"}, {name:"房祖名",relationship:"女友"}] } ] var relation = { radius:150, boxW:500, boxH:500, hostW:100, hostH:50, guestW:80, guestH:40, relationW:60, relationH:20, angle:0, id:"box", init:function(array,n){//传入参数1:数组 参数2:第几个 this.array = array; this.appendHost(this.array,n); this.appendQuest(this.array,n); this.appendRelationShip(this.array,n); }, appendHost:function(array,n){ var box = $("#"+this.id); var host ="<span class='host'>"+array[n].name+"</span>"; box.append(host) this.postHost(); }, postHost:function(){ var x = (this.boxW - this.hostW)/2; var y = (this.boxH - this.hostH)/2; $(".host").css({ left:x, top:y }) }, appendQuest:function(array,n){ var box = $("#"+this.id); var guests=""; var that = this; for(var i=0; i<array[n].friend.length; i++){ guests+="<span class='guest'>"+array[n].friend[i].name+"</span>"; } $(guests).appendTo(box); $(".guest").live("click",function(){ that.move(that,this); }) this.postQuest(); }, postQuest:function(){ var guests = $(".guest"); var that = this; guests.each(function(i){ guests.eq(i).css({ left:that.setQuestPose(guests.length,that.radius,i,that.guestW,that.guestH,that.angle).left, top:that.setQuestPose(guests.length,that.radius,i,that.guestW,that.guestH,that.angle).top }).attr("angle",i/guests.length) }) }, setQuestPose:function(n,r,i,w,h,d){ //n:代表共几个对象 r代表周长 i代表第几个对象 //w代表外面对象的宽带 h代表外面对象的高度 d代表其实角度 var p = i/n*Math.PI*2+Math.PI*2*d; var x = r * Math.cos(p); var y = r * Math.sin(p); return { "left":parseInt(this.boxW/2+ x - w/2), "top":parseInt(this.boxH/2 + y - h/2) } }, appendRelationShip:function(array,n){ var box = $("#"+this.id); var relation=""; for(var i=0; i<array[n].friend.length; i++){ relation+="<span class='relationship'>"+array[n].friend[i].relationship+"</span>"; } box.append(relation); this.postRelationShip(); }, postRelationShip:function(){ var guests = $(".relationship"); var that = this; guests.each(function(i){ guests.eq(i).css({ left:that.setQuestPose(guests.length,that.radius/2,i,that.relationW,that.relationH,that.angle).left, top:that.setQuestPose(guests.length,that.radius/2,i,that.relationW,that.relationH,that.angle).top }) }) }, move:function(t,i){ var n = $(".guest").index($(i)); this.angle = parseFloat($(i).attr("angle"))+0.5; this.delect(n); this.moveHost(i); this.moveQuest(i); this.moveRelationship(i); this.changeClass(); setTimeout(function(){t.newAppend(i)},500); }, newAppend:function(i){ this.newAppendGuest(i,"guest","name",this.guestW,this.guestH,this.radius); this.newAppendGuest(i,"relationship","relationship",this.relationW,this.relationH,this.radius/2); }, newAppendGuest:function(i,className,name,w,h,r){ var host = $(i).html(); var guest = $(".guest").html(); var box = $("#"+this.id); var that = this; var next=0; for(var i=0; i<this.array.length; i++){ if(host == this.array[i].name){ for(var j=0;j<this.array[i].friend.length; j++){ if(guest !== this.array[i].friend[j].name){ next++; var guests ="<span class='"+className+"'>"+this.array[i].friend[j][name]+"</span>"; $(guests).appendTo(box).css({ left:that.setQuestPose(this.array[i].friend.length,r,next,w,h,that.angle).left, top:that.setQuestPose(this.array[i].friend.length,r,next,w,h,that.angle).top }).attr("angle",that.angle+next/this.array[i].friend.length).hide().fadeIn(1000); } } } } }, moveHost:function(i){ var hLeft = parseInt($(".host").css("left")) + this.hostW/2; var hTop = parseInt($(".host").css("top")) + this.hostH/2; var gLeft = parseInt($(i).css("left")) + this.guestW/2; var gTop = parseInt($(i).css("top")) + this.guestH/2; var l = gLeft - hLeft; var t = gTop - hTop; var left = (hLeft - l - this.guestW/2)+"px"; var top = (hTop - t - this.guestH/2)+"px"; this.animate(".host",left,top); }, moveRelationship:function(i){ var hLeft = parseInt($(".host").css("left")) + this.hostW/2;; var hTop = parseInt($(".host").css("top")) + this.hostH/2; var gLeft = parseInt($(".relationship").css("left")) + this.relationW/2; var gTop = parseInt($(".relationship").css("top")) + this.relationH/2; var l = gLeft - hLeft; var t = gTop - hTop; var left = (hLeft - l - this.relationW/2)+"px"; var top = (hTop - t - this.relationH/2)+"px"; this.animate(".relationship",left,top); }, moveQuest:function(i){ var left = $(".host").css("left"); var top = $(".host").css("top"); this.animate(i,left,top); }, delect:function(n){ $(".guest").slice(0,n).remove(); $(".guest").slice(1).remove(); $(".relationship").slice(0,n).remove(); $(".relationship").slice(1).remove(); }, animate:function(i,left,top){ $(i).animate({ left:left, top:top },500); }, changeClass:function(){ var that =this; $(".guest").addClass("abcdef").removeClass("guest"); $(".host").addClass("guest").removeClass("host").attr("angle",that.angle); $(".abcdef").addClass("host").removeClass("abcdef").attr("angle",null); } } $(document).ready(function(){ relation.init(relationName,0) }) </script> </head> <body> <div id="box"></div> </body> </html>
希望本文所述對大家的jQuery程式設計有所幫助。

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。