-
原理:通過計算和絕對定位的方式固定圖片位置。 特點:等寬不等高/參差不齊。 使用padding而不是margin:獲取數據塊高度,不僅數據塊本身高度,還包括數據塊間的距離;offsetHeight可以獲取padding,但不能獲取margin。查看全部
-
獲取父元素下指定類名元素。 1、創建數組 2、獲取父元素下所有標簽 3、遍歷所有標簽,若類名恰好與要查找的類名,則加入數組查看全部
-
三種方法實現瀑布流布局查看全部
-
JQ方案完整版:查看全部
-
CSS3方式的優缺點: 1、瀏覽器自動計算列數,只要設置列寬; 2、列寬隨窗口大小而改變; 3、圖片垂直排列; 4、圖片加載依然需要JS。查看全部
-
JS方式的優缺點: 1、需要計算列數; 2、橫向、順序顯示圖片。查看全部
-
CSS3多欄布局實現圖片布局查看全部
-
JQ版動態加載圖片: $(window).on("scroll", function(){ if(checkScrollSlide){ $.each(json.images, function(key, val){ var box = $("<div>").addClass("box").appendTo($("#main")), pic = $("<div>").addClass("pic").appendTo(box); // 注意把JS原生對象val轉換為JQ對象 $("<img>").attr("src", "images/"+$(val).attr("src")).appendTo(pic); }); waterfall(); } });查看全部
-
JQ版檢查是否滿足了觸發waterfall的條件: function checkScrollSlide(){ var parent = $("#main"), boxs = parent.find(".box"), lastBox = boxs.last(), lastBoxH = lastBox.offset().top + Math.floor(lastBox.outerHeight() / 2), // 最后一個數據塊露出一半高度 sTop = $(window).scrollTop(), // 獲取被卷去的高度 winH = $(window).height(); // 獲取視窗高度 return (lastBoxH < sTop + winH); }查看全部
-
JQ版圖片定位: function waterfall(){ var parent = $("#main"), boxs = parent.find(".box"), boxW = boxs.eq(0).outerWidth(), col = Math.floor($(window).width() / boxW), hs = []; parent.width(boxW * col).css("margin", "0 auto"); boxs.each(function(idx, val){ var bx = $(val), // 注意這里需要把DOM對象val轉換為JQ對象 minH = 0, minHIdx = 0; if(idx < col){ hs.push(bx.outerHeight()); } else{ minH = Math.min.apply(null, hs); minHIdx = $.inArray(minH, hs); bx.css({ "position": "absolute", "top": minH + "px", "left": (minHIdx * boxW) + "px" }); hs[minHIdx] = minH + bx.outerHeight(); } }); }查看全部
-
瀑布流布局JS方案:查看全部
-
getElementsByClassName的兼容方案查看全部
-
1、數據塊的信息應從后臺用JSON傳過來 2、動態創建的div.box、div.pic等未自動進行left和top計算,需要再次調用waterfall函數查看全部
-
檢查是否具備了加載數據塊的條件:判斷最后一個數據塊是否已到達視窗(露出的面積自定義)查看全部
-
圖片排序: for(var i=0; i<oBoxs.length; i++){ if(i<cols){ 1、獲取第一列各數據塊至頁面頂部的距離: hArr.push(oBoxs[i].offsetHeight); } else{ 2、取出各offsetHeight中的最小值: var minH = Math.min.apply(null, hArr); 3、設置第第一列以外的數據塊的left值: var idx = getMinHIndex(hArr, minH); oBoxs[i].style.position = "absolute"; oBoxs[i].style.top = minH + "px"; // oBoxs[i].style.left = w * idx + "px"; oBoxs[i].style.left = oBoxs[idx].offsetLeft + "px"; 4、重置各offsetHeight中的最小值 hArr[idx] += oBoxs[i].offsetHeight; } }查看全部
舉報
0/150
提交
取消