SVG背景重复之间的空白间隔

19

我无法去除Illustrator CS5导出的SVG元素(作为CSS背景)之间的白色空格。

我使用简单的CSS background-imagebackground-repeat: repeat-x,但每个重复之间总是有这个白色空格。我根本没有使用background-size

这是我在Safari/Chrome上看到的情况:

white space

如果我打开SVG检查侧面是否有任何空白,什么都没有(请参见右侧窗口),它一直延伸到窗口的边缘:

no white space on separate window

我已经尝试通过文件->脚本->SaveDocsAsSVG另存为..-> SVG 在Illustrator中保存图像。

HTML

<body>
    <div class="outer">
        <div class="inner">
        </div>
    </div>
</body>

CSS

.outer {
  background-color: #7fcefb;
  height: 700px;
  background-image: url('/wp-content/themes/grizzly/assets/img/trees.png');
  background-position: center 95%;
  background-repeat: repeat-x;
}

.inner {
  background-image: url('/wp-content/themes/grizzly/assets/svg/treeshill.svg');
  height: 700px;
  background-position: center bottom;
  background-repeat: repeat-x;
}

你能贴出你的代码或链接吗?看起来某些内容可能存在轻微的边距或填充。 - user3781632
你能发布图片链接吗? - Nishanth Matha
添加了一些基本的HTML和CSS来展示设置。SVG下载 - http://s000.tinyupload.com/?file_id=02705325478483063668 - roflmyeggo
3个回答

43
如果我想的是对的,打开你的SVG文件并更改根<svg>元素,使其包含以下属性:
<svg ... preserveAspectRatio="none">
如果已经有 preserveAspectRatio 属性,只需将其更改为 "none" 并重新加载。

2
这可能是因为你的width/height属性的宽高比与viewBox属性中的宽度和高度值存在轻微差异。 - Paul LeBeau
啊,明白了!再次感谢。干杯。 - roflmyeggo
1
非常感谢,我已经在这个问题上苦苦思索很长时间了! - shan
1
非常感谢,你让我的一天变得美好! - daneczech
1
这并没有解决问题。在我能够想到的所有场景中进行测试,设置为none的重复SVG仍然在所有现代浏览器中在(看似)随机缩放级别下之间留有空白。 - TelFiRE
显示剩余3条评论

8

preserveAspectRatio="none" 对我没有用,因为它会使SVG占据其父容器的全部宽度。

相反,我使用了参数:preserveAspectRatio="xMinYMax meet",这样我就能够使用 background-repeat: repeat-x; 了。

如果需要更多信息,请参考这篇优秀的文章:A Look At preserveAspectRatio in SVG


5
使用 preserveAspectRatio="xMinYMax meet" 仍然存在间隙。但是 preserveAspectRatio="xMinYMax slice" 对我有用。 - borisdiakur

0

我不能保证这种方法总是有效或者在你的情况下有效,但你可以尝试将css背景大小指定为像素而不是百分比。这在我以前使用chrome时有效。例如:background-size: 50px 100px;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接