在ionic3中如何實現隨機佈局瀑布流
這篇文章主要給大家介紹了關於ionic3實戰教程之隨機佈局瀑布流的實現方法,文中通過示例代碼和圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面一起學習學習吧。
前言
最近一段時間由於專案需要接觸到了ionic3,發現真是一個利器啊!ionic專案提供了一套豐富的圖標庫,在ionic3中也進行了升級。
公司的一個專案中由於要用到一個瀑布流的特效,找了半天竟然沒有找到相關的資源,沒有辦法,只能迎著頭皮上了~
#話不多說,先上圖
#相信看過圖片的同學都明白什麼意思了吧。對,就是瀑布流!
但是今天我們的瀑布流可不是一般的瀑布流。讓我們接著看:
自動排版
#我們的要求是做那種隨機凌亂的感覺,所以我們需要做一個機制,來將圖片選擇最優的一種排列方式來展示到頁面上,也就是保證圖片與相鄰圖片的比例是最合適的然後在實現排列.
angular4
相信這個效果如果在平常的jq插件中似乎也不難實現,確實,網路上也能搜到一些jq的插件。但是我們的技術堆疊是angular4呀~
在ng中我們的DOM操作基本上都是放在指令中的,相信用過angularjs1.x的同學並不陌生了吧~,在angular4中也是一樣。
好了,讓我們貼程式碼~
#建立指令
我們假設你已經在你的ionic中建立好了相關的元件,並且已經擁有的圖片數據,如果沒有相關基礎的同學建議大家先去看看ionic3 與angular4的入門。
這是我的一個元件html的頁面,也許眼尖的同學已經發現了我們的指令[imagr-sort]="item",對的,我們的指令是需要你目前的圖片的angular資料的。
建立一個指令ts
ionic g directive image-sort
執行建立我們的指令。
建立完了我們的自訂指令就是這個樣子,空空如也啊~
##寫我們的邏輯
1.1接收並且注入一些東西:
看圖!([[imagr-sort]="item"]);那麼我們也當然應該在指令中接收到輸入的資料;如截圖中紅色箭頭所示,我將輸入的資料保存了起來->sourceArr;
1.2實際點!圖片是從異步加載過來的!
我們先思考這樣一個問題:我們的指令是在angular資料渲染的時候就開始執行的,這個是基本大家都懂。 but!我們的圖片可都是非同步載入的呢~,所以自然而然我們要有一個圖片載入的過程:image.onload,不錯,是它~
image.onerror
,這個相信大家也看明白了吧,這個是圖片載入失敗的一個函數,我在裡面做的操作是將載入失敗的圖片從原始的DOM中,angular的數據剔除。
這裡面就用到了我們angular的渲染器this.render2();
相關功能方法大家可以去原始碼裡面看一下,基本上所有常用的Dom操作都有實作。
for循環呢是因為我們的圖片資料是多條的,所以我們要等待每一張圖片都順利的載入完成。
ps:注意在onerror與onload的函數中使用this要在imgOnlod中使用變數參考let _self = this;
圖片載入完成開始我們的改造工程
1.3將我們的適口依照網格劃分
imageStartStort()!
上圖
大家看1圖紅圈內,我是自己劃分出五個橫向網格標準,以便我們待會將圖片比例做對比。
1.4將我們的圖片定義網格佔用
#我們建立了一個陣列allImageArr=[];用於保存目前處理過的所有圖片的資料。
還記的我們之前獲得的angular的資料吧,我們透過循環它來將圖片劃分網格佔用。
我們的循環中都做了些什麼?
1.圖片的寬度而高,並且求出每張圖片的比例。
2.將所得的圖片比列與我們自己定義的網格比例進行區間劃分。
3.按照我們劃分的網格來計算出佔有網格的圖片的新的寬度,所佔網格數儲存並且記錄保存到我們的自定義的allImageArr中,並且在原有的angular資料中加入gridding數字那個記錄對應的網格數。
執行this.pictureColumnSort
方法;
我們的圖片已經分割完成了,接下來,我們來熱情的一刻~
## 1.5圖片排列,跟據網格派選最適合的鄰居~
pictureColumnSort()!上圖
#這一個過程其實也沒啥好說的,主要就是循環,查看每個圖片的網格數,將最合適的進行相鄰排序(執行下一步:goExchange函數),最後匹配不上的單獨做一個5分網格戰術出來.
格式可以是多種:3 2,1 4,1 1 3,1 3 1,2 3.。 。 。 。 。
怎麼高興怎麼來~
沒啥好說的就是循環篩選,大家看看圖就好。
1.6無序變有序,除了交換應該沒有更好的選擇了吧
#goExchange()! 上圖
這個函數中收到的repeatI與repeatA就是1.5中的雙重循環的索引,這個索引決定了我們換圖片的位置。
程式碼所示的原理就是將配對到的圖片換到我們目前圖片的後面,將原來後面的圖片補到換過來圖片的位置,有點繞可能是我的比哦打能力不好,哈哈。
至於中間的調用的過程有一點我要說明:
setTimeout(() => { _self.setHeight(angularImageList, ele); });
整個調用我也是晚班無奈的情況下才使用的,如果不加整個調用在setHeight函數中設置的angular,數據會莫名其妙的出現圖片位置更換錯誤,至今誤解,如果大佬們能看到整個有好的解決方法也分享一下。
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
#以上是在ionic3中如何實現隨機佈局瀑布流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Windows11中,「開始」功能表經過重新設計,並具有一組簡化的應用,這些應用程式排列在頁面網格中,這與它的前身不同,後者在「開始」功能表上有資料夾、應用程式和組。您可以自訂「開始」功能表佈局,並將其匯入並匯出至其他Windows設備,以根據您的喜好進行個人化設定。在本指南中,我們將討論在Windows11上匯入開始佈局以自訂預設佈局的逐步說明。什麼是Windows11中的Import-StartLayout?導入開始佈局是Windows10和更早版本中使用的cmdlet,用於將「開始」功能表的自定

