2013-01-24 235 views
3

我一直在編寫一個主要用於iPhone的移動網站。我使用SVG來處理圖像,但由於某些原因,只有少數圖像出現。在Webkit瀏覽器中沒有顯示SVG圖像

如果你看一下下面的截圖,你可以看到有缺少的圖標:

enter image description here

如果你看看https://mobile.hollatme.com/你可以看到工作中的錯誤。您會注意到徽標沒有出現在頂部。但是,如果您直接導航到徽標文件https://mobile.hollatme.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 --> 

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; 
} 
+0

明顯的問題:你已經檢查過,以確保所有的SVG文件已上傳?你有沒有試過直接查看「缺失」圖標? – cimmanon

+0

他們都在那裏,一個奇怪的事情是,如果我訪問svgs的url,他們突然出現在他們應該在的地方。 –

+0

他們有一個尺寸?不是HTML,而是SVG內部? –

回答

5

啊,你打的是WebKit中的錯誤。即使您使用CSS進行編碼,也不會顯示嵌入位圖圖像的元素。要解決此問題,您需要將實際的SVG文件插入到不可見的容器中(呃),然後會顯示CSS中引用的圖像。你可以做一些事情,如...

<div class="icons"> 
    ... put all your svg code here 
</div> 

,並在樣式表:

.icons { 
    width: 1px; 
    height: 1px; 
    pointer-events: none; 
    opacity: 0; 
    overflow: hidden; 
} 

你也可以插入普通的PNG。你現在擁有嵌入在HTML中的SVG中的位圖,爲什麼不將矢量化這些位圖或插入普通的PNG?

+0

我明白了,當我回來時會試試這個星期一工作,他們需要是矢量,因爲它必須是所有人的一個尺寸。所以想避免使用位圖,這意味着必須有一堆不同的尺寸。感謝您的幫助 –

+0

但是,如果您將PNG嵌入到SVG中,您仍然顯示位圖,而不是矢量,因此它們不是獨立於分辨率的。將這些圖標向量化(使用inkscape或Ilustrator)並解決您的問題。 – Duopixel

+0

他們不是PNG,他們被矢量化。 –

相關問題