成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

網絡拓撲圖上文本的巧妙應用

開發 前端
在前端網頁設計中,文本是重要的組成部分,那么在網絡拓撲圖中也是一樣的,文本在網絡拓撲圖上最基本的顯示功能之一,在不同的應用場景下,會有不同的需求。但是不同的需求也逃不過一些基礎設置,如位置、旋轉、字體、顏色等需求。接下來我們就來詳細聊聊 HT for Web 中文本的相關應用。

在前端網頁設計中,文本是重要的組成部分,那么在網絡拓撲圖中也是一樣的,文本在網絡拓撲圖上最基本的顯示功能之一,在不同的應用場景下,會有不同的需求。但是不同的需求也逃不過一些基礎設置,如位置、旋轉、字體、顏色等需求。接下來我們就來詳細聊聊 HT for Web 中文本的相關應用。

HT for Web 為網絡拓撲圖上的節點提供了兩個文本,也確實需要兩個文本同時存在的情況,比如車站上面的站牌,就有漢字和拼音的組合,如果做一個公交站示意圖的話,節點上的兩個文本就都用得上了。今天就模擬一個地鐵站點和大家一起聊聊網絡拓撲圖上的文本應用。

今天拿來說明的 Demo 鏈接:http://www.hightopo.com/demo/...

[[172540]]

 

從上圖可以看出,文本有各種各樣的需求,有可能還有其他更復雜的需求,在這邊我就抽取幾種需求來具體描述下,那我們一步一步來調效果,先從廈門這個站點開始吧。

  1. node.s({ 
  2.     'label''廈門'
  3.     'label2''Xiamen' 
  4. });  

網絡拓撲圖的創建及節點的創建我這邊就不再多描述了,我們直奔主題,先設置 Node 上面的兩個文本看看效果。 

