對于部分產品結構非常復雜的客戶來說,無限級伸縮可折疊菜單顯得非常實用。百度智能小程序要實現理論上的無限級伸縮折疊菜單,除了小程序開發自定義遞歸組件外,還需要數據源本身支持或根據遞歸思路開發并轉化為JSON,還需要通過樣式表進行控制,最后根據用戶的操作習慣,定制對應的展開和折疊JS特效。
我們在網上查了很多資料,可能有這方面的需求的客戶很少,所以暫時沒有找到更好的實現方案。于是創絡通過前后端同事配合,開發完成了這個功能。接下來我們將實現思路分享給大家,希望對你有所幫助。
一、構造遞歸JSON數據源,以PHP為例,需要在數據庫開發解決就要考慮無限級需求,即采用遞歸思想設計MySQL數據庫。然后同樣的,通過PHP遞歸讀取數據并存進多維數組。如果后期需要精細化控制不同級別的樣式,則可以通過自定義函數為每一個元素標注默認展開或折疊標記、層級深度標記、是否有下級元素、直接下級元素數量標記等,最終可以參考以下結構構造函數,但只是僅供參考,具體請根據您自己的需求構造JSON數據源。
二、使用Component構造小程序遞歸組件。構造的方法不同的小程序品牌可能略微有一點差別,但是基本上都是一樣的,具體使用方法可以參考文檔自行構造,基本上都是在Component中使用servant來實現遞歸,此處不再贅述。
三、前端控制樣式,樣式控制代碼和做網站的CSS幾乎一致,唯一需要考慮的是雖然理論上是無限級,但是界面上幾乎不可能,因此,建議默認控制最小級別的顯示效果,然后再單獨針對需要特別顯示的級別進行樣式控制。
四、JS控制展開或折疊,這里推薦搭配使用scroll-view組件來實現,具體請參考官方文檔。
最后我們來看一下實現的動態效果,由于GIF圖片略大,且部分小程序終端目前可能會不支持GIF圖片,因此建議在電腦端查看動態效果。也可以手機百度APP里面搜索“創絡科技網站建設”,打開小程序真實體驗。這個小程序是標準版網站的原生開發的,里面的數據均為演示,展示效果為主。