如何設(shè)計響應(yīng)式網(wǎng)頁中的圖片和圖庫
時間:2022-05-29 08:12:01 | 來源:網(wǎng)絡(luò)營銷
時間:2022-05-29 08:12:01 來源:網(wǎng)絡(luò)營銷
響應(yīng)式網(wǎng)頁設(shè)計已經(jīng)是如今網(wǎng)站當(dāng)之無愧的標(biāo)準(zhǔn)配置了,我們需要響應(yīng)式的技術(shù)來應(yīng)對日漸碎片化的屏幕尺寸,網(wǎng)頁設(shè)計師也力圖做好這件事情,而網(wǎng)頁中的圖片和圖庫的響應(yīng)式設(shè)計,也是其中的重點難點,它們是網(wǎng)頁中最常見,也是最直觀可見的元素。
打開一個漂亮精致的網(wǎng)站,然而其中的圖片和圖庫看起來怎么都和頁面不匹配,這樣的情況恐怕是最讓人抓狂的了。
如果要設(shè)計好響應(yīng)式的圖片和圖庫,接下來要聊的一些方法技巧,興許能給你提供一個明確而系統(tǒng)的思路,它們并不涉及到具體代碼實現(xiàn),更多牽涉到設(shè)計過程和處理手法,做好了這些工作,具體實現(xiàn)起來就不難了。
1、考慮高寬比 桌面端的圖片瀏覽體驗和移動端是完全不同的,這一點毋庸置疑。對于絕大多數(shù)的網(wǎng)站而言,圖片展示的位置都很相近,大同小異。而設(shè)計師的任務(wù),是要確保網(wǎng)站隨著屏幕和設(shè)備變化的時候,圖片的展示不會在頁面布局的伸縮變化過程中變得奇怪和失真。
這個時候,就要始終牢記圖片的高寬比,并且始終控制高寬比不會改變。
回到桌面端網(wǎng)頁中,大幅的背景圖或者置于頁面頂端的圖片看起來非常漂亮,可是當(dāng)它切換到移動端設(shè)備中的時候,首先屏幕比例和方向就不同了,那么它是否還那么好看呢?圖片被縮小之后,信息的呈現(xiàn)是否會丟失?它是否會被拉伸?
這個時候,圖片的高寬比的控制就顯得特別重要了,控制原始圖片不被拉伸,同時讓圖片所展示出來的部分的高寬比能夠盡可能合理地匹配對應(yīng)的屏幕,這樣也就不必?fù)?dān)心響應(yīng)式斷點過多,導(dǎo)致你需要上傳過多的圖片。
2、尺寸和比例的一致性 響應(yīng)式設(shè)計就不能不說斷點,為了照顧不同的屏幕,我們需要將圖片裁剪成不同比例不同尺寸的大小,而這也直接影響著整個設(shè)計與開發(fā)的設(shè)計流程。
許多人僅僅只是將圖片上傳到CMS系統(tǒng)中,就希望它能以完美的樣式呈現(xiàn)出來,這是不現(xiàn)實的!
每張圖片都應(yīng)當(dāng)被裁剪為合理的尺寸,并且放置在理想的位置上,確保它們會以用戶期望的樣子呈現(xiàn)出來,后端可能會在這件事情上花費(fèi)相當(dāng)?shù)臅r間和精力,但是這些努力是值得的。
3、使用輪播圖或者圖庫 輪播圖控件和圖庫控件是網(wǎng)站中最常見的圖片載體,并且也可以更加自如的管理圖片,尤其是當(dāng)你使用了那些比較著名或者適配范圍比較廣的第三方控件的時候,控制圖片元素的粗活重活基本上都會被這些控件接手過去。
不過,我們之前提到的圖片長寬比和尺寸大小的控制同樣也是要注意的,否則一樣會讓網(wǎng)頁的展示效果變尷尬。
除此之外,你還需要什么場合使用什么樣的控件,如果你擁有若干高品質(zhì)的圖片或者需要推薦特定的文章和專題,那么你需要使用幻燈片輪播圖控件。
如果你擁有大量有待展示的圖片,可以縮小展示也不存在可讀性問題的話,不妨使用圖庫類的控件來展示,許多作品集類的網(wǎng)站常常會使用圖庫控件(具體可查看億企邦《響應(yīng)式網(wǎng)頁圖片庫設(shè)計的基本規(guī)則和技巧》的相關(guān)介紹)。
4、只使用高素質(zhì)的圖片 雖然這個道理不言自明,但是它仍然必須反復(fù)提醒,如果你沒有高素質(zhì)的圖片,那么還不如干脆不要用圖片得了。
現(xiàn)在,高素質(zhì)、高分辨率的圖片比以往任何一個時代都顯得必需和重要,用戶不會花費(fèi)時間去看一個圖片素質(zhì)低下的網(wǎng)站,大家的屏幕都已經(jīng)是視網(wǎng)膜屏幕了,低素質(zhì)的圖片在這樣的屏幕上顯得更加無法直視。
既然大家都在追求頂尖的視覺效果,那么高素質(zhì)圖片無疑是必需品。
5、盡量避免使用圖片說明(Captions) 雖然圖片說明能夠讓你的圖片的信息更加豐富,但是它會非常直接地影響到網(wǎng)頁的運(yùn)作,盡量避免使用它們,如果實在是需要,盡量用其他的方式來呈現(xiàn)。
圖片的Caption屬性加入之后,確實能在桌面端擁有良好的渲染效果,但是小屏幕上常常問題不斷,為了不讓這些細(xì)小的可用性的問題影響用戶體驗,盡量避免使用就好了,因為這種小問題而讓用戶無法忍受并且離去,并不劃算。
6、創(chuàng)建新圖像格式 針對響應(yīng)式圖片創(chuàng)建一種新的圖像格式,該新的格式包含了幾種不同大小版本的圖片,比如100k的文件里有75k的版本、20k的版本和5k版本的圖像。
從某種意義上講就像.mp3格式那樣,該種文件格式既存儲了歌曲也存儲了歌曲的meta信息,這里的圖像版本信息就好比MP3的meta信息,然后依據(jù)既定的一組標(biāo)準(zhǔn)選擇該里面最為合適設(shè)備的一個圖片版本。
這種解決方法的缺點是必須放棄一些可控性能,新文件格式會自行決定什么時候使用哪個版本的圖片,只是當(dāng)然對于不支持該種格式的瀏覽器也失去了后向兼容(具體可查看億企邦《響應(yīng)式網(wǎng)頁設(shè)計的基本原則布局》的相關(guān)介紹)。
7、圖片和視頻混用要小心 如果網(wǎng)站中同時存在圖片和視頻類的多媒體,用戶和設(shè)計者應(yīng)該都是能夠接受的,甚至許多用戶已經(jīng)習(xí)慣了這樣的設(shè)計。
但是要注意的是,即便是在同一個頁面中,也盡量不要讓圖片和視頻同時存在于同一個控件或者區(qū)塊中,也許這樣看起來很炫酷,也許一部分圖片和視頻能夠搭配起來,但是更多的視頻和圖片很難在尺寸上保持一致,導(dǎo)致總會有一部分圖片或者視頻會留下空白和間隙。
最好的方案還是將兩者分開展示,避免了媒體屬性和尺寸上的差異與沖突,這幾乎適用于任何設(shè)計元素,而圖片和視頻尤甚。
8、削減不必要的元素 雖然輪播圖和圖庫控件非常好用,但是許多設(shè)計師常常會往其中添加許多垃圾的內(nèi)容,最常見的就是塞入一堆導(dǎo)航箭頭、按鈕、文本甚至行為召喚按鈕,這樣的例子不勝枚舉。
一般情況下,用戶其實是熟知如何同輪播圖這類控件進(jìn)行交互的,除非你的設(shè)計和我們的認(rèn)知有著巨大的差異,以至于必須使用其他的導(dǎo)航方式來引導(dǎo)用戶。
盡量只保留用戶需要的元素,把事情簡單化,不要給予太多的選擇,其實簡單化之后的設(shè)計可以提升你的轉(zhuǎn)化率(具體可查看億企邦《如何使簡單的設(shè)計變得更為簡單》的相關(guān)介紹)。
9、創(chuàng)建一個新的(html)元素 圖片響應(yīng)式化的第一步是讓它自適應(yīng),移除高、寬屬性然后設(shè)置max-width屬性為100%。然而這并不能從根本上解決問題。主要的問題在于,那樣做會不得不創(chuàng)建一張大尺寸高分辨率的圖像,很明顯這種圖片并不利于移動終端設(shè)備的接收。
一種有效的解決方法是使用新的HTML語法,告知瀏覽器應(yīng)當(dāng)使用那張合適的圖片;也許我們應(yīng)當(dāng)創(chuàng)建新的圖像格式,那樣也能解決現(xiàn)在的問題。
該方法已經(jīng)在使用了,不過在使用方式上存在一些爭議。這些爭議主要來自兩方面:業(yè)界的web開發(fā)者和瀏覽器制造者。
web開發(fā)者提議創(chuàng)建一個新的picture元素(類似HMTL5中的video這樣的元素),該元素中包含其他的圖片源,示例代碼如下:
<picture alt="image description">
<source src="/path/to/medium-image.png" media="(min-width: 600px)">
<source src="/path/to/large-image.png" media="(min-width: 800px)">
<img src="/path/to/mobile-image.png" alt="image description">
</picture>
其中的img元素是默認(rèn)情況下顯示的圖片源,在其上面的兩個source元素則是在特定媒體查詢(media queries)條件下顯示的圖片——這也是開發(fā)者所喜歡的一種解決方案。
Scott Jehl針對圖片元素創(chuàng)建了polyfill項目,就是利用了這種思想,你現(xiàn)在可是就可以使用它了。
<span data-picture data-alt="A giant stone face at The Bayon temple in Angkor Thom, Cambodia">
<span data-src="small.jpg"></span>
<span data-src="medium.jpg" data-media="(min-width: 400px)"></span>
<span data-src="large.jpg" data-media="(min-width: 800px)"></span>
<span data-src="extralarge.jpg" data-media="(min-width: 1000px)"></span>
<!-- Fallback content for non-JS browsers. Same img src as the initial, unqualified source element. -->
<noscript>
<img src="small.jpg" alt="A giant stone face at The Bayon temple in Angkor Thom, Cambodia">
</noscript>
</span>
瀏覽器開發(fā)者則是通過給img元素標(biāo)簽增加srcset屬性來解決此問題的,功能一樣,然而直覺上不好理解。
<img src="path-to-default-image.jpg" alt=""
srcset="path-to-default-image.jpg 600w 200h 1x,
path-to-another-image.jpg 600w 200h 2x,
path-to-a-third-image.jpg 200w 200h">
以srcset的一個值為例講解:
path-to-another-image.jpg 600w 200h 2x
(1)、path-to-another-image.jpg 是不言自明的,當(dāng)符合下述條件時就使用該圖片。
(2)、依據(jù)media queries要求,設(shè)備最小尺寸為600w和200h
(3)、瀏覽器有以2x像素密度顯示的能力
因此這里所表達(dá)的意思是,當(dāng)瀏覽器能夠處理2x像素圖片,且設(shè)備至少是600px寬、200px高的情況下,使用此圖片源顯示,此種解決方法從瀏覽器開發(fā)者角度看是非常合適的,畢竟能夠讓瀏覽器自己通過算法獲取設(shè)備的兼容性和像素密度。
上述兩種方法各有優(yōu)點,此篇文章也并未認(rèn)為其中一方的方法要好于另一方的。作為網(wǎng)站開發(fā)者我比較喜歡用picture元素,然而使用srcset屬性的img元素有更強(qiáng)的兼容性。這場討論現(xiàn)今仍在進(jìn)行,大多數(shù)人希望能夠找到一種吸取兩者優(yōu)點的方法。
不過為今之計,還是不得不借助現(xiàn)有的技術(shù)實現(xiàn)圖像響應(yīng)式。這些技術(shù)的思想是提供移動端版本的圖像,然后探測其是否還能處理更大的圖像,如果可以則使用Javascript腳本將更大的圖片替換默認(rèn)的小圖。
10、使用特定技術(shù)手段 上述的方法固然簡單,然而面前還未正式標(biāo)準(zhǔn)。如果你想為不同的設(shè)備提供不同的合適圖片,可以考慮使用下列多種方法之一,很多博文都將在一節(jié)篇幅中敘述所有這些技術(shù)。
我們可以模仿Filament Group的做法,他們針對Boston Globe網(wǎng)站提供響應(yīng)式圖片的做法如下:
(1)、Markup —默認(rèn)是用img元素標(biāo)簽。
(2)、javascript — 決定viewport的尺寸,將存儲在cookie中的相關(guān)信息傳給服務(wù)器,而后再改變img標(biāo)簽的src屬性。
(3)、Server — 獲取初始圖片請求,讀取cookie,如果不是移動終端設(shè)備則返回1x1大小的空白占位圖,然后等待JS腳本將真正的圖片填充進(jìn)去。
這種方式并沒有想期望中那樣完美,卻也給出了一種解決思路,可以讓其他人在上面繼續(xù)發(fā)揮。
許多后續(xù)的方法其思路與此相仿,默認(rèn)都是提供移動端圖片,繼而嘗試探測設(shè)備屬性后再發(fā)送合適大小的圖片。
Chris Coyier 和 Christopher Schmitt創(chuàng)建了一張電子表格,你可以據(jù)此作為你項目中選用何種技術(shù)的參考,Chris也基于這張電子表格寫了一篇技術(shù)文章回答大多數(shù)疑問——你應(yīng)當(dāng)使用哪種自適應(yīng)圖片技術(shù)?我在上面所提及的技術(shù)也許給你一些大概的印象,你不妨看看Chris的那篇文章和電子表格,以了解這些技術(shù)的細(xì)節(jié)實現(xiàn)。
Foresight.js是在給服務(wù)器發(fā)送請求之前用JavaScript去探測該設(shè)備是否支持高分辨率圖片,同時也探測該設(shè)備所在網(wǎng)絡(luò)的網(wǎng)速,依據(jù)探測結(jié)果才向服務(wù)器請求合適的圖片資源。
Images redux使用空白的1x1GIF(轉(zhuǎn)成base64格式),它將該圖片設(shè)置為所有圖片的初始背景或占位符,提供更好的用戶體驗,由于圖片是依據(jù)CSS設(shè)置的,所以可用media queries改變響應(yīng)樣式。
Adaptive images項目靈感來源于Filament Group重構(gòu)Boston Globe網(wǎng)站的工作。不過它需要諸如Apache 2, PHP 5.x, 和 GD 庫等的支持,好在這些工具都比較常用。該技術(shù)首先在cookie中保存屏幕分辨率,然后決定使用哪種合適的圖片尺寸。如果JavaScript和cookie被禁用了,它就檢測user agent字符串。如果發(fā)現(xiàn)“Mobile”字符,就發(fā)送最低分辨率(定義在$resolutions里)的圖片給終端,否則就默認(rèn)假設(shè)你使用大設(shè)備終端并發(fā)送高分辨率圖像。
HiSRC是一個jQuery插件,它能探測網(wǎng)絡(luò)速度與分辨率,默認(rèn)情況下只提供最小的圖片,但是HiSRC能夠探測設(shè)備更多的能力,然后提供更多不同類別的圖像。
Jeremy Keith在文章里提出Conditionally Loading Content的方法,也是關(guān)于如何向不同設(shè)備提供不同圖像。由于探測了viewport的寬度,Jeremy其實是提供了自定義的解決方案。Jeremy在后續(xù)的文章中也提出了Conditional CSS方法,展現(xiàn)了如何在前人的基礎(chǔ)上進(jìn)行改進(jìn)的方案。
億企邦點評: 我們都希望能夠搭建出讓用戶能夠操作、愿意使用的優(yōu)質(zhì)網(wǎng)站,而優(yōu)秀的圖片是其中最關(guān)鍵的元素,絕對不能疏忽。
當(dāng)你的網(wǎng)站還處于想框圖繪制階段的時候,最好將多種設(shè)備的展示效果都納入考慮中來,雖然這樣看起來有點麻煩,但是會讓后期省心很多,從長遠(yuǎn)來看是相當(dāng)值得的。
圖片響應(yīng)式和響應(yīng)式設(shè)計其實還有很長一段路要走,我還會繼續(xù)就這個話題展開敘述,下次應(yīng)該主要涉及矢量圖像方面的內(nèi)容,由于這方面的內(nèi)容和此篇文章主題關(guān)系甚微,所以就單獨展開。
關(guān)鍵詞:圖片,設(shè)計,響應(yīng)