javascript - d3 js中的selectAll()也可以将css样式作为参数吗?
问题描述
我是 javascript 和 d3 的新手。在处理几个示例时,我遇到了一些这样的行: var legend = svg.selectAll(".legend")
我在为散点图创建图例时看到了这一点。这是此链接中接受的解决方案的一部分
- 为什么我们将 .legend 作为参数?
- .legend 是 CSS 样式吗?
- 一般来说,我们可以将什么都作为参数传递给 selectAll()?
我已经制定了这些示例(Scott Murray 的教程),但我仍然对 selectAll 的工作原理感到困惑。任何指导/解释/阅读链接都非常感谢。
解决方案
选择与指定选择器字符串匹配的所有元素。将按文档顺序(从上到下)选择元素。如果文档中没有元素与选择器匹配,或者选择器为 null 或未定义,则返回空选择。例如,要选择所有段落:
var 段落 = d3.selectAll("p");
1)在你的例子中,.legend
是一个类选择器。它作为参数传递selectAll
给匹配所有具有 . 类的 DOM 元素legend
。
2) .legend
本身不是 CSS 样式。但它可以在 CSS 中用作选择器,将一些样式属性应用于匹配所述选择器的元素。
3) selectAll
只接受一个参数:选择器字符串。那可能只是"p"
,也可能是".content .items > li"
。
看看下面我们如何使用 CSS 和 D3 来应用不同的样式。
d3.selectAll(".highlight")
.style({
"color": "green"
})
nav a {
color: red
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<nav>
<ul>
<li><a href="#nowhere" title="Lorum ipsum dolor sit amet">Lorem</a></li>
<li><a href="#nowhere" title="Aliquam tincidunt mauris eu risus">Aliquam</a></li>
<li><a href="#nowhere" title="Morbi in sem quis dui placerat ornare" class="highlight">Morbi</a></li>
<li><a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus">Praesent</a></li>
<li><a href="#nowhere" title="Pellentesque fermentum dolor" class="highlight">Pellentesque</a></li>
</ul>
</nav>
推荐阅读
- angular - 当响应中的标识符之一是 Angular 应用程序中的数字时,我应该如何实现模型接口
- python - 从 CS50 IDE 过渡到 VS Code(导入模块不起作用)
- android - Kotlin - Spinner 片段未填充
- mongodb - 如何计算 MongoDB 上递归关系中的对象?
- r - 如何用ggplot打破轴
- sql - 范围之间的会计期间和进入日期
- javascript - 如何使用 discord.js 调用 SubCommand 的选项?(v13)
- javascript - 选择颜色后颜色输入不关闭
- spring - 如何从 Springboot REST API 动态发送响应到 WebUI?
- python - 为满足条件的每一行生成随机数