屏幕佈局
> Trello板的屏幕由應用程序欄,一個板欄和包含卡列表的部分組成。我將使用以下標記骨架來構建此結構:
將通過CSS網格實現此佈局。具體而言,一個3×1網格(即一列和三行)。第一行將用於應用程序欄,第二行是董事會欄,第三行是.LAM元素。
前兩行的高度固定,而第三行將跨越可用的視口高度的其餘部分:
>將網格格式上下文分配給容器,並定義了上面指定的網格行和列。更確切地說,僅由於沒有需要聲明唯一的列而定義行。行的尺寸是用桿高度和FR單元的幾個SASS變量完成的,以使列表元素的高度跨越可用的視口高。
卡列表部分
<span><span><span><div</span> class<span>="ui"</span>></span> </span> <span><span><span><nav</span> class<span>="navbar app"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><nav</span> class<span>="navbar board"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> <span><span><span><header</span>></span>...<span><span></header</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> ... <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span><footer</span>></span>...<span><span></footer</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
<span>.ui { </span><span> <span>height: 100vh;</span> </span><span> <span>display: grid;</span> </span><span> <span>grid-template-rows: $appbar-height $navbar-height 1fr;</span> </span><span>}</span>
> flex速記屬性在flex項目上使用,以使列表
剛性。 Flex-Basis的自動值(用於速記中)指示佈局引擎從.LIST元素的寬度屬性中讀取大小,而flex Grow和Flex-shrink的零值則阻止了此寬度的改變。 > 接下來,我需要在列表之間添加水平分離。如果設置了列表上的正確邊距,則不會渲染具有水平溢出的板上的最後一個列表之後的邊距。為了解決此問題,列表由左邊邊緣分開,最後列表和右視口緣之間的空間通過在每個.LIST元素中添加偽元素後處理:: ::。默認的flex shrink:1必須被覆蓋,否則偽元素“吸收”所有負空間,並且消失了。
請注意,在Firefox 卡列表>每個卡列表由標頭欄,一系列卡和頁腳欄組成。以下HTML摘要捕獲了以下結構:
>
>但是高度不能無限期地增長,它需要具有取決於.LIST元件的高度的上限。一旦達到此限制,我希望出現一個垂直滾動條,以允許訪問溢出列表的卡。<span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> ... <span><span><span></div</span>></span> </span> ... <span><span><span><div</span> class<span>="list"</span>></span> </span> ... <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
這聽起來像是最大高點和溢出屬性的工作。但是,如果將這些屬性應用於根容器.LINS,則一旦列表達到其最大高度,將出現滾動欄,其中包括所有元素,標頭和頁腳。以下圖顯示了左側錯誤的側邊欄,右側顯示了正確的側邊欄: >因此,讓我們將最大高度約束應用於內部
。應該使用哪個值?標題和頁腳的高度必須從列表的高度列表母容器的高度(.LIST)中減去:
<span><span><span><div</span> class<span>="ui"</span>></span> </span> <span><span><span><nav</span> class<span>="navbar app"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><nav</span> class<span>="navbar board"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> <span><span><span><header</span>></span>...<span><span></header</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> ... <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span><footer</span>></span>...<span><span></footer</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
>
<span>.ui { </span><span> <span>height: 100vh;</span> </span><span> <span>display: grid;</span> </span><span> <span>grid-template-rows: $appbar-height $navbar-height 1fr;</span> </span><span>}</span>
>對列表高度的最後調整是必要的,以說明列表底部和視口底部邊緣之間的一些空間($ abap):
<span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> ... <span><span><span></div</span>></span> </span> ... <span><span><span><div</span> class<span>="list"</span>></span> </span> ... <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
>
>在Firefox上,滾動欄是“附加”。清單高度之外,即100%是指不包括滾動條的名單的高度。因此,這是不需要的。結果,當可見滾動欄時,在Firefox上,列表底部邊框之間的視覺空間已達到其最大高度,滾動欄的頂部稍大。這是此組件的相關CSS規則:
如前所述,列表背景顏色是通過將$ list-bg彩色值分配給每個名單元素的孩子的背景色屬性來渲染的。溢出Y僅在需要時顯示scrollbar。最後,將一些簡單的樣式添加到標題和頁腳中。
><span>.lists { </span><span> <span>display: flex;</span> </span><span> <span>overflow-x: auto;</span> </span> <span>> * { </span><span> <span>flex: 0 0 auto; // 'rigid' lists</span> </span><span> <span>margin-left: $gap;</span> </span> <span>} </span><span> <span>&::after {</span> </span><span> <span>content: '';</span> </span><span> <span>flex: 0 0 $gap;</span> </span> <span>} </span><span>}</span>
單卡的HTML簡單由列表項組成:
<span><span><span><div</span> class<span>="list"</span>></span> </span> <span><span><span><header</span>></span>List header<span><span></header</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> ... <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span><footer</span>></span>Add a card...<span><span></footer</span>></span> </span><span><span><span></div</span>></span></span>
<span>ul { </span><span> <span>max-height: calc(100% - #{$list-header-height} - #{$list-footer-height});</span> </span><span>}</span>
然後,分配負邊緣以水平和垂直對齊圖像:
<span><span>.list</span> { </span> <span>height: 100%; </span><span>}</span>
>最後,我在佔據屏幕佈局第一行的兩個條上添加了一個flex格式上下文。但是他們只是素描。通過擴展演示,可以隨意建立自己的實施。
這只是完成此設計的一種可能方法,看到其他方法很有趣。另外,最終確定佈局將很不錯,例如完成兩個屏幕欄。
>另一個潛在的增強可能是對卡列表的自定義滾動條的實現。因此,請隨時在下面的討論中分叉演示並發布鏈接。
經常詢問的問題(常見問題解答)有關使用CSS網格和Flexbox
構建Trello佈局>使用CSS Grid和Flexbox創建類似Trello的佈局有什麼好處? CSS網格和Flexbox為創建類似trello的佈局提供了一些好處。它們允許您創建一個響應迅速的佈局,該佈局可以適應不同的屏幕尺寸和方向。他們還提供了一個靈活的佈局系統,可以容納任何數量的列表和卡。此外,它們提供了強大的對齊和分配控件,使創建乾淨,有條理的佈局變得容易。
如何使用CSS網格和Flexbox使我的類似Trello的佈局響應?
>如何在類似trello的佈局中添加互動率?
>
>,而CSS網格和Flexbox是強大的佈局系統,它們確實有一些限制。例如,在較舊的瀏覽器中,它們可能不會得到完全支持。此外,儘管它們提供了靈活的佈局系統,但它們可能不適合所有類型的佈局。重要的是要了解這些限制並在必要時考慮替代解決方案。 >我如何自定義類似trello的佈局的外觀?>自定義可以完成類似trello的佈局的外觀使用CSS。您可以使用CSS更改佈局的顏色,字體和其他視覺元素。您還可以使用CSS添加效果,例如陰影或過渡,以增強用戶體驗。
>如何使用類似trello的佈局來解決問題? >>使用瀏覽器中的開發人員工具可以完成類似Trello的佈局的故障排除問題。這些工具使您可以檢查HTML和CSS,從而更容易識別和解決問題。您還可以使用在線論壇或社區(例如堆棧溢出)來提出問題並從其他開發人員那裡獲得幫助。
>以上是用CSS網格和Flexbox構建特雷洛佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!