国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS原生瀑布流效果實現

2024-05-06 15:40:08
字體:
來源:轉載
供稿:網友

今天早起看了慕課的瀑布流,的確講的十分詳細,也十分的好,我在博客里也就只能給代碼加些注釋,和說一下思路。建議大家去看一下慕課的瀑布流教程,非常詳細,每一個細節(jié)都講的非常好,只要懂JS的基礎代碼,看起來應該不是多大問題,里面沒有太難得方法,但自己寫不出來還是因為思路上有問題,下面就詳細說一下幾個重點方法的代碼,建議大家去慕課詳細學習
HTML 和CSS沒有太難得地方

<div id="main">//一個main包含了整個頁面內容,box用來做一個外容器,img作為圖片容器  <div class="box">   <div class="pic">    <img src="img/0.jpg">   </div>  </div>  <div class="box">   <div class="pic">    <img src="img/0.jpg">   </div>  </div> <div>
 //CSS //這里面的填充用padding值,因為offsetHeight是包括一個padding而不包括margin的方便以后高度的測量*{ margin: 0px; padding: 0px;}#main{ position: relative;//在main上設置相對定位,在JS給box設置絕對定位,來控制圖片位置}.box{ padding: 15px 0 0 15px;  float: left;}.pic{ padding: 10px; border: 1px solid #ccc; border-radius:5px; box-shadow: 0 0 5px #ccc;}.pic img{ width: 168px;//瀑布流統一寬度但不同一高度,高度為自適應就好 height: auto;}

JS代碼

在我們寫JS代碼之前,我們需要搞明白我們需要什么方法,是否需要封裝起來調用,我們第一步要干什么,
那么我們第一步要干什么呢?我們做瀑布流首先要做的是獲取到所有小部件也就是box,我們無論做什么處理都是對box的處理或者img的處理,所以要獲取到所有的box,所以我們可以把它封裝起來

//根據class獲取元素function getByClass(parent,clsName){//傳入父元素和想要的class var boxArr=new Array//用來存儲獲取到所有class為box的元素,可以用對象的方式也可以用[]創(chuàng)建 oElements=parent.getElementsByTagName('*');//取出所有子元素 for (var i = 0; i < oElements.length; i++) {//我們需要遍歷所有的子元素  if(oElements[i].className==clsName)//如果我們找到了相應的子元素   boxArr.push(oElements[i]);//取出傳過來相等的className   //push是數組自帶的方法 }; return boxArr;返回數組}

這樣我們就得到了我們想要的class,之后該怎么辦呢,先從一個box下手,我們需要取得第一排到底有多少個元素,因為之前我們并沒有確定我們main的寬度,所以是自適應的也就是說我們把頁面縮小,我們每一排的元素也會相應的減少,為了能讓瀑布流的代碼有更好的應用性,讓不同尺寸的圖片都可以應用,所以,我們需要手動計算一排究竟可以放多少張圖片呢,那如何計算呢?
我們可以算出頁面總寬在box的寬,就OK了

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 岑巩县| 昔阳县| 虞城县| 肃宁县| 体育| 乌拉特中旗| 山东省| 油尖旺区| 陕西省| 吴桥县| 三河市| 曲沃县| 台前县| 贺州市| 东安县| 朔州市| 年辖:市辖区| 阿坝县| 平顺县| 巢湖市| 沙田区| 德化县| 平南县| 泉州市| 砚山县| 仁布县| 揭阳市| 芦山县| 陈巴尔虎旗| 嘉祥县| 沁源县| 三江| 临西县| 巧家县| 武川县| 行唐县| 上思县| 陆丰市| 丹巴县| 电白县| 宜昌市|