项目实训第四周(1)

这篇博客介绍了如何在SVG图形界面中通过JavaScript实现用户交互功能。当点击用户节点时,通过mute()和unmute()函数动态调整节点和边的透明度,使所选用户及收藏的食谱高亮显示,而其他节点和边淡化,从而创建了一种视觉突出效果。此外,点击舞台区域可以恢复所有节点和边的原始状态。
摘要由CSDN通过智能技术生成

现在可以在界面上显示所有的节点了,但这只是一个静态的页面,接下来为这些节点添加一些功能,首先是点击某用户,将用户及其收藏的食谱凸显出来,思路如下:声明一个函数mute(),功能为:增加节点与边的透明度,再声明一个函数unmute(),功能为降低节点与边的透明度,然后为用户节点添加click的一个函数:当一个用户节点被点击时,界面中所有节点执行mute()函数,同时该节点和所有与其相连的食谱节点再执行unmute()函数,就实现了突出当前用户节点和食谱,淡化所有其他节点与边的功能。

  function mute(node) {
    if (!~node.getAttribute('class').search(/muted/))
      node.setAttributeNS(null, 'class', node.getAttribute('class') + ' muted');
  }
  function unmute(node) {
    node.setAttributeNS(null, 'class', node.getAttribute('class').replace(/(\s|^)muted(\s|$)/g, '$2'));
  }
  $('.sigma-node').click(function() {//点击node触发的function

    // Muting
    $('.sigma-node, .sigma-edge').each(function() {
      mute(this);
    });
    // Unmuting neighbors
    var neighbors = s.graph.neighborhood($(this).attr('data-node-id'));
    neighbors.nodes.forEach(function(node) {//突出当前淡化其他nodes
      unmute($('[data-node-id="' + node.id + '"]')[0]);
    });

    neighbors.edges.forEach(function(edge) {//突出当前淡化其他edges
      unmute($('[data-edge-id="' + edge.id + '"]')[0]);
    });
  });
  s.bind('clickStage', function() {//点击stage复原
    $('.sigma-node, .sigma-edge').each(function() {
      unmute(this);
    });
  });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值