【问题标题】:White gap between SVG and divSVG 和 div 之间的空白
【发布时间】:2021-02-12 11:16:50
【问题描述】:

这不是我能找到的任何当前问题的重复。我已经尝试过诸如向 SVG 元素添加 block/flex 之类的答案,但我相信这是一个不同的答案。

如果有任何相关性,我正在使用 Tailwind。

这是存在此问题的多个不同 SVG 之一:

<svg style="width: 100%" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" y="0px" x="0px" xml:space="preserve" version="1.1" viewBox="0 0 1917.4503 99.737572" id="Untitled-Page%201">
    <metadata id="metadata64">
      <rdf:rdf><cc:work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type><dc:title></dc:title></cc:work></rdf:rdf>
    </metadata>
    <defs id="defs62">
      <clipPath id="clipPath83" clipPathUnits="userSpaceOnUse">
        <rect y="4.6582928" x="1.9868355" height="520.61298" width="1913.6428" id="rect85" style="fill: #0000ff; fill-rule: evenodd"></rect>
      </clipPath>
      <clipPath id="clipPath101" clipPathUnits="userSpaceOnUse">
        <rect y="2.0105031" x="1.6986296" height="99.737572" width="1917.4503" id="rect103" style="fill: #0000ff; fill-rule: evenodd"></rect>
      </clipPath>
    </defs>
    <g transform="translate(-1.6986296,-2.0105031)" clip-path="url(#clipPath101)" id="g79">
      <path id="110" d="m -92.8182,485.3333 c 148.4834,-10.021 80.7045,-8.8997 264.4613,-8.8997 211.3321,0 442.2889,49.5664 666.4687,49.5664 255.8733,0 518.9805,-59.2854 737.5684,-59.2854 335.3557,0 441.894,29.1565 441.894,29.1565 L 2035,256 c 0,0 -38.1606,11.5786 -106.04,22.415 L 1919,33.9229 c 0,0 -67.2518,32.8281 -278.9438,32.8281 C 1502.0735,66.751 1335.988,0 1174.4691,0 1032.9564,0 887.1659,55.8081 753.7633,55.8081 619.0213,55.8081 489.1034,1.0942 387.7024,1.0942 230.6074,1.0942 -14,33.9229 -14,33.9229 l -0.0303,192.3195 c 0,0 -30.8519,-4.4524 3.0303,-5.3425 v 77.905 c -115.2449,9.8118 -4.7734,-2.7802 -103.0303,4.7102" fill="#4d5061"></path>
    </g>
  </svg>

我有多个 SVG 元素用于创建类似波浪的效果。在下图中,您可以看到顶部是 SVG,在其下方可以看到内容的背景。

此问题仅在某些分辨率下出现,线条的粗细在看起来是半个像素到 1 个像素的高度之间变化。

当 SVG 内联或作为 IMG 时,都会发生这种行为。 SVG 本身的样式设置为 100% 宽度,高度设置为自动。

我注意到调整视图框可以让 SVG 正确对齐,但这只会使间隙出现在不同的分辨率下。

我需要一个解决方案,让这个 Wave SVG 在所有设备上都平齐,没有像素间隙,并且最好能解释为什么它会这样,因为我已经为此苦苦挣扎了太久。

有多个 SVG,所有的 SVG 都会出现这个问题。

【问题讨论】:

  • 能把wave svg和背景的css贴上来吗?
  • 我见过这个,你有一个元素,它画在同一个元素旁边,相距正好 0 像素。由于某些浏览器的渲染问题,可能会出现像素间隙。一种补救方法是让两个元素彼此重叠一个像素。在您的情况下,也许只是简单地在下部顶部绘制第二个矩形,并使其比下部高 1 个像素。我希望这是有道理的。
  • @Sivak 好主意。通过为每个添加 -1px 顶部/底部边距来解决我的问题。谢谢

标签: html css svg tailwind-css


【解决方案1】:

通过在 SVG 元素的顶部或底部添加 -1px 边距以将元素重叠在一起来解决此问题。

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 2021-02-17
    • 2012-09-25
    • 2015-04-09
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多