首页 > 解决方案 > 滚动带有子元素的祝福框

问题描述

我有一个祝福的盒子,里面有scrollable: true

let outerBox = blessed.box({
  top: '0%',
  left: '0%',
  width: '0%+6',
  height: '100%',
  scrollable: true,
  tags: true,
  padding: 1,
  mouse: true,
  style: {
    fg: 'white',
    bg: 'black'
  }
});

在里面我有很多我想要点击的元素。

[array of many elements].forEach((elem, i) => {
  let innerBox = blessed.box({
    content: elem,
    "height": "0%+1",
    "top": "0%+"+i,
    style: {
      hover: {
        bg: "black",
        fg: "white"
      }
    }
  });
  innerBox.on("click", (data) => {
    console.log("clicked",guild)
  });
  outerBox.append(server);
});

但是,如果元素设置了样式属性或侦听单击事件处理程序,则在它们上滚动不再滚动外框。我必须在框的最边缘滚动才能真正滚动。

这有效,但我无法检测到点击:

[array of many elements].forEach((elem, i) => {
  let innerBox = blessed.box({
    content: elem,
    "height": "0%+1",
    "top": "0%+"+i
  });
  outerBox.append(server);
});

如何使用鼠标滚轮滚动外框,同时仍然能够检测到对内部元素的点击?

标签: javascriptnode.jsblessed

解决方案


我通过使用列表而不是装满盒子的盒子解决了这个问题。列表是可滚动的,并且可以具有可选择的元素。


推荐阅读