【问题标题】:Tabulator row formatting removes hover effect, while cell formatting doesn't制表符行格式删除悬停效果,而单元格格式不
【发布时间】:2020-05-11 20:51:47
【问题描述】:

我的目标是根据单元格值设置行的背景颜色。

着色适用于两者,但第一行失去了悬停效果。

Codesandbox

有没有办法让行着色表现得像单元格一样?

这样做的原因是保持交替的行颜色,同时在其上放置背景,而不会丢失悬停。

这也是这里的代码......

let data = [
  { string: "aaaaaaaaaa", number: 0 },
  { string: "bbbbbbbbbb", number: 0 },
  { string: "cccccccccc", number: 1 },
  { string: "dddddddddd", number: 1 },
  { string: "eeeeeeeeee", number: 0 },
  { string: "ffffffffff", number: 1 },
  { string: "gggggggggg", number: 0 },
  { string: "hhhhhhhhhh", number: 0 }
];

var table = new Tabulator("#example-table", {
  data: data,
  rowFormatter: row => {

    let data = row.getData();

    if (data.number === 1) {
      row.getElement().style.cssText += "background: rgba(255, 0, 0, 0.5);";
    }
  },
  columns: [
    {
      title: "string",
      field: "string"
    },
    {
      title: "number",
      field: "number",
      formatter: cell => {
        if (cell.getValue() === 0) {
          cell.getElement().style.cssText += "background: rgba(255, 255, 0, 0.5);";
        }
        return cell.getValue();
      }
    }
  ]
});

【问题讨论】:

  • 当使用 .style.cssText 时,它会替换元素上的所有 css。要仅替换背景颜色,请执行 .style.backgroundColor=red。如果这不能解决问题,请告诉我。
  • 该死,我在代码中犯了一个错误。我实际上使用了 `style.cssText += "background...",但它仍然不起作用。为什么它适用于单元格,而不是行...

标签: javascript css tabulator


【解决方案1】:

使用 css :hover 并设置 backgroundColor 应用悬停颜色。因此,当您应用 backgroundColor 内联时,您将覆盖从 css 文件应用的颜色。

您可以使用 !important 获取 css 并将其应用到您的应用 css 中,这样即使在内联样式的情况下也可以应用它。

您还可以在 mouseout/in 上使用 JavaScript 事件侦听器对其进行维护。使用虚拟 dom 可能不容易维护。我不建议尝试这样做。

要覆盖css,我相信这就是你所需要的。

.tabulator-row.tabulator-selectable:hover {
  background-color: #bbb !important;
}

这是您修改的示例。 https://codesandbox.io/s/runtime-cache-xpyy9?file=/src/index.js

【讨论】:

  • 嗯,不完全是,但给了我正确的想法。我会接受答案。这是我想要的工作示例。 codesandbox.io/s/hungry-williams-no5us?file=/src/index.js
  • 你能帮帮我吗?我无法弄清楚这种情况下的选择器,当表中有冻结列时,它对它们不起作用。 codesandbox.io/s/hungry-williams-no5us?file=/src/index.js
  • 看起来冻结单元格的背景颜色设置为继承。它应该采用父颜色,但老实说,我对 css 了解不多。也许它继承了父颜色,但不是父 :hover 颜色?不太确定。在任何情况下,类选择器都是 .tabulator-cell.tabulator-frozen:hover 用于冻结单元格上的悬停事件。 codesandbox.io/s/morning-morning-emuu0?file=/src/styles.css
  • 看起来它确实采用了父级颜色而不是父级的 :hover 颜色。如果您希望它使用父级的 :hover 颜色,请在 .tabulator-cell.tabulator-frozen:hover 选择器上执行 background-image: 继承。
猜你喜欢
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 2020-08-28
相关资源
最近更新 更多