亚洲av午夜福利精品一区人妖,亚洲乱码日产精品a级毛片久久,91精品视频观看,青草青草久热精品视频在线观看

關(guān)于圖片列表的寬度自適應解決辦法

 

 轉(zhuǎn)載藍藍設(shè)計(  m.skdbbs.com  )是一家專注而深入的設(shè)計機構(gòu) ,為期望卓越的國內(nèi)外企業(yè)提供有效的   BS界面設(shè)計 、  cs界面設(shè)計 、  ipad界面設(shè)計  、  包裝設(shè)計 、  圖標定制 、  用戶體驗 、交互設(shè)計、  網(wǎng)站建設(shè) 、平面設(shè)計服務

來源:http://www.uisheji.com/114057.html

如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中,          請點這里

從事網(wǎng)頁重構(gòu)好幾年了,Javascript能力一直比較菜,主要還是做得太少。為了提高這方面的能力,這段時間主動承擔了一些這方面的工作,真心感到學習和積累的不易,不過時常伴隨著一些解決問題之后的小小成就感又讓人樂此不疲。

在近期一個項目中,遇到一個圖片列表自適應寬度顯示的問題,需求本身并不難,借此且算是梳理和總結(jié)一下當時的解決思路吧,也期望能給有需要做這類需求而又知如何下手的同學帶來一點小啟發(fā)。實現(xiàn)的方法應該很多,如果你有更好的,要分享哦~~

關(guān)于圖片列表的寬度自適應解決辦法

需求是這樣的,在一個自適應寬度的欄目里(如圖1):

關(guān)于圖片列表的寬度自適應解決辦法

1、  欄目的寬度可以因用戶的操作發(fā)生改變,如拖拽改變窗口大小等; 
2、  當寬度改變之后,需要圖片列表總是能在欄目中完好地顯示:圖片之間有一定的間距,并且不會出現(xiàn)半張圖。 
3、  若當前寬度不能完全顯示所有圖片時,可以通過點擊左右兩邊的箭頭進行滾動顯示。如圖2:

關(guān)于圖片列表的寬度自適應解決辦法

經(jīng)過分析我們可以把需求分解為:欄目的寬度自適應、圖片列表的自適應顯示、列表的左右滾動。欄目的寬度自適應,可以直接用樣式來解決,寬度的獲取也簡單,不再多說。圖片的滾動也還好說,無非就是通過樣式改變列表的左右位置來實現(xiàn)。難點在于,在一個寬度會各種變化的區(qū)域中,怎么讓圖片列表自適應顯示呢?

對比圖1、圖2,我們發(fā)現(xiàn)前后的變化有:欄目寬度、圖片顯示個數(shù)、圖片之間的間距。寬度自適應好辦,那圖片個數(shù)和間距呢?嗯哪,這就是我們需要解決的核心問題。

1、關(guān)于可視區(qū)域

再看圖2,欄目中只有3個圖片,我們知道是因為其它部分被樣式隱藏了,而整個圖片列表其實是一直存在的一個整體。就像Flash里的遮罩一樣,我們要做的其實是按照用戶的意愿控制圖片列表的某一部分顯示給用戶看到。為便于后面好講,我們把用戶可以看到的這部分列表區(qū)域稱為列表的可視區(qū)域 。它的特點是隨著當前欄目的寬度變化而變化,如圖3:

關(guān)于圖片列表的寬度自適應解決辦法

圖片列表是死的,欄目寬度是變化的,如何讓圖片列表適應欄目寬度的變化完好顯示在可視區(qū)域里呢?好吧,你已經(jīng)想到了…答案就是通過改變圖片之間的間距來實現(xiàn)。如圖4:

關(guān)于圖片列表的寬度自適應解決辦法

那么我們可以得出: 
可視區(qū)域的寬度  = 可視區(qū)域內(nèi)可顯示的圖片寬度總和(下文稱可視圖片數(shù) ) + 圖片間距 總和

2、計算可視圖片數(shù)

事情的關(guān)鍵是顯示圖片,我們就從計算可視圖片數(shù)開始。可視區(qū)域的寬度我們可以輕易獲取,所有圖片的寬度也是統(tǒng)一的尺寸(什么?不統(tǒng)一?還好還好,我們這的產(chǎn)品經(jīng)理倒是還沒有BT到這個地步呢^^~ 這里還是先講固定的情況吧,不固定的情況下回再探討)。先忽略一下圖片間距,那么問題可以簡化為:

