欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery動(dòng)態(tài)效果顯示人物結(jié)構(gòu)關(guān)系圖的方法

 更新時(shí)間:2015年05月07日 15:35:03   投稿:shichen2014  
這篇文章主要介紹了jQuery動(dòng)態(tài)效果顯示人物結(jié)構(gòu)關(guān)系圖的方法,涉及jQuery操作json結(jié)構(gòu)數(shù)據(jù)及鼠標(biāo)事件的技巧,需要的朋友可以參考下

本文實(shí)例講述了jQuery動(dòng)態(tài)效果顯示人物結(jié)構(gòu)關(guān)系圖的方法。分享給大家供大家參考。具體分析如下:

這是一個(gè)人物關(guān)系圖,可動(dòng)態(tài)展示,效果非常漂亮。點(diǎn)擊文字可出現(xiàn)動(dòng)態(tài)關(guān)系圖的轉(zhuǎn)換效果。

<!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:"娛樂(lè)圈"},
 {name:"成龍",relationship:"激吻"},
 {name:"黃立行",relationship:"電影"}]
 },
 {name:"方大同",friend:[
 {name:"房祖名",relationship:"情敵"},
 {name:"薛凱琪",relationship:"否認(rèn)拍拖"},
 {name:"林宥嘉",relationship:"歌手"},
 {name:"韓庚",relationship:"演唱會(huì)"}]
 },
 {name:"薛凱琪",friend:[
 {name:"方大同",relationship:"否認(rèn)拍拖"},
 {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){//傳入?yún)?shù)1:數(shù)組 參數(shù)2:第幾個(gè)
 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:代表共幾個(gè)對(duì)象 r代表周長(zhǎng) i代表第幾個(gè)對(duì)象 
//w代表外面對(duì)象的寬帶 h代表外面對(duì)象的高度 d代表其實(shí)角度
 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>

希望本文所述對(duì)大家的jQuery程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • jQuery中$原理實(shí)例分析

    jQuery中$原理實(shí)例分析

    這篇文章主要介紹了jQuery中$原理,結(jié)合實(shí)例形式分析了jQuery中$的原理與運(yùn)行機(jī)制,并具體分析了jQuery對(duì)象構(gòu)造的具體原理,需要的朋友可以參考下
    2018-08-08
  • asp.net+jquery.form實(shí)現(xiàn)圖片異步上傳的方法(附j(luò)query.form.js下載)

    asp.net+jquery.form實(shí)現(xiàn)圖片異步上傳的方法(附j(luò)query.form.js下載)

    這篇文章主要介紹了asp.net+jquery.form實(shí)現(xiàn)圖片異步上傳的方法,結(jié)合實(shí)例形式分析了jquery.form.js前臺(tái)異步提交圖片與asp.net后臺(tái)處理的相關(guān)技巧,需要的朋友可以參考下
    2016-05-05
  • 如何使用jQuery技術(shù)開(kāi)發(fā)ios風(fēng)格的頁(yè)面導(dǎo)航菜單

    如何使用jQuery技術(shù)開(kāi)發(fā)ios風(fēng)格的頁(yè)面導(dǎo)航菜單

    這篇文章主要介紹了如何使用jQuery技術(shù)開(kāi)發(fā)ios風(fēng)格的頁(yè)面導(dǎo)航菜單,需要的朋友可以參考下
    2015-07-07
  • JQuery從頭學(xué)起第一講

    JQuery從頭學(xué)起第一講

    JQuery的重要性對(duì)一個(gè)coder來(lái)說(shuō)應(yīng)該是不言而喻的, 多少次在應(yīng)聘的時(shí)候被問(wèn)及是否會(huì)JQuery;多少次在寫(xiě)腳本的時(shí)候因?yàn)闉g覽器的不兼容而吐血;多少次因?yàn)樾枰媚_本做一個(gè)簡(jiǎn)單的效果而寫(xiě)到手抽筋。JQuery出現(xiàn)后,很多問(wèn)題都被輕易解決了。
    2010-07-07
  • jquery的extend和fn.extend的使用說(shuō)明

    jquery的extend和fn.extend的使用說(shuō)明

    jQuery.fn.extend(object); 對(duì)jQuery.prototype進(jìn)得擴(kuò)展,就是為jQuery類(lèi)添加“成員函數(shù)”。jQuery類(lèi)的實(shí)例可以使用這個(gè)“成員函數(shù)”。
    2011-01-01
  • jquery寫(xiě)出PC端輪播圖實(shí)例

    jquery寫(xiě)出PC端輪播圖實(shí)例

    本篇文章主要給大家講述了用jquery如何寫(xiě)出一個(gè)PC端的輪播圖效果的實(shí)例,有興趣的朋友參考下。
    2018-01-01
  • jQuery Dom元素操作技巧

    jQuery Dom元素操作技巧

    DOM是一種與瀏覽器、平臺(tái)、語(yǔ)言無(wú)關(guān)的接口,使用該接口可以輕松訪問(wèn)頁(yè)面中所有的標(biāo)準(zhǔn)組件,這篇文章給大家介紹了jquery dom元素操作方法,需要的朋友參考下
    2018-02-02
  • jquery插件推薦瀏覽器嗅探userAgent

    jquery插件推薦瀏覽器嗅探userAgent

    這里給大家推薦一款瀏覽器嗅探的jQuery插件useragent,兼容各大瀏覽器,在做項(xiàng)目的時(shí)候經(jīng)常要用到,非常的實(shí)用
    2014-11-11
  • jQuery實(shí)現(xiàn)簡(jiǎn)易的天天愛(ài)消除小游戲

    jQuery實(shí)現(xiàn)簡(jiǎn)易的天天愛(ài)消除小游戲

    貌似最近騰訊手機(jī)游戲天天愛(ài)消除挺火的,我也是粉絲之一,最近對(duì)javascript一直比較感興趣然后想用js仿造一個(gè),應(yīng)該不是太難,
    2015-10-10
  • jQuery之a(chǎn)jax刪除詳解

    jQuery之a(chǎn)jax刪除詳解

    ajax是局部刷新。用jQuery來(lái)實(shí)現(xiàn),會(huì)簡(jiǎn)化很多。下面進(jìn)行詳細(xì)的說(shuō)明,結(jié)合一個(gè)ajax刪除的案例來(lái)進(jìn)行
    2014-02-02

最新評(píng)論