在直播軟體搭建中有哪些可以實現瀑布流的的方法?
介紹
正文
columns: column-width column-count;
<ul class="img-wrapper"> <li><img src="./image/1.jpg" alt=""></li> <!-- ... ... ... --> <li><img src="./image/20.jpg" alt=""></li></ul>
.img-wrapper{ column-count: 4; column-gap: 10px; counter-reset: count; width: 960px; margin: 0 auto;}.img-wrapper>li{ position: relative; margin-bottom: 10px;}
.img-wrapper>li>img{ width: 100%; height: auto; vertical-align: middle;}.img-wrapper>li::after{ counter-increment: count; content: counter(count); width: 2em; height: 2em; background-color: rgba(0,0,0,0.9); color: #ffffff; line-height: 2em; text-align: center; position: absolute; font-size: 1em; z-index: 2; left: 0; top: 0;}
.img-wrapper{ display: flex; flex-wrap: wrap; flex-direction: column; height: 1300px;}.img-wrapper>li{ position: relative; width: calc(100% / 4); padding: 5px; box-sizing: border-box;}
.img-wrapper>li:nth-child(4n+1){ order: 1;}.img-wrapper>li:nth-child(4n+2){ order: 2;}.img-wrapper>li:nth-child(4n+3){ order: 3;}.img-wrapper>li:nth-child(4n){ order: 4;}
import Waterfall from "./js/Waterfall" window.onload = new Waterfall({ $el: document.querySelector(".img-wrapper"), count: 4, gap: 10})
export default class Waterfall { constructor(options) { this.$el = null; // 父容器 this.count = 4; // 列數 this.gap = 10; // 間距 Object.assign(this, options); this.width = 0; // 列的寬度 this.items = []; // 子元素集合 this.H = []; // 儲存每列的高度方便計算 this.flag = null; // 虛擬節點集合 this.init(); } init() { this.items = Array.from(this.$el.children); this.reset(); this.render(); } reset() { this.flag = document.createDocumentFragment(); this.width = this.$el.clientWidth / this.count; this.H = new Array(this.count).fill(0); this.$el.innerHTML = ""; } render() { const { width, items,flag,H,gap } = this; items.forEach(item => { item.style.width = width + "px"; item.style.position = "absolute"; let img = item.querySelector("img"); if(img.complete){ let tag = H.indexOf(Math.min(...H)); item.style.left = tag * (width + gap) + "px"; item.style.top = H[tag] + "px"; H[tag] += img.height*width/ img.width + gap; flag.appendChild(item); } else{ img.addEventListener("load", () => { let tag = H.indexOf(Math.min(...H)); item.style.left = tag * (width + gap) + "px"; item.style.top = H[tag] + "px"; H[tag] += img.height*width/ img.width + gap; flag.appendChild(item); this.$el.append(flag); }) } }) this.$el.append(flag); }}
思考
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2795131/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在直播軟體搭建中,實現圖片瀑布流效果?
- vue實現瀑布流Vue
- 卡片瀑布流實現
- css實現瀑布流CSS
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- 原生 js 實現瀑布流佈局、React 版本的瀑布流佈局元件JSReact元件
- 瀑布流簡單實現
- jQuery實現瀑布流佈局jQuery
- 流媒體軟體系統可實現哪些功能IPTV?
- UIColletionView瀑布流佈局實現思路以及封裝的實現UIView封裝
- 網路直播平臺搭建,瀑布流佈局完美解決方案
- 記錄:瀑布流最佳實現方案
- Android瀑布流照片牆實現,體驗不規則排列的美感Android
- 談談實現瀑布流佈局的幾種思路
- 直播軟體搭建,Android實現文字滾動播放效果Android
- 純CSS實現瀑布流,你會嗎?CSS
- 自定義collocationViewLayout實現多區瀑布流View
- 三維視覺化設計軟體,可以實現資料視覺化的軟體有哪些視覺化
- iOS瀑布流初體驗iOS
- UICollectionView 瀑布流的使用UIView
- 原生 JS 實現一個瀑布流外掛JS
- 瀑布流佈局實現程式碼詳解
- 可以翻譯ppt文件的軟體有哪些?
- Material Design之RecyclerView基本講解與瀑布流的實現Material DesignView
- css3實現的瀑布流佈局程式碼例項CSSS3
- 直播軟體搭建,通過Android DrawerLayout實現側邊欄功能Android
- nginx+ffmpeg搭建流媒體伺服器(直播流)Nginx伺服器
- 直播軟體搭建,canvas文字加粗Canvas
- 頁面白屏與瀑布流分析方法
- 直播軟體搭建,利用原生JS實現回到頂部以及吸頂效果JS
- ionic3實戰-隨機佈局瀑布流實現隨機
- iOS專案開發實戰——使用UICollectionView實現瀑布流iOSUIView
- RecycleView瀑布流header向上滑動時tab固定在頂部實現方法ViewHeader
- 企業搭建直播平臺的實際作用有哪些
- 直播搭建中的流媒體傳輸系統的核心乾貨
- 教你實現,搭建直播影片app原始碼的賬號體系APP原始碼
- Bootstrap實戰 - 瀑布流佈局boot
- python集合中有哪些方法Python