可視圖片數(shù)  = 可視區(qū)域?qū)挾?/ 單位圖片寬度

代碼(代碼中涉及到的html代碼請查看下文Demo):

//獲取當前可視區(qū)域的寬度
var pLstWrpWth = $('.jQ_ptLst').width();
//獲取單位圖片寬度(圖片可能包括邊框樣式等,取列表元素Li的寬度參與計算以避免誤差)
var valLstLiWth = $('.jQ_ptLst li').width();
//計算當前可視圖片數(shù)(可視區(qū)域?qū)挾?/ 單位圖片寬度 再取整)
valImgLth = Math.floor(pLstWrpWth / valLstLiWth);

3、計算圖片間距

那間距怎么計算呢?從圖4我們可以看出,除去所有可視圖片的寬度剩下的就是間距的總和。于是:

間距總和 = 可視區(qū)域?qū)挾?– 單位圖片寬度 * 可視圖片數(shù)

這樣我們就可以計算圖片間距了:

圖片間距 = 間距總和(除去可視圖片寬度的可視區(qū)域?qū)挾龋?/ 間距個數(shù)(即可視圖片數(shù)+1,為何+1?看圖4)

代碼:

//向上取整可避免小數(shù)帶來的誤差)
valpLstMg = Math.ceil((pLstWrpWth - valImgLth * valLstLiWth) / (valImgLth + 1)); 

到這里,你會發(fā)現(xiàn),其實最終需要解決的問題就是計算圖片間距。有了間距,我們就已經(jīng)能做到根據(jù)欄目寬度,完好顯示可視區(qū)域的圖片了。至于能顯示多少圖,此時我們已經(jīng)不關(guān)心了。

4、需要注意的情況

當上面計算出來的間距總和很小,或者干脆為0了… 如圖5:

關(guān)于圖片列表的寬度自適應解決辦法

像基友一樣合在一起顯然不好看~ – 此時,我們可以設(shè)定一個最小間距來解決這個問題。當計算出的間距小于這個間距時,就減少1個可視圖片,把原本屬于這個圖片的寬度分配給其余的圖片作為間距。代碼:

var pLstLesMg = 5;         //設(shè)定最小間距,即臨界間距
if(valpLstMg < pLstLesMg){
    valImgLth = valImgLth - 1;  //當間距小于臨界間距時,可視圖片數(shù)-1
    fnpLstMg();         //重新計算可視圖片數(shù)-1之后的間距
};

還有一種情況,如圖6:

關(guān)于圖片列表的寬度自適應解決辦法

可視圖片數(shù) 大于列表總圖片數(shù) 時(還有等于的情況哦),圖片總數(shù)即為可視圖片數(shù)。代碼:

var pLstImgLth = $('.jQ_ptLst').find('img').length;    //獲取圖片總數(shù)
if(valImgLth >= pLstImgLth){
    valImgLth = pLstImgLth;  //圖片總數(shù)即為可視圖片數(shù)
    fnpLstMg();      //用新可視圖片數(shù)重新計算間距
    $('.jQ_plstRoRt').hide();//隱藏向右滾動箭頭(初始化時可默認左箭頭隱藏,右箭頭顯示)
};

到這里,基本上圖片列表自適應寬度顯示就解決了,接下來就是圖片列表的滾動問題。

5、列表滾動

有經(jīng)驗的同學可能一下就想到了,問題的關(guān)鍵是要怎么判斷當前滾動的是否為最后一張圖片(啊?你是說做循環(huán)滾動?滾到最后一張無縫拼接第一張圖,如此永遠滾下去?其實,我只是想說,你們的產(chǎn)品經(jīng)理心眼真好~ 嗯好吧,看在大家都不容易的份上,我們姑且還是探討一下這種情況吧)。

那么如何知道滾到最后一張圖片了呢?我想的辦法是通過寬度計算,即:

已滾動總寬度 等于非可視區(qū)域?qū)挾?/strong> (即可視區(qū)域兩側(cè)的寬度之和)時,即不能再向右滾動了。如圖7:

關(guān)于圖片列表的寬度自適應解決辦法

代碼:

var ptLstCurMg = parseInt(pLstRoWrp.css('margin-left')); //獲取當前已滾動寬度
//當已滾動寬度 = 非可視區(qū)寬度,即已滾動至最后一圖
var ptLstRoWth = (pLstImgLth - valImgLth) * (ptLstImgMg + valLstLiWth);
if(ptLstCurMg + ptLstRoWth == 0){
    $this.hide();   //隱藏右箭頭
};

