我创建了以下scss定义:

.regionBackgroundHighlighter
{
    .highlight
    {
        fill:#CCCCCC;
        opacity:0.5;
        stroke:black;
        stroke-width:0;
        display:inline;
        visibility:visible;
    }
}


我正在尝试将此CSS类设置为元素,如下所示,但是样式未得到应用:

d3.select(regionBackground).classed('regionBackgroundHighlighter highlight', true);


在Chrome开发者工具中,regionBackground既在其classList []中同时显示regionBackgroundHighlighter和Highlight,但实际的样式并未应用于该元素。但是,如果我传递与一级未嵌套类相同的类定义,则将按预期方式应用样式:

.regionBackgroundHighlight
{
    fill:#CCCCCC;
    opacity:0.5;
    stroke:black;
    stroke-width:0;
    display:inline;
    visibility:visible;
}

d3.select(regionBackground).classed('regionBackgroundHighlight', true);


我在上面的第一个示例中定义的css结构类型是否需要以不同的方式使用d3 classed()函数?

最佳答案

我怀疑scss这样工作。

当您像上面那样嵌套时,“ highlight”样式将应用于内部元素为“ regionBackgroundHighlighter”的任何具有“ highlight”类的元素。

您需要上述scss的结构是:

<svg>
 <g class="regionBackgroundHighlighter">
  <g class="highlight">
  </g>
 </g>
</svg>

关于javascript - d3 classed()无法与多个类一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42958220/

10-13 21:49