用CSS網格和Flexbox構建特雷洛佈局
鑰匙要點
- >教程演示瞭如何使用CSS網格和Flexbox實現Trello板的基本佈局,從而提供了響應迅速的僅CSS的解決方案。佈局由應用程序欄,板欄和包含卡列表的部分組成。 >教程說明瞭如何使用3×1網格構建佈局結構,前兩個行具有固定高度,第三排跨越了可用的視口高度。它還使用視口單元來確保容器始終與瀏覽器的視口一樣高。
- >教程顯示瞭如何使用完整的視口寬度Flexbox單線行容器來格式化卡列表。它還演示瞭如何使用Overflow-X屬性在列表不符合視口寬度時在屏幕底部顯示水平滾動條。
- >教程建議將最大高度約束應用於內部無序列表以管理列表的高度。它還說明瞭如何使列表與父容器一樣高,以及僅在需要時使用溢出Y屬性來顯示scrollbar。 在本教程中,我將引導您完成Trello板屏幕的基本佈局的實現(請參見此處的示例)。這是一個響應迅速的,僅CSS的解決方案,只有佈局的結構特徵才能開發出來。
- 對於預覽,這是最終結果的編碼epen演示。 除了網格佈局和Flexbox外,該解決方案還採用了計算和視口單元。為了使代碼更加可讀性和高效,我還將利用SASS變量。
屏幕佈局
> Trello板的屏幕由應用程序欄,一個板欄和包含卡列表的部分組成。我將使用以下標記骨架來構建此結構:

將通過CSS網格實現此佈局。具體而言,一個3×1網格(即一列和三行)。第一行將用於應用程序欄,第二行是董事會欄,第三行是.LAM元素。
前兩行的高度固定,而第三行將跨越可用的視口高度的其餘部分:
視口單元確保.UI容器始終像瀏覽器的視口一樣高。
>將網格格式上下文分配給容器,並定義了上面指定的網格行和列。更確切地說,僅由於沒有需要聲明唯一的列而定義行。行的尺寸是用桿高度和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>
- 元素的父母。清單,並且該元素沒有確定的高度,因此該百分比無法解決。可以通過使.LIST等清單的列表來解決:
>
<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網格和Flexbox創建類似Trello的佈局?
>使用CSS網格和Flexbox創建類似Trello的佈局,涉及多個步驟。首先,您需要為佈局創建基本的HTML結構。這包括為您的董事會和單個容器創建列表和卡的容器。接下來,您將CSS網格應用於板容器以創建網格佈局。然後,您可以使用FlexBox在其各自的容器中排列列表和卡。這使您可以創建一個響應迅速,靈活的佈局,可以容納任何數量的列表和卡片。
>>使用CSS Grid和Flexbox創建類似Trello的佈局有什麼好處? CSS網格和Flexbox為創建類似trello的佈局提供了一些好處。它們允許您創建一個響應迅速的佈局,該佈局可以適應不同的屏幕尺寸和方向。他們還提供了一個靈活的佈局系統,可以容納任何數量的列表和卡。此外,它們提供了強大的對齊和分配控件,使創建乾淨,有條理的佈局變得容易。
我可以使用CSS網格和Flexbox創建其他類型的佈局嗎?網格和Flexbox是通用的佈局系統,可用於創建各種佈局。它們可以單獨或組合使用以創建複雜的響應式佈局。無論您是創建簡單的兩列佈局還是複雜的網格佈局,CSS網格和Flexbox都可以提供所需的工具。
>如何使用CSS網格和Flexbox使我的類似Trello的佈局響應?
>>使用CSS網格和Flexbox響應類似Trello的佈局涉及使用媒體查詢根據屏幕尺寸調整佈局。您可以使用媒體查詢來更改網格列的數量,也可以調整列表和卡片的flex屬性。這允許您的佈局適應不同的屏幕尺寸和方向,從而確保在所有設備上都具有一致的用戶體驗。
如何在類似trello的佈局中添加互動率?
>使用CSS網格和Flexbox創建類似trello的佈局有任何限制嗎?
>
>,而CSS網格和Flexbox是強大的佈局系統,它們確實有一些限制。例如,在較舊的瀏覽器中,它們可能不會得到完全支持。此外,儘管它們提供了靈活的佈局系統,但它們可能不適合所有類型的佈局。重要的是要了解這些限制並在必要時考慮替代解決方案。 >我如何自定義類似trello的佈局的外觀?>自定義可以完成類似trello的佈局的外觀使用CSS。您可以使用CSS更改佈局的顏色,字體和其他視覺元素。您還可以使用CSS添加效果,例如陰影或過渡,以增強用戶體驗。
我可以使用CSS網格和Flexbox創建類似Trello的佈局而沒有任何先前的經驗? 🎜>雖然CSS網格和Flexbox是相對高級的CSS功能,但可以通過一些研究和實踐來學習。在線有許多資源,包括教程和指南,可以幫助您學習如何使用這些功能。有了一些時間和精力,即使您是初學者,您也可以使用CSS網格和Flexbox創建類似Trello的佈局。
>>如何使用類似trello的佈局來解決問題? >>使用瀏覽器中的開發人員工具可以完成類似Trello的佈局的故障排除問題。這些工具使您可以檢查HTML和CSS,從而更容易識別和解決問題。您還可以使用在線論壇或社區(例如堆棧溢出)來提出問題並從其他開發人員那裡獲得幫助。
>>如何優化類似trello的佈局以進行性能?性能的類似Trello的佈局可能涉及多種策略。這包括使用高效的CSS選擇器最大程度地減少CSS和JavaScript,並優化圖像。您還可以使用諸如Google Lighthouse之類的性能工具來分析您的佈局並確定改進的區域。
以上是用CSS網格和Flexbox構建特雷洛佈局的詳細內容。更多資訊請關注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)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

Goofonts是由開發人員和設計師丈夫簽名的附帶項目,它們都是版式的忠實擁護者。我們一直在標記Google

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要
