javascript - 定位 SVG 元素时如何处理浏览器异常

标签 javascript d3.js svg

我正在使用 D3 构建交互式时间线。在 SVG Canvas 周围,我放置了黑线作为视觉边框。现在,在 Firefox 和 Edge 中,当我将其 x1x2 值设置为 0 时,左边框是不可见的,而在 Chrome 中它会显示(请参阅下面的代码片段)。一种解决方案是始终将它们设置为 1,但在 Chrome 中,其他元素可以在此边框的左侧可见,这是不可取的。 如何使我的代码适应客户端浏览器? This question 询问如何检测 Chrome,但答案似乎相当老套。这里有没有办法使用特征检测?

var svg = d3.select("body").append("svg");
var w = 500, h = 200;
var padding = 50;
svg.attr("width", w)
   .attr("height", h);
var leftPadding = 0;
var leftBorderLine = svg.append("line")
  .attr("x1", leftPadding)
  .attr("x2", leftPadding)
  .attr("y1", 0)
  .attr("y2", h)
  .attr("stroke", "black")
  .attr("stroke-width", 1)
  .attr("shape-rendering", "crispEdges")
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

最佳答案

绘制线条时,笔画的 1/2 绘制在一侧,1/2 绘制在另一侧。

如果您从 0、0 到 0(例如 w)绘制它,则该线的 1/2 位于可视区域之外,因为该线在 y 方向上从 -0.5 延伸到 0.5。

尝试从边缘开始绘制笔划宽度 1/2 的线条,以便完整的线条可见。

关于javascript - 定位 SVG 元素时如何处理浏览器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538202/

相关文章:

javascript - 将 <li> 移动到另一个列表需要更新点击监听器

JavaScript 单元测试 : how do you keep track of all the tests you have written and what code coverage you have?

javascript - x >= JavaScript 中的 x 模式

javascript - 如何在 donut chart 中间加一个圆圈并在d3 js中填充?

javascript - 将平行坐标代码从 d3.js v3.5.16 移植到 4.0

javascript - SVG如何创建180度的贝塞尔曲线?

javascript - 滚动过去的 ID 添加类到导航菜单以更改当前类

java - SplitPanel 组件中奇怪的渲染 SVG 元素

javascript - 为什么 d3.js v3 在实现缩放时会破坏我的力图而 v2 没有?

javascript - 如何使用 AngularJS 禁用单击按钮并将该按钮替换为具有不同功能的另一个按钮?