【问题标题】:css data:image won't show in Firefox 58css 数据:图像不会在 Firefox 58 中显示
【发布时间】:2018-02-06 20:42:18
【问题描述】:

我无法显示数据:image svg。

在我的网站上,我使用这个 css sn-p:

        #menu > .close:before, #menu > .close:after {
            -moz-transition: opacity 0.2s ease;
            -webkit-transition: opacity 0.2s ease;
            -ms-transition: opacity 0.2s ease;
            transition: opacity 0.2s ease;
            content: '';
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-position: center;
            background-repeat: no-repeat;
            background-size: 2em 2em;
        }

#header nav ul li a[href="#menu"]:before {
                        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23f2849e%3B %7D%3C/style%3E%3Cline x1='0' y1='25' x2='100' y2='25' /%3E%3Cline x1='0' y1='50' x2='100' y2='50' /%3E%3Cline x1='0' y1='75' x2='100' y2='75' /%3E%3C/svg%3E");
                        opacity: 0;
                    }

#header nav ul li a[href="#menu"]:after {
                        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23585858%3B %7D%3C/style%3E%3Cline x1='0' y1='25' x2='100' y2='25' /%3E%3Cline x1='0' y1='50' x2='100' y2='50' /%3E%3Cline x1='0' y1='75' x2='100' y2='75' /%3E%3C/svg%3E");
                        opacity: 1;
                    }

它在 Chrome 中正确显示,过去在 Firefox 57 中也可以正确显示。但是随着 Firefox 58 的新更新,不再显示 svg 文件。所以我查看了它,在检查 Firefox 中的布局文件时,我看到上面的行被 Base64 编码为例如

background-image: url("data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PHN0eWxlPmxpbmV7c3Ryb2tlLXdpZHRoOjhweDtzdHJva2U6IzU4NTg1OH08L3N0eWxlPjxwYXRoIGQ9Ik0wIDI1SDFlMnoiIC8+PHBhdGggZD0iTTAgNTBIMWUyeiIgLz48cGF0aCBkPSJNMCA3NUgxZTJ6IiAvPjwvc3ZnPg==");

不会显示 svg 文件。我不知道如何解决这个问题。也许有人有一个想法。谢谢。

【问题讨论】:

  • 我无法复制它,您的 SVG 在我的 Firefox/58.0.1 Win64 (demo) 副本中渲染得很好。您确定错误不在其他地方吗? DOM 检查器不反映实际的源代码,它只是内存中对象的漂亮打印表示。

标签: css firefox


【解决方案1】:

您的 base64 数据似乎不正确。下面的代码对我有用 (Pen)

您还缺少content 属性。请注意它,因为它是 :before:after pesudo 元素的强制属性。

.b:before {
  content: "";
  height: 100px;
  width: 100px;
  display: block;
  background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjQsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHdpZHRoPSIxNnB4IiBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTYgMTYiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZD0iTTgsMEMzLjU4MiwwLDAsMy41ODIsMCw4czMuNTgyLDgsOCw4czgtMy41ODIsOC04UzEyLjQxOCwwLDgsMHogTTksMTJjMCwwLjU1Mi0wLjQ0OCwxLTEsMXMtMS0wLjQ0OC0xLTFWNw0KCWMwLTAuNTUyLDAuNDQ4LTEsMS0xczEsMC40NDgsMSwxVjEyeiBNOCw1LjAxNmMtMC41NTIsMC0xLTAuNDQ4LTEtMWMwLTAuNTUyLDAuNDQ4LTEsMS0xczEsMC40NDgsMSwxQzksNC41NjgsOC41NTIsNS4wMTYsOCw1LjAxNnoNCgkiLz4NCjwvc3ZnPg==");
}

【讨论】:

  • 抱歉我只贴了一个sn-p。我更新了我的原始帖子,添加了更多内容(例如内容)。但是,如果我使用您提供的沙盒(笔),我不会得到 Bse64 编码字符串的输出。
  • 我刚刚将您的base64 转换为带有此website 及其白色图像的图像。请比较下面的代码(你的)和我的,通过转换在 codepen 中给出。 data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PHN0eWxlPmxpbmV7c3Ryb2tlLXdpZHRoOjhweDtzdHJva2U6IzU4NTg1OH08L3N0eWxlPjxwYXRoIGQ9Ik0wIDI1SDFlMnoiIC8+PHBhdGggZD0iTTAgNTBIMWUyeiIgLz48cGF0aCBkPSJNMCA3NUgxZTJ6IiAvPjwvc3ZnPg==
  • 我完全不确定 Firefox 将您的 base64 编码为空白图像的说法。我已经在 Windows 10、8.1、MAC Mavericks 和 High Sierra 的 Firefox 版本 57 和 58 中对其进行了测试。在所有情况下都可以正常工作。这里是链接ibb.co/dewW6Hibb.co/i2Ff0cibb.co/bDg3Lcibb.co/fLNA0cibb.co/gLFkYxibb.co/cbJiLcibb.co/cvtTmH
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 2014-08-11
相关资源
最近更新 更多