上一篇 compass:圖片替換文字中,logo圖片使用的格式為png格式,而png為點陣圖類型的圖片,內容的周圍難免會出現模糊的情況(圖片放大的情況下更為明顯)。然而logo作為網站的核心角色,我們會希望logo的呈現能夠越清晰、越銳利越好,假如使用svg格式的圖片作為logo,那麼圖片不管在什麼情況下,其品質都可以受到保證。下面圖片是png與svg圖片經過放大後的比較,左邊是png格式,右邊為svg格式,我們可以很清楚地看得出來品質的差距。
[[MORE]]
以上面OHM跨界所的例子舉例,如果我們要將logo使用替換文字的技術,並且將圖片從png格式變成svg格式,我們可以使用上一篇文章中所提到的mixin來實現這個效果,程式碼如下:
.logo a {
/* 要將行內元素轉換成塊元素才能設定寬高 */
display: block;
/* 將圖片設置為svg格式 */
@include replace-text-with-dimensions("logo.svg");
}
但是這樣會有個問題,因為有些瀏覽器(ie9前)沒有支援svg格式,所以在這些無法支援svg的瀏覽器中,logo是無法顯示的。這時候要想辦法讓不支援svg格式的瀏覽器採用替代方案(使用png格式),以下是改進的程式碼:
.logo a {
/* 要將行內元素轉換成塊元素才能設定寬高 */
display: block;
/* 自動設定容器寬高,並在svg不支援情況下,使用png格式圖片 */
@include replace-text-with-dimensions("logo.png");
/* 多重背景,取消前面設定的背景,並且使用svg的圖片作為背景 */
background-image: none, image-url("logo.svg");
background-repeat: no-repeat;
/* 使背景尺寸等比縮放至容器設定的寬度與長度,讓背景始終被包含在容器中 */
background-size: contain;
}
這裡利用瀏覽器不支援svg格式也就不支援多重背景設定的特性,所以一旦瀏覽器沒有支援svg格式,那麼backgorung-image這段程式碼就不會執行,如此前面設置的png格式不會被覆蓋,這時候瀏覽器只會採用png格式來顯示。相反的,如果瀏覽器有支援svg格式,那麼多重背景的程式碼將會被執行,如此多重背景設定將覆蓋掉前面png格式的設定,此時瀏覽器將顯示svg格式的圖片。
參考資料:
- OHM跨界所(http://ohm.com.tw/ )
- compass(http://compass-style.org/reference/compass/typography/text/replacement/ )
沒有留言:
張貼留言