SVG图像未显示在Webkit浏览器中

And*_*ira 3 html css mobile svg mobile-safari

我一直在编写一个主要针对iPhone的移动网站.我正在使用SVG图像,但由于某些原因,只有少数图像出现.

如果您查看下面的屏幕截图,您会看到缺少图标:

在此输入图像描述

如果您查看https://mobile.hollat​​me.com/,您可以看到该错误.您会注意到徽标没有出现在顶部.但是,如果您直接导航到https://mobile.hollat​​me.com/css/svg/logo.svg上的徽标文件,然后返回到该页面,则会显示该文件.

HTML:

<div class="profileItems">
    <a class="notificationsProfileItem" href="javascript:{}" data-loc="notifications">Notifications <span></span></a>
    <a class="neighborhoodsProfileItem" href="javascript:{}" data-loc="strolling">Strolling <span></span></a>
    <a class="streamProfileItem" href="javascript:{}" data-loc="stream">Stream <span></span></a>
    <a class="interestsProfileItem" href="javascript:{}" data-loc="interest-trends">Interest Trends <span></span></a>
    <a class="photosProfileItem" href="javascript:{}" data-loc="photos">Photos <span></span></a>
    <a class="shuffleProfileItem" href="javascript:{}" data-loc="shuffle">Shuffle Feeds <span></span></a>
    <a class="messagesProfileItem" href="javascript:{}" data-loc="messages">Messages <span></span></a>
    <a class="neighborsProfileItem" href="javascript:{}" data-loc="neighbors">Neighbors <span></span></a>
    <a class="friendsProfileItem" href="javascript:{}" data-loc="friends">Friends <span></span></a>
    <a class="settingsProfileItem" href="javascript:{}" data-loc="settings">Settings <span></span></a>
</div><!-- End profile items -->
Run Code Online (Sandbox Code Playgroud)

CSS:

.profileItems {}

.profileItems a {
    display:block;
    background-color:#F2F2F2;
    margin:0 0 0.1em 0;
    padding:1.5em 1em 1.5em 2.8em;
    color:#595959;
    font-weight:bold;
    font-size:0.8em;
    opacity:0;
}

    .profileItems a span {
        display:block;
        background:url(svg/goArrow.svg) no-repeat;
        background-size:1em;
        float:right;
        height:1.5em;
        width:1em;
        margin:-0.1em 0 0 0;
    }

.shuffleProfileItem {
    background-image:url(svg/feeds.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.notificationsProfileItem {
    background-image:url(svg/holla.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.neighborhoodsProfileItem {
    background-image:url(svg/neighborhoods.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.interestsProfileItem {
    background-image:url(svg/interests.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.messagesProfileItem {
    background-image:url(svg/message.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.photosProfileItem {
    background-image:url(svg/photo.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.neighborsProfileItem {
    background-image:url(svg/neighbors.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}

.friendsProfileItem {
    background-image:url(svg/friends.svg);
    background-repeat:no-repeat!important;
    background-size:1.8em;
    background-position:0.5em;
}

.settingsProfileItem {
    background-image:url(svg/settings.svg);
    background-repeat:no-repeat;
    background-size:1.8em;
    background-position:0.5em;
}
Run Code Online (Sandbox Code Playgroud)

met*_*ion 5

啊,你在Webkit中遇到了一个bug.如果您尝试使用CSS,则无法显示嵌入位图图像的元素,即使您对它们进行编码也是如此.要解决此问题,您需要将实际的SVG文件插入一个不可见的容器(ugh),然后将显示CSS中引用的图像.你可以做点什么......

<div class="icons">
  ... put all your svg code here
</div>
Run Code Online (Sandbox Code Playgroud)

并在您的样式表中:

.icons {
  width: 1px;
  height: 1px;
  pointer-events: none;
  opacity: 0;
  overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

您也可以只插入普通的PNG.你现在拥有的是嵌入在HTML中的嵌入在SVG中的位图,为什么不对这些位图进行矢量化,或者插入普通的PNG?