Javascript D3时间轴-为什么记号在默认情况下似乎不可见?

Javascript D3时间轴-为什么记号在默认情况下似乎不可见?,javascript,d3.js,Javascript,D3.js,我正在用X时间轴绘制一个非常规则的图形。 axis代码非常标准: var xScale = d3.time.scale() .domain([tlState.startdate.getTime(), tlState.enddate.getTime()]) .range([0, width]); var xHourAxis = d3.svg.axis() .scale(xScal

我正在用X时间轴绘制一个非常规则的图形。 axis代码非常标准:

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树中(
),但只有当我显式地将它们的“stroke”属性设置为非白色时,它们才会不可见

我可以很容易地解决这个问题,使用CSS设置记号上的笔划。。。但为什么它们一开始是看不见的呢?我在谷歌上搜索过,但没有找到任何指示记号默认笔划颜色的东西

非常感谢你的提示, wwwald

根据,笔划的默认值为
none
。由于d3为记号使用了一条路径,该路径只显示一个笔划而不显示填充,因此在对它们进行样式设置之前,不会显示任何内容

我不知道他们为什么决定这样做;也许可以让在形状上添加边框变得简单一点。由于笔划宽度默认为1,因此添加边框只需要更改一个属性。如果笔划是除
none
之外的任何其他值,笔划宽度必须默认为0(默认情况下不希望给文本一个笔划!),并且第一次设置笔划会有点违反直觉:在看到任何笔划之前,您必须知道将笔划宽度更改为正数


为什么d3不能为我们解决这个问题?d3的axis构建在svg之上,通常d3允许您与构建在其之上的标准(css/html/svg)密切合作。这使得将媒体推向极限成为可能,但也意味着您偶尔会遇到这些问题

谢谢你的回答,现在事情变得更有意义了。奇怪的是,我并没有在网上找到答案,我几乎不是第一个被这个问题弄糊涂的人。。。至少,我希望我不是:-)对我来说,即使将
stroke
设置为非白色也不会显示任何内容:(我可以看到DOM树中有记号标记。@Ciwan请确保svg的大小足以包含轴。在我的情况下,我没有指定宽度/高度属性,svg的默认值为300x150。由于我的轴被转换为(0400),因此即使元素在DOM中,它也不可见