韓姿一 王金峰 彭禹 侯林葉 張雪玉
【摘 要】隨著移動端購物的日漸成熟以及創(chuàng)意短視頻社交軟件的興起,人們對瀑布流形式的排版布局日漸熟悉。論文從高度自適應橫向瀑布流布局的核心原理出發(fā),首先對該布局的可行性做出證明,然后利用jQuery實現(xiàn)橫向瀑布流布局效果,最后針對實際圖片尺寸存在較大差異的情況,提出進一步優(yōu)化展示的策略。
【關鍵詞】瀑布流;排版布局;頁面設計
【Keywords】waterfall flow; typesetting layout; page design
【中圖分類號】TP393.0? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻標志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【文章編號】1673-1069(2019)01-0096-02
1 引言
隨著電商行業(yè)的蓬勃發(fā)展,購物APP排版的整齊與否在競爭中起到了重要作用。為更好地滿足購物者的需求,以清晰簡潔為特點的瀑布流布局(waterfall layout)流行了起來。
最早采用此布局的網站是PINTEREST。瀑布流布局方式給網站用戶帶來了全新的體驗,所以許多大中型網站都使用了這一布局技術,諸如新浪微博微相冊、百度圖趣等,許多個人網站也加入了瀑布流布局的陣營[3]。瀑布流受用戶歡迎的原因還有矩陣特點,可以節(jié)省網絡資源,濃縮更大的圖片量,因此,在移動端布局設計中占據(jù)重要的表達方式[4]。瀑布流布局效果如圖1所示。
2 瀑布流的實現(xiàn)原理
在瀑布流布局中,所有圖片的寬相等,高度不等。每個圖片都是通過計算定位的方式來確定其在瀑布流布局中的位置。
3 jQuery實現(xiàn)瀑布流
3.1 頁面結構布局
所有的數(shù)據(jù)塊都包含在一個div中,然后為每一個小數(shù)據(jù)塊分別設置一個div,此div的功能主要是為了定義每個數(shù)據(jù)塊的距離。因為每個數(shù)據(jù)塊都有各自的樣式,所以再用一個div來包含標簽。代碼如下:
因為每個div和pin都是需要相對于div#main做絕對定位的,所以div#main需要做相對定位。鑒于要獲得每個div的高度,所以對div和pin進行填充時盡量選擇padding而不是margin,并且需要加入float屬性讓每個div在一行中顯示出來,最后對每個div、box、img進行寬度和高度設置,至此頁面布局及CSS樣式完成。CSS代碼如下:
#main{ position: relative; }
.pin{ padding: 15px 0 0 15px;float: left;}
.box{padding:5px;}
.box img{width: 200px;height: auto;}
基礎排版效果如圖2所示。
3.2 jQuery實現(xiàn)定位數(shù)據(jù)塊
瀑布流的原理是挑選每一行中最矮的圖片,在此圖片的位置下面進行新圖片的擺放。第一步;先判斷出一行能夠擺放圖片的數(shù)量,方法是獲取到整個屏幕的寬度和每張圖片的寬度,用兩數(shù)做除取整計算出一行能夠擺放的圖片數(shù)量。第二步:通過數(shù)組遍歷獲得第一行中每張圖片的高度并存入數(shù)組,通過jQuery和inArray方法返回數(shù)組中高度最小的圖片的索引值。從第二行開始,不斷把新的圖片定位到第一行高度最小的圖片下面,定位方式就是用CSS樣式設置。主要代碼如下:
function imgLocation() {
var box=$(".pin");var numArr=[];
var boxwidth=box.eq(0).width();
var num=Math.floor($(window).width()/boxwidth);//一行擺放的圖片的個數(shù);
box.each(function (index,value) { var boxHeight=box.eq(index).height();
if(index 在完成了以上代碼之后查看效果圖可以發(fā)現(xiàn)最新的圖片定位在最矮的圖片下面,數(shù)據(jù)塊定位效果如圖3所示。 3.3 動態(tài)加載圖片 瀑布流的特點是在移動滾動條的時候加載圖片,原理是獲取到最后一張圖片距離屏幕頂端的高度、窗口的高度和滾動的高度。如果當前最后一張圖片距離頂端的高度小于當前窗口的高度加上滾動條滾動的距離時開始加載圖片。主要代碼如下: $(window).on("load",function () {imgLocation(); var dataImg={"data":[{"src":"txt10.jpg"},{"src":"txt9.jpg"}]};? //數(shù)據(jù)庫中的圖片 $(window).scroll(function () { if(getsideHeight()){ $.each(dataImg.data,function (index,value) { var pin=$(" var box=$(" var img=$(" imgLocation(); } })? }) function getsideHeight(){var box=$(".pin"); var lastImageHeight=(box.last().get(0)).offsetTop-Math.floor(box.last().height()/2); var documentHeight=$(document).height();//獲取當前窗口的高度; var scroolHeight=$(window).scrollTop();//獲取滾動的距離; return (lastImageHeight 完成了動態(tài)加載圖片代碼后,當往下拖動滾動條時,理論上可以實現(xiàn)在同一個頁面中無限加載新數(shù)據(jù)塊。實現(xiàn)效果如圖4所示。 4 結論 瀑布流對于圖片的展現(xiàn)是高效而具有吸引力的,用戶一眼掃過的快速閱讀模式可以在短時間內獲得更多的信息量,而瀑布流里懶加載模式又避免了用戶鼠標點擊的翻頁操作[1]。目前,Pinterest模式已成為發(fā)展最為迅速的社會化電子商務模式之一,探討Pinterest模式下社會化電子商務網站用戶購買意愿的影響因素,不僅有利于提高網站對用戶的吸引力,而且對網站保持競爭力和穩(wěn)定發(fā)展具有一定的現(xiàn)實意義[2]。 【參考文獻】 【1】梁莉菁.基于JavaScript的瀑布流式網頁布局的設計與實現(xiàn)[J].萍鄉(xiāng)學院學報,2015,32(03):63-67. 【2】徐曉星.基于瀑布流的移動端布局設計研究[J].美術大觀,2017(07):118-119. 【3】董春俠,司占軍,張海月.瀑布流布局的多種實現(xiàn)方式及其比較研究[J].電腦知識與技術,2016,12(25):53-55. 【4】曹薇.Pinterest模式下社會化電子商務網站用戶購買意愿研究[D].天津:天津科技大學,2017.").attr("src","img/"+$(value).attr("src")).appendTo(box) });