When I use a SVG image as the tiled background for the body of my page, there is a slight gap between the tiles. If I switch to the PNG version of the file, it does not happen.
I am using the latest version of Google Chrome for Mac – version 19.0.1084.56. I haven’t tested Windows because I don’t have that platform. File works as expected in Safari and FF.
After a bunch of Google searches and searching here on SO I haven’t found any similar reports. Maybe someone here has a solution.
Here is my test code:
<!DOCTYPE html>
<html>
<head>
<title>SVG background test</title>
<style type="text/css">
body {
background-color: #FFF;
background-image: url(img/assets/background.svg);
background-repeat: repeat;
}
</style>
</head>
<body>
</body>
</html>
This turned out not just to be happening it Chrome, but it was more noticeable in that browser. As I posted above, here is the solution: After reading a solution for a slightly different Chrome/svg problem I figured out the answer. Posting back here in case someone else runs across this issue. I created my SVG file in Illustrator. Apparently my artboard/image size was not in precise pixels. I discovered this by opening my SVG file in a text editor and looking at the top of the file I saw this :
width="229.9999px" height="147.4256px"
I opened the svg file in illustrator and made sure that the dimensions were exactly even pixels, then double checked again in the text file. Corrected dimensions were:
width="230px height="148px"
For some reason simply editing the values in the text file did not work for me, but then again it was faster to just fix in Illustrator than figure out how to edit the svg text file correctly. At any rate, now I do not have a gap in my tiles. Hope that helps someone else if they are having this problem.
There are four things to look for (this answer is for other people who end up here looking for a solution):
Making sure the
height
andwidth
are integers aka "without a fractional component" (as mentioned by Violet, no decimals)
Example:height="326.25"
vsheight="326"
Making sure your
viewbox
is also integers
ExampleviewBox="0 0 306.25 753"
vsviewBox="0 0 306 753"
And if you have a viewport, you can also set the
preserveAspectRatio
attribute
Learn More On MDNAnother thing to pay attention to is have the height and width attribute set in the
svg
tag. This addresses an IEbackground-size
sizing problem. This is a good article about it.
In my situation, the SVG repeated correctly in Chrome, but had a gap in Firefox until I set all my attributes to integers.
It's not a problem of width or height. It appears even if your svg pattern is 100px x 100px and have no decimal.
You can resolve the problem putting preserveAspectRatio="none" in your svg file as it : <svg preserveAspectRatio="none" ...>
But when you want to repeat a svg pattern you can't choose this option because your pattern will be distorted.
Have you found the answer ?
来源:https://stackoverflow.com/questions/11201248/background-image-tiles-have-gap-between-them-when-using-svg-image-how-to-solve