当前位置: 首页 > 知识库问答 >
问题:

stroke url在Edge和IE 11 SVG中不工作

百里伟
2023-03-14

我有一个svg,它有两条路径,一条对角线和一个小圆。它们的笔画颜色引用了defsstroke=“url(#mygradient)”中的linearGradient。在Chrome,Firefox和Safari上,小圆圈呈现。但是在Edge和IE 11上,小圆圈并没有将url路径连接到线性渐变的id上,如果我将它的stroke属性更改为颜色,那么它就会呈现,但是我想使用url值。

div {
height: 100px;
width: 100px;
}
<div>
<svg viewBox="0 0 20 10" xmlns="http://www.w3.org/2000/svg">
 
  <defs>
    <linearGradient id="myGradient">
      <stop offset="1" stop-color="green" />
    </linearGradient>
  </defs>
</svg>


<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100" viewBox="0 0 26.4583 26.4583" version="1.1" id="svg8-cross-P1">
  <!-- doesn't render in Edge/IE11 -->
  <g class="animate__left-dot" fill-opacity="1" stroke="url(#myGradient)" stroke-width="2.6458" stroke-linecap="round" stroke-linejoin="round">
    <path d="m 6.4855042,19.986408 a 9.5368996,9.5368996 0 0 1 5.62e-5,-0.03275"></path>
  </g>
  <g fill="none" stroke-width="2.6458" stroke-linecap="round">
   <!-- renders -->
    <g stroke="url(#myGradient)" transform="translate(0 -.0191)">
      <path d="M 6.4855595,6.4855597 19.972772,19.972772" class="animate__right-line"></path>
    </g>
  </g>
</svg>
</div>

这里也有代码接口链接

共有1个答案

高恺
2023-03-14

按照SVG规范

当适用元素的几何图形没有宽度或高度(如水平线或竖直线的情况)时,不应使用关键字objectBoundingBox,即使由于笔画宽度为非零,因此边框计算忽略了笔画宽度,因此该线条在查看时具有实际厚度。当适用元素的几何图形没有宽度或高度,并且指定了objectBoundingBox,那么给定的效果(例如,梯度或过滤器)将被忽略。

linearGradient的默认gradientUnits是objectBoundingBox,因此如果元素没有width或Height则不应用梯度。

该元件的实际宽度和高度为5.62E-5,0.03275。Firefox和Chrome似乎都认为它的非零值足以渲染渐变,但IE/Edge却不是。然而,你是在玩火,期望真正微小的值起作用。

如果要在圆上呈现渐变,请使用circle元素绘制一个圆,并将渐变应用于圆的填充。

 类似资料:
  • 希望我们能尽快解决这个问题: 我的reactjs项目在构建和部署后,正在chrome和firefox上工作--在windows和Android上。然而,在IE、Edge和Safari(在IOS上也是chrome)上,我会得到一个带有以下错误的空白页: 对于IE:

  • 在Microsoft Edge最新版本87.0.664.60中不可用。该属性显示为已设置,但似乎没有生效。在https://www.w3schools.com/howto/tryit.asp?filename=tryhow_html_autocomplete_off上可以看到一个例子。 添加值并提交后,刷新屏幕并开始重新键入值。我发现这是我当前项目中的一个问题

  • 在我的.html中,我有一个指定一些值和一个带有2个选项的数据列表: 第一个:获取输入的值 第二个:其中I*ng表示值列表。 在Firefox和Chrome中我的列表正常显示,但在Edge/IE11中只显示一个元素。所有数据都已加载,但我需要在选项中导航以显示它们。最后,当我拥有所有元素(在导航之后)时,如果我搜索一个更具体的元素,就会显示一个灰色块。我该怎么解决这个?

  • 我正试图通过C#最小化Microsoft Edge浏览器。除了微软Edge之外,其他浏览器如Chrome、Firefox、Internet Explorer都运行良好。 有人能帮帮我吗。

  • 我试图通过AngularJS使用返回JSON的$http.post进行Web2.0 API调用,尽管这听起来很奇怪,但它在一个小时前工作过,现在不工作了,而且我没有做任何改变。该应用程序在所有其他浏览器中继续工作,只是在Edge中失败了。 编辑:忘了提到-当Fiddler打开并捕获流量时,应用程序可以工作。那是最奇怪的部分。

  • 对不起,如果这是一个愚蠢的问题,但我导入了一个字体存储在我的电脑到一个CSS文件,虽然它在Chrome工作,但它不在Microsoft Edge或Internet Explorer。我没有任何其他浏览器,所以我不能检查那些,我想知道是否有人会知道为什么。 当我进入sources时,这是显示的(还不让我嵌入图像,我很新):sources Linotte文件夹所在的文件夹与CSS工作表所在的文件夹在同