[[172541]]

 如上圖,可以發現連個文本是在 Node 上不同的位置,顯然這樣子不是我們想要的效果,那文本的位置又該怎么去定義呢?這時就需要移步到我們的《位置手冊》(http://www.hightopo.com/guide...)來了解相關的設置及含義。在我們的風格手冊中的 ht.Style 章節有描述 label 和 label2 的位置默認值,label.position 的默認值是 31,label2.position 的默認值是 34,在位置手冊中找到兩個 label 需要擺放的位置,然后設置到 Node 上就可以了。那么根據前面總體效果圖中的廈門站點,可以發現兩個 label 的位置都是在中下方,所以兩個 lable 的 position 都應該設置為 31,當設置兩個文本的 position 都為 31 的話,會發現連個文本是重疊的,這肯定不是我們想要的效果。仔細閱讀風格手冊,會發現連個 label 都有 offset.x 和 offset.y 連個屬性,這兩個屬性很好理解,就是用來設置文本的偏移值的。

  1. node.s({ 
  2.     'label''廈門'
  3.     'label2''Xiamen'
  4.     'label2.position': 31, 
  5.     'label2.offset.y': 15 
  6. });  

我們對 label2 設置了 position 屬性為 31,和 label 的 position 屬性默認值一樣,并且設置了 label2 的 offset.y 屬性,讓 label2 向下便宜 15 個像素。

[[172542]]

 上圖的文本位置看起來舒服多了,但是感覺還是不對,沒有主次之分,是不是應該將 label 的文本大小設置大一點,別讓拼音搶了風頭,兩個文本都有 font 屬性可以設置,而且默認值都是 12px arial, sans-serif。

  1. node.s({ 
  2.     'label''廈門'
  3.     'label.font''22px arial, sans-serif'
  4.     'label2''Xiamen'
  5.     'label2.position': 31, 
  6.     'label2.offset.y': 23 
  7. });  

我們將 label 的 font 屬性適當地講字體調大了,自然 label2 的偏移值也需要做些調整,不然兩個文本就又疊在一起了。

[[172543]]

 上圖的效果看著順眼多了。

[[172544]]

 看上圖,我們又多搞了幾個 label 樣式,和前面的 label 參數差不多,就中間的兩個文本樣式多了個 rotation,還有一個文本換行。

  1. var list = [], node; 
  2. for (var i = 0; i < 4; i++) { 
  3.     node = new ht.Node(); 
  4.     node.setImage('station'); 
  5.     node.p(100 + i * 100, 100); 
  6.     dm.add(node); 
  7.  
  8.     list.push(node); 
  9. node = list[0]; 
  10. node.s({ 
  11.     'label''廈門'
  12.     'label.font''22px arial, sans-serif'
  13.     'label2''Xiamen'
  14.     'label2.position': 31, 
  15.     'label2.offset.y': 23 
  16. }); 
  17.  
  18. node = list[1]; 
  19. node.s({ 
  20.     'label''圖\n撲'
  21.     'label.position': 14, 
  22.     'label.font''22px arial, sans-serif'
  23.     'label2''Hightopo'
  24.     'label2.position': 14, 
  25.     'label2.offset.x': -7, 
  26.     'label2.rotation': -Math.PI / 2 
  27. }); 
  28.  
  29. node = list[2]; 
  30. node.s({ 
  31.     'label''上\n海'
  32.     'label.position': 20, 
  33.     'label.font''22px arial, sans-serif'
  34.     'label2''Shanghai'
  35.     'label2.position': 20, 
  36.     'label2.offset.x': 6, 
  37.     'label2.rotation': -Math.PI / 2 
  38. }); 
  39.  
  40. node = list[3]; 
  41. node.s({ 
  42.     'label''北京'
  43.     'label.position': 3, 
  44.     'label.font''22px arial, sans-serif'
  45.     'label2''Beijing'
  46.     'label2.position': 3, 
  47.     'label2.offset.y': -23 
  48. }); 

 從上面的代碼可以看到,在“圖撲”和“上海”兩個節點的 label 都加了“n”回車轉義字符,在 HT 的內部實現中,有對“n”回車轉義字符做解析處理,讓文本在表現上可以換行顯示。

***就是站點之間的連線處理了,連線可以通過設置 Edge 的樣式 edge.points 和 edge.segments 兩個屬性來實現,在我們的《入門手冊》(http://www.hightopo.com/guide...)中有說明其具體用法,可以一步閱讀,這不是今天的重點,在這邊就不詳細說明了。

  

  1. var bj_sh = new ht.Edge(bj, sh); 
  2. bj_sh.s(cloneObj(edgeStyle, { 
  3.     'edge.points': [ 
  4.         { x: 280, y: 50 }, 
  5.         { x: 280, y: 100 }, 
  6.         { x: 280, y: 150 } 
  7.     ], 
  8.     'edge.segments': [1, 3, 3] 
  9. })); 
  10. dm.add(bj_sh); 
  11.  
  12. var sh_xm = new ht.Edge(sh, xm); 
  13. sh_xm.s(cloneObj(edgeStyle, { 
  14.     'edge.points': [ 
  15.         { x: 500, y: 150 }, 
  16.         { x: 200, y: 450 } 
  17.     ], 
  18.     'edge.segments': [1, 4] 
  19. })); 
  20. dm.add(sh_xm); 
  21.  
  22. var xm_tp = new ht.Edge(xm, tp); 
  23. xm_tp.s(cloneObj(edgeStyle, { 
  24.     'edge.points': [ 
  25.         { x: 70, y: 430 }, 
  26.         { x: 100, y: 400 } 
  27.     ], 
  28.     'edge.segments': [1, 4] 
  29. })); 
  30. dm.add(xm_tp);  

如上代碼,通過 Edge 將節點連接起來,并設置其 edge.points 和 edge.segments 兩個樣式,從而達到文章開頭的示意圖那樣的效果,當然站點也是需要設置到相應的位置。在這邊需要注意的是,edge.points 屬性是沒有包含起點和終點的,所以,你可以看到上圖中的代碼,按照 edge.segments 屬性計算出來的點個數和 edge.points 的數組個數是不一樣的,而且總是相差 2。

雖然源碼不長,但是由于篇幅的原因,這里就不貼源碼了,感興趣的同學可以到我們的官網上查看 Demos 的源碼,Demo 的具體鏈接如下:http://www.hightopo.com/demo/...

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2019-07-03 10:16:11

網絡監控拓撲圖

2009-03-02 15:44:20

網絡拓撲Visio技術Microsoft V

2009-06-22 17:15:50

Java Applet拓撲圖

2009-06-29 14:30:42

網絡拓撲KoolPoint摩卡

2009-02-20 15:15:32

2021-02-01 09:13:34

Zabbix5.2拓撲圖運維

2019-10-25 16:50:51

網絡安全網絡安全技術周刊

2010-12-15 11:24:35

2009-03-02 16:22:18

網絡拓撲網絡管理摩卡軟件

2009-06-30 09:46:00

網絡拓撲酷點摩卡

2019-09-05 11:14:12

監控系統拓撲圖

2010-11-15 12:12:18

2010-06-29 10:15:31

局域網故障

2009-03-17 09:43:13

網絡拓撲定位摩卡

2012-06-04 10:09:11

無線網絡

2009-01-15 09:49:00

網絡地址切換

2009-02-19 10:14:00

2010-07-05 16:30:45

BGP協議

2010-08-31 16:57:13

DHCP SNOOPI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美一区二区三区日本久久久 | 日韩国产精品一区二区三区 | 国产精品视频网站 | 国产精品永久免费 | 国产一区免费视频 | 自拍偷拍中文字幕 | 国产精品亚洲精品日韩已方 | 日韩欧美视频在线 | 亚洲国产精品一区二区三区 | 国产精品久久久久久久久久三级 | 免费精品视频 | 国产成人精品网站 | www.久久99| 日韩视频―中文字幕 | 精品国产欧美一区二区三区成人 | 午夜性色a√在线视频观看9 | 欧美一级二级三级视频 | 毛片免费在线 | 最新免费黄色网址 | 国产人成精品一区二区三 | 欧美日韩国产精品一区二区 | 国产免费一区二区 | 免费看a| 欧美一区中文字幕 | av一区在线观看 | 婷婷国产一区二区三区 | 国产精品日韩在线观看 | 91精品久久久久久久久中文字幕 | 视频一区二区在线观看 | 日韩在线免费 | 亚洲欧美国产视频 | 成人在线视频一区 | 国产精品亚洲综合 | 成人欧美一区二区三区黑人孕妇 | 玖玖国产| 国产伊人精品 | 国产在线精品一区二区三区 | 国产免费一区二区三区 | 国产精品日韩高清伦字幕搜索 | 免费视频一区 | 在线精品一区二区三区 |