11

我使用 svg 图像作为背景,并通过背景大小拉伸 SVG 图像。我希望它仅在宽度上拉伸。它在 Firefox、IE9 + 但 chrome 中工作得非常好。请建议我如何实现它。

.homecallouts ul li {
background-image: url('blue_arow_callout.svg');
background-size: 100% 100%;
width: 21%;
height: 42px;

参见 jsbin 代码 http://jsbin.com/uvijuc/4/

当我在 Firefox 中调整大小时,仅宽度拉伸,但在 chrome 中,宽度和高度都在拉伸。我只想拉伸宽度。

4

5 回答 5

20

也许添加 preserveAspectRatio="none" 在 SVG 文件中打开标签会有所帮助?

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="282.05px" height="61.974px" viewBox="286.287 26.514 282.05 61.974" enable-background="new 286.287 26.514 282.05 61.974"
     xml:space="preserve" preserveAspectRatio="none">
<polygon fill="#0063AF" points="538.337,26.514 286.287,26.514 316.287,57.5 286.287,88.488 538.337,88.488 568.337,57.5 "/>
</svg>

JSBin 示例

于 2013-07-05T15:39:05.357 回答
6

我没有足够的声誉来投票或发表评论,所以只有再次回答才行。我通过添加 preserveAspectRatio="none" 解决了类似的情况。

<svg
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"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="591.42859"
height="250.24918"
id="svg2"
version="1.1"
preserveAspectRatio="none"
inkscape:version="0.48.2 r9819"
sodipodi:docname="background.svg">
于 2014-09-02T19:58:20.633 回答
1

不要使用背景大小。您需要做的是在您的 SVG 文件中具有以下宽度、高度和 preserveAspectRatio 值。

<svg width="100%" height="100%" preserveAspectRatio="xMidYMid slice" viewBox="..." />

请注意,为了使其正常工作,您的 SVG 还需要有一个有效的 viewBox。它似乎确实做到了。

于 2013-07-10T15:51:21.053 回答
1

这是一个 Chrome 错误。事实上,回归。

http://code.google.com/p/chromium/issues/detail?id=113414

于 2013-08-02T17:57:41.697 回答
0

我认为从技术上讲 chrome 在这个上是正确的,你需要将你的背景大小值调整到你真正想要的值。将它们保持在 100% 会迫使纵横比保持不变。

于 2013-07-05T14:58:59.387 回答