网络拓扑图上文本的巧妙应用

在前端网页设计中,文本是重要的组成部分,那么在网络拓扑图中也是一样的,文本在网络拓扑图上最基本的显示功能之一,在不同的应用场景下,会有不同的需求。但是不同的需求也逃不过一些基础设置,如位置、旋转、字体、颜色等需求。接下来我们就来详细聊聊
HT for Web 中文本的相关应用。

HT for Web 为网络拓扑图上的节点提供了两个文本,也确实需要两个文本同时存在的情况,比如车站上面的站牌,就有汉字和拼音的组合,如果做一个公交站示意图的话,节点上的两个文本就都用得上了。今天就模拟一个地铁站点和大家一起聊聊网络拓扑图上的文本应用。

今天拿来说明的 Demo 链接:http://www.hightopo.com/demo/...

从上图可以看出,文本有各种各样的需求,有可能还有其他更复杂的需求,在这边我就抽取几种需求来具体描述下,那我们一步一步来调效果,先从厦门这个站点开始吧。


  1. node.s({ 
  2.     'label': '厦门', 
  3.     'label2': 'Xiamen' 
  4. });  

网络拓扑图的创建及节点的创建我这边就不再多描述了,我们直奔主题,先设置 Node 上面的两个文本看看效果。

如上图,可以发现连个文本是在 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 个像素。

上图的文本位置看起来舒服多了,但是感觉还是不对,没有主次之分,是不是应该将 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 的偏移值也需要做些调整,不然两个文本就又叠在一起了。

上图的效果看着顺眼多了。

看上图,我们又多搞了几个 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/...

作者:hightopo

来源:51CTO

时间: 2024-10-27 23:22:54

网络拓扑图上文本的巧妙应用的相关文章

d3.js实现简单的网络拓扑图实例代码_javascript技巧

前言 了解了D3.js的基本开发和组件以后,我们开始应用它激动人心之处:绚丽的预定义图形,应用D3.js,我们在它的示例文件的基础上稍加变动即可应用于我们的数据可视化工作中,D3.js将后台的运算已经预定义好,我们只需少量代码和规范的数据,就能做出很花哨(请原谅我的用词不当)的效果. 力学图(也称为导向图,也有叫网络拓补图的,反正就是通过排斥得到关系远近的结构)在社交网络研究.信息传播途径等群体关系研究中应用非常广泛,它可以直观地反映群体与群体之间联系的渠道.交集多少,群体内部成员的联系强度等.

解决无线网络连接上但不能上网的问题

  1.查密码是否错误 输入无线连接密码的时候,如果密码比较长有可能会输错密码,所以建议大家再输入一次密码.如果有可能,直接使用复制粘贴的方式输入密码.复制粘贴的时候,注意别选中无关字符了哟,多加一两个空格是最常见的错误. 2.无线路由器绑定了MAC地址 为了防止别人蹭网,很多家庭用户都设置了无线Mac地址过滤,但是当更换电脑或者无线网卡之后,就上不了网了,所以需要在路由器设置中添加新的MAC地址. 3.检查服务设置问题 检查电脑端的服务设置,例如DHCP Client.WirelessZero

CNNIC成网络安全史上最牛钉子户

钉子户分为两种:   1.自我保护型.他们是社会的弱势群体,收入较低. 2.后台撑腰型.有一定的社会关系,自持无恐,有文化.懂政策,喜欢钻政策和法律的空子,其背后往往有高人的指点. CNNIC显然属于第二种,它能够成为网络安全史上最牛钉子户,自然有其原因,自我身份加上与某些机构的莫须无关系,几乎注定了他在某些权利战争中的必胜.在互联网VIP评论圈的群中,众评论人士纷纷叹言,这钉子户可强啊,奇虎等安全厂商恐不是其对手,根据大家的聊天我对CNNIC和钉子户的特征进行了一番总结. CNNIC的特征:

无线网络连接上但上不了网的原因和解决方法

最近有关于很多无线网络连接上但上不了网的问题,很多学员都来邮件提问,例如: 问1:这几天无线网络一直不稳定,有时候可以上有时候不能上,即使上了也不到多久就掉了.很多时候是无线网络显示已连接上,且信号是非常好.但上Q 或者上网都上不了,后根据路由器的状态显示,修改了IP地址和DNS地址,还是上不了....很郁闷!现在是路由器用网线直接拉是可以上的,但是无线就用不来,显示连接上,但上不了网,IP和DNS地址都是选择自动获得的. 今天查看了路由日志那显示, 问2:昨晚,无意间打开无线网络wi-fi发现

无线网络连接上但上不了网怎么办

下面就常见的几种原因分别来排查无线网络连接上但上不了网的原因以及相应的解决办法. 一.检查是否密码错误 输入无线连接密码的时候,如果密码比较长有可能会输错密码,所以建议大家再输入一次密码.如果有可能,直接使用复制粘贴的方式输入密码.复制粘贴的时候,注意别选中无关字符了哟,多加一两个空格是最常见的错误. 二.无线路由器是否已经和MAC地址绑定 为了防止别人蹭网,很多家庭用户都设置了无线Mac地址过滤,但是当更换电脑或者无线网卡之后,就上不了网了,所以需要在路由器设置中添加新的MAC地址. 三.服务

无线网络连接上但上不了网的原因和解决办法

最近有关于很多无线网络连接上但上不了网的问题,很多学员都来邮件提问,例如: 问1:这几天无线网络一直不稳定,有时候可以上有时候不能上,即使上了也不到多久就掉了.很多时候是无线网络显示已连接上,且信号是非常好.但上Q或者上网都上不了,后根据路由器的状态显示,修改了IP地址和DNS地址,还是上不了....很郁闷!现在是路由器用网线直接拉是可以上的,但是无线就用不来,显示连接上,但上不了网,IP和DNS地址都是选择自动获得的. 今天查看了路由日志那显示, 问2:昨晚,无意间打开无线网络wi-fi发现了

Office程序如何避免由于打开网络位置上的文件而运行缓慢甚至挂起

当我们在使用Office软件打开一些保存在网络位置上的文件时,可能会发生Office程序运行缓慢甚至程序未响应(挂起)的现象.这种现象通常是由于Office程序在打开文件时,网络链接中断所导致的. 操作步骤: 对于Office程序由于打开网络位置上的文件而运行缓慢甚至挂起的问题,微软发布了一个专用于修复此问题的Fix工具,工具链接如下: http://download.microsoft.com/download/2/F/6/2F68E50F-8721-496F-9EF2-C3D35FB5D8B

无线网络连接上但上不了网怎么办?解决无线网络上

无线网络连接上但上不了网怎么办?绿茶小编胖胖带来了无线网络连接有个感叹号解决方法,很多朋友表示自己电脑的无线网络连接上有一个感叹号导致上不了网,该如何解决呢?接下来小编给大家分享解决的方法吧! 1.检查是否密码错误 输入无线连接密码的时候,如果密码比较长有可能会输错密码,所以建议大家再输入一次密码.如果有可能,直接使用复制粘贴的方式输入密码.复制粘贴的时候,注意别选中无关字符了哟,多加一两个空格是最常见的错误. 2.无线路由器是否已经和MAC地址绑定 为了防止别人蹭网,很多家庭用户都设置了无线M

服务器-主要是出现在网络问题上还是代码有问题?

问题描述 主要是出现在网络问题上还是代码有问题? 日志级别: ERROR 出错类:GrowthPartner.DAL.DBConn property: [(null)] - 错误描述:Error System.Data.SqlClient.SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: Named