qooxdoo中的选框模拟或小部件



qooxdoo中没有找到类似运行字符串(marquee)的东西。qx.ui.basic.Label需要在字符串过长而部件长度不够的情况下运行字符串。我会为htmlmarquee编写我自己的包装器标签,但它是不推荐的组件。我知道这可以通过CSS来实现。任何代码或简单的解决方案建议将是很好的。

这里有几个选项。

我发现选框很烦人,让人分心,所以我更喜欢使用的替代方法是包含完整文本的工具提示,以便鼠标悬停将显示它:

let doc = this.getRoot();
let text = "This is a test of the emergency broadcasting system. This is only a test.";
let label = new qx.ui.basic.Label(text);
label.set(
{
width       : 100,
toolTipText : text
});
doc.add(
label,
{
left : 100,
top  : 50
});

在很久以前,我们有一个marquee的演示,但我很确定它是用JavaScript计时器实现的。短期内,当<marquee>标签仍然在所有标准浏览器中工作时,您可以简单地像这样使用它:

let doc = this.getRoot();
let text = "This is a test of the emergency broadcasting system. This is only a test.";
let label = new qx.ui.basic.Label(`<marquee>${text}</marquee>`);
label.set(
{
width       : 100,
rich        : true,
toolTipText : text
});
doc.add(
label,
{
left : 100,
top  : 50
});

当使用rich时,我会注意text是消毒的。你是对的,尽管它被弃用了,你应该朝着一个符合标准的实现努力。

最后,您可以实现一个选框样式表,如https://www.w3schools.in/css3/css-marquee或许多其他地方所描述的,通过为它添加一个样式表(查看_createStyleSheet() for an example of creating a style sheet方法中qx.ui.table.cellrenderer.Abstract的源代码),然后操作标签的label.getContentElement().getDomElement()的属性。

最新更新