日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript --- 瀑布流的实现

發(fā)布時間:2023/12/10 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript --- 瀑布流的实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

說明

  • 源代碼

1. 瀑布流

  • 出現(xiàn)問題: 設計給的圖片不是同一個尺寸大小,因此不能規(guī)則的放入到給定的DOM結構中.此時,需要使用瀑布流技術來解決這個問題

  • 解決的思路: 讓圖片等寬、不等高

  • 核心: 用到了定位

img {position: absolute;left: 最小的索引 * 圖片的寬度;top: 最小的圖片的高度; }
  • 算法如下:
  • 首先獲取瀏覽器的寬度w,用w除以圖片盒子的寬度向下取整記為列數(shù): col
  • 利用數(shù)組,保存每一列當前的高度
  • 如果是第一行,則將圖片的高度保存在數(shù)組arr中
  • 如果不是第一行,取出arr中的最小值和索引,計算出絕對定位的位置.并給圖片設置絕對定位
  • 1.1 用到的API

    1.1.1 獲取當前屏幕的寬度

    • 由于每個圖片盒子還有對應的高度,因此獲取的時候,還要獲取內(nèi)邊距.
    • 在jquery中,可以通過$().outerWidth實現(xiàn)
    var screenWidth = $(window).outerWidth()

    1.1.2 給DOM元素加css樣式

    $().css({position: 'absolute',left: currLeft,top: currTop })

    1.1.3 總體代碼

    • 總體代碼如下:
    $(function() {waterFall() }) function waterFall() {// 獲取盒子var box = $('.box')// 1. 求出對應得列數(shù)// 1.1 得到當前屏幕的寬度var screenWidth = $(window).outerWidth()// 1.2 獲取每張圖片的寬度var boxWidth = $('.box').outerWidth()// 1.3 獲取當前的列數(shù)var col = Math.floor(screenWidth / boxWidth)// 2. 創(chuàng)建數(shù)組,記錄當前列數(shù)的高度var arr = []for (var i = 0; i < col; i++) {arr.push(0)}// 3. 遍歷盒子中的圖片$.each(box, function(index, value) {// 得到每一張圖片的高度var thisHeight = $(this).height()if (index < col) {// 如果是第一行將高度的存入數(shù)組中.arr[index] = thisHeight} else {// 如果不是第一行,找到數(shù)組中最小的高度和索引var currMinHeight = Math.min.apply(arr, arr)var currMinIndex = arr.indexOf(currMinHeight)// 算出距離 左側/上側 的距離var currLeft = currMinIndex * boxWidthvar currTop = currMinHeight// 將當前的圖片變?yōu)榻^對定位,放在盒子中$(this).css({position: 'absolute',left: currLeft,top: currTop})arr[currMinIndex] = currMinHeight + thisHeight}}) }

    總結

    以上是生活随笔為你收集整理的javascript --- 瀑布流的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。