SVG sprite 图标背景位置在较新版本的 Chrome 中显示为关闭

Posted

技术标签:

【中文标题】SVG sprite 图标背景位置在较新版本的 Chrome 中显示为关闭【英文标题】:SVG sprite icon background position appears off in newer version of Chrome 【发布时间】:2014-08-22 11:05:19 【问题描述】:

我正在使用background-image SVG sprite,在我的 Safari、移动版 Safari、Chrome、Firefox、Opera、IE 等版本上,一切看起来都很棒。但是,对于一些我的同事拥有较新版本的 Chrome(我知道其中一位在 Mac 上使用版本 35.0.1916.153,有些在 Windows 上使用不同的较新版本)。

这是在我的所有浏览器版本中的样子:

以下是一些较新版本的 Chrome 中的外观:

html

<span class="icon icon--chat"></span>

CSS:

.icon
    background:url(data:image/svg+xml;base64,[data]);
    font-family:sans-serif;
    background-position:top left;
    background-size:cover;
    display:inline-block;
    width:100px;
    height:100px;
    padding:0;
    margin:15px;
    cursor:default;


.icon--chat
    background-position:0 4%;

当我将它放在 JsFiddle 和 Codepen 上时,完全相同的代码在我同事的浏览器中正常运行,但无论如何:http://jsfiddle.net/HgR2N/

以下是我尝试过的一些未解决问题的方法:

将背景图像从数据 URI 编码的 SVG 更改为 常规 .svg 文件 对background-position 使用像素而不是百分比 添加 font-family:sans-serif;(我在某个地方读到过可能会解决它的问题 - 不知道) 删除边距、box-sizing:border-box;

如果您对可能导致此问题的原因以及我如何解决此问题有任何想法,请告诉我 - 谢谢!

更新:我将我的 Chrome 更新到版本 35.0.1916.153,所以现在我和我的同事正在使用完全相同版本的 Mac 版 Chrome,她的版本搞砸了,而我的仍然很好......

【问题讨论】:

也许您应该将其报告为错误:code.google.com/p/chromium/issues/list 并单击“新问题”按钮 【参考方案1】:

更新:我在 svg 文件的 svg 标签上添加了preserveAspectRatio="none" 作为属性,并且修复了它!更多信息在这里:http://www.yootheme.com/support/question/6801?order=modified

【讨论】:

你为我节省了很多时间。谢谢;)【参考方案2】:

我遇到了同样的问题。我通过将background-size 设置为精确值来修复它(不使用auto)。 我最初是这样定义我的 svg sprite 的大小的:

.icon 
    background-image: url("sprite.svg");
    background-size: 4em auto;

我改成

.icon 
    background-image: url("sprite.svg");
    background-size: 4em 99em;

【讨论】:

以上是关于SVG sprite 图标背景位置在较新版本的 Chrome 中显示为关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何在较新版本的 libreoffice 中使用 unoconv

如何在较新版本的 Delphi 中嵌入 YouTube 视频?

React Native 图像未在较新版本的 iOS 上呈现

在较新版本的 Keras 中,LSTM 等效于 return_sequence = True

如何在较新版本的打字稿中处理打字稿错误 Object.ts (7053)?

在较新版本的 JSF 中,@FacesValidator 和 @FacesConverter 中的 EJB 和 CDI 注入点无法通过 OmniFaces 工作