jQuery實現(xiàn)動態(tài)加載瀑布流
jquery實現(xiàn)瀑布流,供大家參考,具體內(nèi)容如下
案例分析
- 首先,它的每個圖片是等寬的
- 其次,除第一排正常顯示其余的圖片都會顯示在上一排中高度最小的那個圖片的下面
- 最后,就是根據(jù)最矮圖片所在位置的寬高來,決定絕對定位設(shè)置圖片顯示的位置
效果圖

實現(xiàn)步驟
html結(jié)構(gòu)
<div class="container"> <div class="box"> <div class="content"><img src="./image/1.jpg" alt=""></div> </div> <div class="box"> <div class="content"><img src="./image/2.jpg" alt=""></div> </div> <div class="box"> <div class="content"><img src="./image/3.jpg" alt=""></div> </div> </div> </div>
css樣式
具體就是對每個boxdiv浮動并設(shè)置樣式
* {
padding: 0;
margin: 0;
}
.box {
position: relative;
float: left;
margin: 10px;
}
.content {
padding: 15px;
border: 1px solid #ccc;
box-shadow: 0 0 5px #ccc;
border-radius: 10px;
}
.content img {
width: 200px;
height: auto;
}
js(jquery)代碼
主要是根據(jù)一排中高度最小的寬度個高度進(jìn)行絕對定位的設(shè)置
<script>
$(function () {
//jQuery代碼
imgLocation()
function imgLocation() {
var box = $('.box')
var num = Math.floor($(window).width() / box.eq(0).width())
var boxHeights = []
box.each(function (index, value) {
var boxHeight = box.eq(index).height()
if (index < num) {
boxHeights[index] = boxHeight
} else {
var minHeight = Math.min.apply(null, boxHeights)
var minIndex = $.inArray(minHeight, boxHeights)
$(value).css({
'position': 'absolute',
'top': minHeight,
'left': box.eq(minIndex).position().left
});
boxHeights[minIndex] += box.eq(index).height()
}
})
}
})
</script>
根據(jù)鼠標(biāo)的滾動動態(tài)的加載圖片
案例分析
這里的動態(tài)是主要是模仿動態(tài)加載數(shù)據(jù)(偽動態(tài))
- 首先,根據(jù)鼠標(biāo)滾動的大小和界面的高度判斷是否要動態(tài)加載
- 其次,就是訪問數(shù)據(jù),并動態(tài)形成jquery數(shù)據(jù)類型
- 最后,把生成的數(shù)據(jù)追加的.container中進(jìn)行顯示
效果圖

實現(xiàn)步驟
- html和css的代碼都一樣這里就不重復(fù)寫了
- js代碼
主要是判斷什么時候新增圖片數(shù)據(jù),新增后插入到模板就行了
其中的dataImg就是模仿的假數(shù)據(jù)
var dataImg = { 'data': [{ 'src': '1.jpg' }, { 'src': '2.jpg' }, { 'src': '3.jpg' }, { 'src': '4.jpg' }] }
window.onscroll = function () {
if (scrollside()) {
$.each(dataImg.data, function (index, value) {
var html = `<div class="box">
<div class="content"><img src="./image/${value.src}" alt=""></div>
</div>`
$(html).appendTo($('.container'))
})
imgLocation()
}
}
function scrollside() {
var box = $('.box')
var lastboxHeight = box.last().get(0).offsetTop
var documentHeight = document.body.scrollHeight + 130
var scrollHeight = $(document).scrollTop()
console.log(lastboxHeight, scrollHeight, documentHeight)
return (lastboxHeight < scrollHeight + documentHeight) ? true : false
}
oxHeight, scrollHeight, documentHeight)
return (lastboxHeight < scrollHeight + documentHeight) ? true : false
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jquery+json實現(xiàn)動態(tài)商品內(nèi)容展示的方法
這篇文章主要介紹了jquery+json實現(xiàn)動態(tài)商品內(nèi)容展示的方法,涉及jQuery操作及解析json格式數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下2016-01-01
用jquery和json從后臺獲得數(shù)據(jù)集的代碼
最近正在用ajax無刷新做網(wǎng)站,發(fā)現(xiàn)數(shù)據(jù)很好傳輸,但是數(shù)據(jù)集不知道怎么獲得,于是,上網(wǎng)查了一些資料來傳輸數(shù)據(jù),現(xiàn)在和大家分享一下,不知道的童鞋可以和我一起學(xué)習(xí),知道的請指點一二。我選擇的方法是用json 來獲取數(shù)據(jù)集2011-11-11
JQuery異步加載無限下拉框級聯(lián)功能實現(xiàn)示例
這篇文章主要介紹了JQuery異步加載無限下拉框級聯(lián)功能的實現(xiàn),需要的朋友可以參考下2014-02-02
精心挑選的12款優(yōu)秀的基于jQuery的手風(fēng)琴效果插件和教程
當(dāng)你想在有限的頁面空間內(nèi)展示多個內(nèi)容片段的時候,手風(fēng)琴(Accordion)效果就顯得非常有用,它可以幫助你以對用戶非常友好的方式實現(xiàn)多個內(nèi)容片段之間的切換。借助流行的 jQuery 框架,只需很少的代碼就可以實現(xiàn)精美的手風(fēng)琴效果,幫助你的網(wǎng)站吸引更多用戶的眼球2012-08-08
淺談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對象的方法
下面小編就為大家?guī)硪黄獪\談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對象的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
jQuery實現(xiàn)標(biāo)簽子元素的添加和賦值方法
下面小編就為大家分享一篇jQuery實現(xiàn)標(biāo)簽子元素的添加和賦值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02