以上是向右滾的情況,向左滾時就簡單了。當已滾動寬度為0時,即是向左滾動到頭了。

//當已滾動寬度 = 0,即已滾動至最前一圖
if(ptLstCurMg == 0){
    $this.hide();   //隱藏左箭頭
};

6、綁定方法

圖片列表滾動講完了,接下來就是執(zhí)行這些方法了。為了自適應用戶適時改變窗口大小的情況,需要將自適應函數(shù)綁定到resize方法中執(zhí)行,代碼:

//一旦窗口大小發(fā)生變化即會執(zhí)行
$(window).resize(function(){
    fnAutoWth();    //自適應方法
});

啰嗦這么多,其實主要圍繞兩個問題:

a. 通過計算圖片間距控制列表的顯示

b. 通過寬度計算解決滾動至最末

OK~點擊這里是DEMO …(用瀏覽器打開之后,通過改變窗口大小,體驗圖片列表自適應效果。)

小思考 (沒看DEMO的同學可以不用思考哦~):將DEMO用瀏覽器打開后,拖動窗口至最小寬度,即當前欄目寬度小于圖片寬度時(小不動?用Chrome試試),列表中看不到圖了,為什么?如何解決呢?

整個過程其實還是挺簡單的,不知道我有沒說清楚,大家有沒聽明白?如果沒說清楚的地方正好你又感興趣,可以留言哦~親。不過,如果您是個修為高深的化神期強者,也希望多多指出不當之處啊,感謝感謝~~小可尚徘徊于筑基期~露怯…..學好JS說了好多年,想想那些年……所以,朋友,如果你也是個網(wǎng)頁重構(gòu),別光寫DIV了,有空多學學寫寫JS吧,挺有意思的呢~

話說,互聯(lián)網(wǎng)發(fā)展日新月異,各種新技術(shù)層不出窮,需要學習的東西還真多呢。。。加油~

各種學壓力大呀~ 要不,放松一下先擼一把?好吧… 小明、小純 艾歐尼亞,搞起~~~

(轉(zhuǎn)載請注明出處GDC)

日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://m.skdbbs.com

存檔

