SVG 和 div 之间有白色间隙

问题描述 投票:0回答:3

这不是我能找到的任何当前问题的重复。我已经尝试过诸如向 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 正确排列,但这只会使间隙出现在不同的分辨率下。

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

有多个 SVG,并且所有 SVG 都会出现此问题。

html css svg tailwind-css
3个回答
3
投票

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


0
投票

您可以将图像和以下 div 放入具有 Flex-direction 列的 Flex 中。

无弹性:

带有柔性包装纸:

.box {
  height:100px;
  background-color:#00cba9;
margin:0;  
  
}

svg{
  padding-bottom:0;
  margin-bottom:0;
  border:solid red 3px;
}

.wrapper{
  display:flex;
  flex-direction: column;
}
<div class="wrapper">
    <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320"><path fill="#00cba9" fill-opacity="1" d="M0,32L46.5,256L92.9,288L139.4,192L185.8,192L232.3,192L278.7,192L325.2,64L371.6,128L418.1,64L464.5,288L511,160L557.4,128L603.9,128L650.3,32L696.8,160L743.2,0L789.7,0L836.1,64L882.6,96L929,64L975.5,64L1021.9,32L1068.4,224L1114.8,160L1161.3,96L1207.7,224L1254.2,64L1300.6,128L1347.1,160L1393.5,0L1440,320L1440,320L1393.5,320L1347.1,320L1300.6,320L1254.2,320L1207.7,320L1161.3,320L1114.8,320L1068.4,320L1021.9,320L975.5,320L929,320L882.6,320L836.1,320L789.7,320L743.2,320L696.8,320L650.3,320L603.9,320L557.4,320L511,320L464.5,320L418.1,320L371.6,320L325.2,320L278.7,320L232.3,320L185.8,320L139.4,320L92.9,320L46.5,320L0,320Z"></path></svg>
    <div class="box"></div>
</div>


0
投票

如果这对任何人有帮助:我已经修复了 svg,我添加了

preserveAspectRatio="none"
,我尝试了负边距,但没有解决它。原来是 chrome 响应式视图中的 zoom 设置。

(看到上面哪里写着 75% 了吗?)我点击并手动将其设置为 100%,差距就消失了。有时它与 SVG 无关。希望这对某人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.