Windows11在使用者體驗方面帶來了很多東西,但迭代並不完全防錯。使用者不時會遇到問題,圖示定位的變更很常見。那麼如何在Windows11中保存桌面佈局呢?該任務有內建和第三方解決方案,無論是保存當前視窗的螢幕解析度還是桌面圖示的排列。對於桌面上有一堆圖示的使用者來說,這一點變得更加重要。繼續閱讀以了解如何在Windows11中儲存桌面圖示位置。為什麼Windows11不儲存圖示佈局位置?以下是Windows11不保存桌面圖示佈局的主要原因:對顯示設定的變更:通常,當您修改顯示設定時,配置的自訂

WordPress網頁錯位現象解決攻略在WordPress網站開發中,有時候我們會遇到網頁元素錯位的情況,這可能是由於不同裝置上的螢幕尺寸、瀏覽器相容性或CSS樣式設定不當所致。要解決這種錯位現象,我們需要仔細分析問題、找出可能的原因,並逐步進行除錯和修復。本文將分享一些常見的WordPress網頁錯位問題以及對應的解決攻略,同時提供具體的程式碼範例,幫助開

當我們同時開啟多個視窗時,win7具有將多個視窗以不同方式排列然後同時顯示的功能,能夠讓我們更清晰地查看到每個視窗的內容。那麼win7窗口排列方式有幾種呢,他們分別都是什麼樣的呢,下面就跟著小編一起來看一下吧。 win7視窗排列方式有幾種答案:三種,分別是層疊視窗、堆疊顯示視窗和並排顯示視窗。當我們開啟多個視窗時,可以右鍵點擊任務欄空白處。就可以看到三種視窗排列方式了。一、層疊視窗:二、堆疊顯示視窗:三、並排顯示視窗:

如何使用HTML和CSS建立一個響應式輪播圖佈局在現代的網頁設計中,輪播圖是一個常見的元素。它能夠吸引用戶的注意力,展示多個內容或圖片,並且能夠自動切換。在本文中,我們將介紹如何使用HTML和CSS建立一個響應式的輪播圖佈局。首先,我們需要建立一個基本的HTML結構,並且加入所需的CSS樣式。以下是一個簡單的HTML結構:<!DOCTYPEhtml&g

CSS中contain的語法使用場景在CSS中,contain是一個有用的屬性,用於指定元素的內容是否獨立於其外部樣式和佈局。它可以幫助開發者更好地控制頁面佈局和優化效能。本文將介紹contain屬性的語法使用場景,並提供具體的程式碼範例。 contain屬性的語法如下:contain:layout|paint|size|style|'none'|'stric

H5中如何靈活運用position屬性在H5開發中,常會涉及到元素的定位和佈局問題。這時候,CSS的position屬性就會發揮作用。 position屬性可以控制元素在頁面中的定位方式,包括相對定位(relative)、絕對定位(absolute)、固定定位(fixed)和黏附定位(sticky)。本文將詳細介紹在H5開發中如何靈活運用position屬性

如何使用HTML和CSS創建一個響應式圖片畫廊展示佈局在當今互聯網時代,圖片畫廊展示是網頁設計中常見的佈局,可以展示各類圖片和圖像作品。為了讓使用者在不同裝置上獲得良好的瀏覽體驗,響應式設計變得越來越重要。本文將介紹如何使用HTML和CSS建立響應式圖片圖庫展示佈局,並提供具體的程式碼範例。步驟1:建立基本的HTML結構首先,我們需要建立一個基本的HTM
