屏幕布局
> 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中文网其他相关文章!