首頁 > web前端 > css教學 > 用CSS網格和Flexbox構建特雷洛佈局

用CSS網格和Flexbox構建特雷洛佈局

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-02-16 13:10:10
原創
606 人瀏覽過

用CSS網格和Flexbox構建特雷洛佈局

鑰匙要點

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

屏幕佈局

> Trello板的屏幕由應用程序欄,一個板欄和包含卡列表的部分組成。我將使用以下標記骨架來構建此結構:

用CSS網格和Flexbox構建特雷洛佈局

將通過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>
登入後複製
登入後複製
我正在使用一個完整的視口寬度flexbox單線行容器來格式化列表:

<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>
登入後複製
登入後複製
>將自動值分配給Overflow-X屬性會告訴瀏覽器在列表不適合視圖時列表時,在屏幕底部顯示水平滾動條。 >>>>

> 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,則一旦列表達到其最大高度,將出現滾動欄,其中包括所有元素,標頭和頁腳。以下圖顯示了左側錯誤的側邊欄,右側顯示了正確的側邊欄:

用CSS網格和Flexbox構建特雷洛佈局

>因此,讓我們將最大高度約束應用於內部

    。應該使用哪個值?標題和頁腳的高度必須從列表的高度列表母容器的高度(.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>
登入後複製
登入後複製
>以這種方式,因為.LIST總是像列表一樣高,無論其內容如何,​​其背景色屬性不能用於列表背景顏色,但是可以使用其孩子(標題,頁腳,頁板,卡片)為此目的。

>對列表高度的最後調整是必要的,以說明列表底部和視口底部邊緣之間的一些空間($ 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>
登入後複製
登入後複製
>另外的$ scrollbar-thickness量被減去,以防止列表觸摸.LIST元素的水平滾動條。實際上,在Chrome上,此滾動條在。清單框中。也就是說,100%的值是指。清單的高度,包括滾動欄。

>

>在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>
登入後複製
這是相關的CSS:

<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的佈局中添加互動率?

使用JavaScript可以實現類似trello的佈局。您可以使用JavaScript將拖放功能添加到卡中,從而使用戶可以在列表之間移動卡。您也可以使用JavaScript添加其他交互式功能,例如添加新卡或列表的功能。

>使用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板