D3 时间轴 - 为什么刻度线在默认情况下似乎不可见
D3 time axis - why do tick marks seem to be invisible by default?
我正在使用X时间轴处理一个非常规则的图形。轴代码非常标准:
var xScale = d3.time.scale()
.domain([tlState.startdate.getTime(), tlState.enddate.getTime()])
.range([0, width]);
var xHourAxis = d3.svg.axis()
.scale(xScale)
.ticks(d3.time.hours, 6)
.tickFormat(d3.time.format("%_Hh"))
.tickSize(5,1)
.orient('bottom');
root.append('g')
.attr('class', 'axis')
.attr("transform", "translate(" + 0 + "," + height + ")")
.call(xHourAxis);
tsState.*
函数仅返回轴的开始/结束日期。我的问题:轴刻度标签可见,但我看不到刻度线。它们显然存在于 DOM 树中(<line y2="5" x2="0"></line>
(,但只有当我明确地将它们的"stroke"属性设置为非白色时,它们才会变得不可见。
我可以使用 CSS 在刻度线上设置笔触轻松解决此问题......但是,为什么它们首先是不可见的呢?我用谷歌搜索过,但没有发现任何指示刻度线的默认笔划颜色......
非常感谢任何提示,万维网
根据 SVG 规范,笔画的默认值为 none
。由于 d3 对刻度线使用路径,该路径仅显示描边而不显示填充,因此在您设置它们的样式之前不会显示任何内容。
我不知道他们为什么决定这样做;也许是为了让形状添加边框更简单一些。由于描边宽度默认为 1,因此添加边框只需要更改一个属性。如果 stroke 是除 none
之外的任何其他值,则 stroke-width 必须默认为 0(默认情况下不想给文本一个笔触!(,并且第一次设置笔画有点违反直觉:您必须知道在看到任何笔画之前将笔触宽度更改为正数。
为什么 d3 不能为我们解决这个问题? D3 的轴构建在 SVG 之上,一般来说,D3 允许您与构建在 (css/html/svg( 之上的标准非常紧密地工作。这使得将介质推向极限成为可能,但也意味着您偶尔会遇到这些问题。
相关文章:
- 在不阻止默认行为的情况下检测IE10中的缩放
- 默认情况下折叠和展开嵌套列表
- 第二组标签及其内容赢得'默认情况下t加载
- 默认情况下,在展开和折叠表时隐藏行
- 如何在默认情况下将主干视图设置为singleton
- 切换菜单仅在单击时打开,而不是默认情况下打开
- vue-js-单选按钮won't默认情况下使用v-model属性进行检查
- 如何在应用切换点击功能之前,默认情况下在页面加载时隐藏带有特定类的ul-li
- 默认情况下,在ipython笔记本中隐藏输入单元格
- 在这种情况下,调用阻止默认值
- 默认情况下,引导日期时间选取器当前日期和当前时间
- 默认情况下,jQuery 折叠项应在页面加载时折叠
- 默认情况下使用JQuery折叠表行
- 默认情况下无法预先选择所需的单选框
- jQuery默认情况下不隐藏元素
- 默认情况下在代码镜像中启动全屏
- AngularJs:默认情况下未选择单选按钮
- 默认情况下,使用贝宝自适应支付显示支付详细信息
- 默认情况下,一个模型属性等于 sail.js 模型中的另一个模型属性
- 如何在没有任何鼠标事件的情况下默认显示标记内容