<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Ionic3實現圖片瀑布流布局

        來源:懂視網 責編:小采 時間:2020-11-27 22:33:10
        文檔

        Ionic3實現圖片瀑布流布局

        Ionic3實現圖片瀑布流布局:瀑布流布局是比較流行的一種網站頁面布局,視覺表現為參差不齊的多欄布局,隨著頁面滾動條向下滾動,這種布局還會不斷加載數據塊并附加至當前尾部。 瀑布流布局一般使用在網頁中,在移動端用的比較少但是也不可缺。下面就介紹一下如何在ionic3中使用瀑布流布
        推薦度:
        導讀Ionic3實現圖片瀑布流布局:瀑布流布局是比較流行的一種網站頁面布局,視覺表現為參差不齊的多欄布局,隨著頁面滾動條向下滾動,這種布局還會不斷加載數據塊并附加至當前尾部。 瀑布流布局一般使用在網頁中,在移動端用的比較少但是也不可缺。下面就介紹一下如何在ionic3中使用瀑布流布

        瀑布流布局是比較流行的一種網站頁面布局,視覺表現為參差不齊的多欄布局,隨著頁面滾動條向下滾動,這種布局還會不斷加載數據塊并附加至當前尾部。

        瀑布流布局一般使用在網頁中,在移動端用的比較少但是也不可缺。下面就介紹一下如何在ionic3中使用瀑布流布局。

        首先創建一個項目,這里不多做介紹。我們用about這個模塊來進行瀑布流的開發。

        這里先介紹一下實現的流程:

        我們先要定義一個container,在container中存在有多個box,box里面放置圖片。

        1、首先獲取container中的所有box。

        2、獲取box的寬度和屏幕的寬度。

        3、獲取在當前屏幕寬度下一行可以放置多少個box。

        4、將所有的box的高度放到一個數組當中。

        5、遍歷數組,獲取到第一行中最高度最小的box。

        6、遍歷數組的下標到達第二行的時候將第二排的首元素放在第一行的高度最低的元素下面。(比如一行放了三個box,其中第三個高度最低,那么第四個就放在第三個box的下面。)

        7、將元素放在最低元素下面后,則將第三個元素和第四個元素高度相加成為一個新的第三個元素,同樣重復即可實現。

        下面是詳細代碼

        about.html

        <ion-content>
         <div id="container">
         <div class="box" *ngFor="let image of img_data">
         <div class="box_img">
         ![]({{image.src}})
         </div>
         </div>
         </div>
         <ion-infinite-scroll (ionInfinite)="doInfinite($event)">
         <ion-infinite-scroll-content loadingSpinner="circles" loadingText="正在加載...">
         </ion-infinite-scroll-content>
         </ion-infinite-scroll>
        </ion-content>
        

        about.scss

        page-about {
         ion-content {
         #container {
         position: relative;
         .box {
         padding: 5px;
         float: left;
         .box_img {
         padding: 5px;
         border: 1px solid #cccccc;
         box-shadow: 0 0 5px #ccc;
         border-radius: 5px;
         img {
         width: 150px!important;
         height: auto;
         }
         }
         }
         }
         }
        }
        

        about.ts

        import { Component } from '@angular/core';
        import { NavController, IonicPage } from 'ionic-angular';
        @IonicPage({
         name: 'about'
        })
        @Component({
         selector: 'page-about',
         templateUrl: 'about.html'
        })
        export class AboutPage {
         img_data = [{
         src: "assets/images/a.jpg"
         }, {
         src: "assets/images/b.jpg"
         }, {
         src: "assets/images/c.jpg"
         }, {
         src: "assets/images/d.jpg"
         }, {
         src: "assets/images/e.jpg"
         }, {
         src: "assets/images/f.jpg"
         }, {
         src: "assets/images/g.jpg"
         }, {
         src: "assets/images/h.jpg"
         }, {
         src: "assets/images/i.jpg"
         }, {
         src: "assets/images/j.jpg"
         }, {
         src: "assets/images/k.jpg"
         }, {
         src: "assets/images/l.jpg"
         }, {
         src: "assets/images/m.jpg"
         }, {
         src: "assets/images/n.jpg"
         }, {
         src: "assets/images/o.jpg"
         }]
         constructor(public navCtrl: NavController) {
        
         }
        
         ngAfterViewInit() {
        
         }
         ionViewWillEnter() {
         this.getNode();
         }
         getNode() {
         let parentNode = document.getElementById("container");
         let childNodeArray: any = parentNode.getElementsByClassName("box");
         let screenWidth = document.documentElement.clientWidth;
         let childWidth = childNodeArray[0].offsetWidth;
         let num = Math.floor(screenWidth / childWidth); //獲得一排擺的個數 用Math.floor()轉換為整數
         parentNode.style.cssText = "width:" + childWidth * num + "px; margin:0 auto"; //固定container的寬并設置居中
         this.setImagePosition(num, childNodeArray);
         }
        
         setImagePosition(num, childArray) {
         var imgHeightArray = [];//定義數組用于存放所有圖片的高度
         for (var i = 0; i < childArray.length; i++) { //遍歷所有圖片
         if (i < num) {
         imgHeightArray[i] = childArray[i].offsetHeight; //取得第一排圖片的高度
         } else {
         var minHeight = Math.min.apply(null, imgHeightArray); //獲取第一排圖片中高度最小的圖片
         var minIndex = this.getMinHeight(imgHeightArray, minHeight); //函數獲得高度最小的圖片的位置
         childArray[i].style.position = "absolute"; //絕對定位圖片
         childArray[i].style.top = minHeight + "px"; //圖片距頂部像素
         childArray[i].style.left = childArray[minIndex].offsetLeft + "px"; //圖片距左的像素
         imgHeightArray[minIndex] = imgHeightArray[minIndex] + childArray[i].offsetHeight; //將最低高度的box的高度加上它下方的box高度
         }
         }
         }
        
         getMinHeight(imgHeightArray, minHeight) {
         for (var i in imgHeightArray) {
         if (imgHeightArray[i] == minHeight) { //循環所有數組的高度 讓它等于最小圖片的高度 返回i值
         return i;
         }
         }
         }
        //這里是借助ionic的上拉加載代替網頁的滾動監聽實現加載更多
         doInfinite(infiniteScroll) {
         let parentNode = document.getElementById("container");
         for (var i = 0; i < this.img_data.length; i++) {
         let divNode = document.createElement("div"); //創建div節點
         divNode.className = "box";//為節點添加box類名
         parentNode.appendChild(divNode);//添加根元素
         let subDivNode = document.createElement("div");//創建節點
         subDivNode.className = "box_img";//為節點添加類名
         divNode.appendChild(subDivNode);//添加根元素
         var img = document.createElement("img");//創建節點
         img.src = this.img_data[i].src;//圖片加載路徑
         subDivNode.appendChild(img);//添加根元素
         }
         this.getNode();
         setTimeout(() => { infiniteScroll.complete() }, 1000);
         }
        }
        
        

        最終效果:

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Ionic3實現圖片瀑布流布局

        Ionic3實現圖片瀑布流布局:瀑布流布局是比較流行的一種網站頁面布局,視覺表現為參差不齊的多欄布局,隨著頁面滾動條向下滾動,這種布局還會不斷加載數據塊并附加至當前尾部。 瀑布流布局一般使用在網頁中,在移動端用的比較少但是也不可缺。下面就介紹一下如何在ionic3中使用瀑布流布
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久综合日韩亚洲精品色| 免费国产黄线在线观看| 亚洲字幕AV一区二区三区四区| 三年在线观看免费观看完整版中文 | 亚洲精品乱码久久久久久V| 一个人免费观看视频www| 亚洲?v无码国产在丝袜线观看| 亚洲午夜精品在线| 亚洲w码欧洲s码免费| 亚洲女人18毛片水真多| 日韩亚洲人成在线综合| 9420免费高清在线视频| 婷婷综合缴情亚洲狠狠尤物| 久久精品国产亚洲AV未满十八| 国产精品无码素人福利免费| 菠萝菠萝蜜在线免费视频| 久久综合亚洲色HEZYO国产| 亚洲精品国产高清在线观看| 日韩伦理片电影在线免费观看| 亚洲电影免费观看| 成人av片无码免费天天看| 亚洲日产无码中文字幕| 无码免费一区二区三区免费播放| 亚洲国产成人久久精品99| 在线综合亚洲欧洲综合网站| 91精品国产免费入口| 亚洲国产日韩综合久久精品| 无码不卡亚洲成?人片| a级毛片在线免费| 精品国产日韩亚洲一区| 日本道免费精品一区二区| 亚洲国产成人va在线观看网址| 成全视频在线观看免费高清动漫视频下载| 亚洲国产精品无码久久九九大片| 亚洲高清视频一视频二视频三| 免费的全黄一级录像带| 亚洲国产精品无码专区| 99视频全部免费精品全部四虎| 美女被免费视频网站| 亚洲欧洲日产国产综合网| 免费国产在线视频|