亚洲av午夜福利精品一区人妖,亚洲乱码日产精品a级毛片久久,91精品视频观看,青草青草久热精品视频在线观看
<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 国产精品免费一区豆花| 99re6热只有精品免费观看| 欧美日韩卡一卡二| 久久久夜夜夜| 欧美一区久久| 久久本道综合色狠狠五月| 亚洲影音一区| 亚洲欧美国产va在线影院| 亚洲一区二三| 性欧美暴力猛交69hd| 午夜国产精品影院在线观看| 亚洲综合日韩在线| 香蕉久久夜色精品国产使用方法| 午夜久久影院| 欧美在线视频网站| 久久综合国产精品台湾中文娱乐网| 久久久久成人精品| 美女脱光内衣内裤视频久久影院| 免费在线观看精品| 欧美精品久久久久久久久久| 欧美日韩视频在线观看一区二区三区| 国产精品二区二区三区| 国产精品自拍视频| 狠狠网亚洲精品| 91久久线看在观草草青青| 999亚洲国产精| 午夜精品美女自拍福到在线| 欧美理论电影在线播放| 亚洲视频免费在线观看| 狠狠色综合网| 亚洲国产一区二区三区高清| 最新日韩在线视频| 亚洲最新在线| 午夜精品福利视频| 久久久久久久久久久久久久一区| 美女精品一区| 欧美日韩国产成人在线免费 | 精品1区2区| 亚洲精品三级| 亚洲一区二区三区高清| 午夜一区二区三区不卡视频| 久久成人免费网| 欧美电影免费观看高清| 国产精品久久久久久久久久免费| 国产真实乱偷精品视频免| 亚洲黄页视频免费观看| 亚洲午夜在线观看视频在线| 国外精品视频| 黄色成人91| 亚洲国产老妈| 中文日韩在线| 久久亚洲电影| 欧美日韩亚洲一区二区三区| 国产婷婷色一区二区三区| 在线日韩一区二区| avtt综合网| 久久网站热最新地址| 欧美视频日韩视频| 在线观看av不卡| 亚洲一二三四久久| 蜜桃av噜噜一区二区三区| 欧美色另类天堂2015| 精品动漫av| 亚洲免费在线电影| 欧美韩国日本综合| 国内不卡一区二区三区| av不卡在线看| 老司机一区二区三区| 国产精品久久久久毛片大屁完整版| 在线观看成人av| 亚洲欧美日韩精品| 欧美精品在线极品| 一区久久精品| 午夜精品99久久免费| 欧美精品在线免费| 国产亚洲精品aa| 国产日本欧美一区二区三区在线| 亚洲电影免费观看高清| 欧美在线视频播放| 国产精品黄视频| 日韩午夜免费视频| 噜噜噜在线观看免费视频日韩| 国产精品女人网站| 亚洲精品美女免费| 国产精品人人爽人人做我的可爱| 亚洲国产老妈| 久久久久久久久一区二区| 国产精品午夜国产小视频| 亚洲乱亚洲高清| 久久尤物视频| 国产一区二区按摩在线观看| 亚洲一区欧美激情| 欧美日韩精品高清| 亚洲精品国产视频| 免费高清在线一区| 永久555www成人免费| 欧美在线亚洲| 国产乱肥老妇国产一区二 | 欧美电影免费观看高清完整版| 韩国成人福利片在线播放| 欧美一区二区三区在线| 国产精品女主播| 亚洲综合三区| 欧美性视频网站| 一本色道久久综合狠狠躁的推荐| 欧美大尺度在线观看| 亚洲成人在线视频播放| 久久久综合网| 一区二区视频在线观看| 久久久久久久久久久成人| 国产在线拍揄自揄视频不卡99| 午夜精品成人在线| 国产日产高清欧美一区二区三区| 欧美伊人久久| 韩国一区电影| 久久影院午夜片一区| 激情校园亚洲| 老色批av在线精品| 亚洲国产一成人久久精品| 欧美a级片网| 亚洲人成在线免费观看| 欧美成人激情在线| 亚洲青色在线| 欧美日韩一区二区欧美激情 | 亚洲精品视频免费在线观看| 欧美成人一区在线| 亚洲精品日产精品乱码不卡| 欧美精品二区| 亚洲国产精品成人| 久久久久国产精品一区| 精品二区视频| 欧美成年人视频网站| 亚洲国产欧美另类丝袜| 欧美国产日本高清在线| 日韩视频免费在线| 欧美日韩精品欧美日韩精品| 亚洲深夜福利视频| 国产精品日韩| 久久国产精品久久久| 尤妮丝一区二区裸体视频| 嫩草伊人久久精品少妇av杨幂| 亚洲精品国产精品国自产观看浪潮 | 欧美日韩在线精品一区二区三区| 99国内精品| 国产精品乱码人人做人人爱| 欧美在线精品免播放器视频| 狠狠久久五月精品中文字幕| 欧美在线国产精品| 亚洲国产精品热久久| 欧美日韩三级电影在线| 亚洲欧美激情四射在线日| 国产精品日韩一区二区三区| 久久国产精品久久久久久久久久| 伊人伊人伊人久久| 欧美精品网站| 欧美亚洲一区| 红桃视频一区| 欧美日韩国产丝袜另类| 香蕉av777xxx色综合一区| 在线不卡a资源高清| 欧美日韩国产成人精品| 欧美一二三区精品| 亚洲国产精品999| 国产精品第十页| 久久免费视频这里只有精品| 亚洲另类黄色| 国产精品一香蕉国产线看观看| 久久免费少妇高潮久久精品99| 亚洲人体一区| 国产精品日韩高清| 欧美激情亚洲国产| 午夜视频在线观看一区| 亚洲人成人一区二区三区| 国产精品日本精品| 欧美激情国产精品| 久久精品视频在线免费观看| 日韩天堂av| 国内久久精品视频| 欧美日韩亚洲一区二区三区四区 | 欧美一区二区视频在线观看2020 | 欧美人与禽猛交乱配视频| 亚洲中字黄色| 欧美日韩国产综合网 | 久久精品理论片| 亚洲高清在线视频| 欧美中文字幕| 夜夜嗨一区二区| 国产精品入口福利| 亚洲午夜精品久久| 亚洲国产毛片完整版| 国产麻豆成人精品| 欧美a级片一区| 亚洲欧美综合v| 国产一区二区三区黄| 欧美精品激情blacked18| 小黄鸭精品密入口导航| 国产在线精品成人一区二区三区 | 国产精品v亚洲精品v日韩精品 | 国产一区二区三区久久久久久久久 | 欧美国产欧美综合|