突出强调了Flexbox用于1-D,而Grid用于2-D,但是我还没有找到清楚的解释,为什么不能将Grid用于1-D并替代Flexbox。在我来到最接近的就是
但您也可能会争辩说,像这样的纯一维布局在Flexbox中更为强大,因为Flexbox允许我们更轻松地移动这些元素(例如,将它们全部移动到一侧或另一侧,更改其顺序,将它们均匀地隔开等)。
我将Grid和Flexbox用于基本布局:框在页面上的一般放置以及一些动态的(通常是堆叠的)。美观的(烤面包机,模式,…)通过框架进行管理。
我还没有发现Grid无法立即替换Flexbox的情况 (即没有高级CSS 技巧 或很多代码)。
以上面的引用为例,提到的所有“动作”都可以在Grid中直接使用,通常具有与Flexbox相同的语义。
Flexbox涵盖哪些难以或无法通过Grid管理的基本领域?
编辑:浏览器支持并不重要(我只使用常绿的浏览器,如果需要可以切换)
以下是Flexbox在网格(第1级)之前领先的13个领域:
justify-content
。尝试将第五项居中放置在网格容器中。这不是一件简单的事情。auto
。但是,网格项目仅限于其轨迹,从而大大减少了auto
边距的用途。min-width
,max-width
以及默认的width
柔性项目是很容易。如何在网格列或行上设置所有三个长度?他们不能。flex-grow
。网格项目没有这种功能。flex-shrink
。网格什么都没有。repeat()
,auto-fill
和minmax()
,它无法做到的。display: inline-grid
它将无法正常工作。所有项目都堆叠在一个列中。这是因为默认设置grid-auto-columns
为一列。在至某些情况下,flexbox可以解决该问题。auto-fill
和auto-fit
因为已经指定网格区域的位置功能将无法正常工作。如果要避免媒体查询,flexbox的flex-wrap
功能可能会很有用。column-reverse
CSS Grid中没有任何功能。仅将一个规则应用于网格容器,就不可能从底部开始填充项目。但是,使用flexbox可以轻松完成任务flex-direction: column-reverse
。resize
网格项目上的属性对轨迹没有影响。除非将列或行轨道设置为auto
(基于内容的大小),否则调整网格项的大小将使轨道溢出。由于flexbox没有列和行轨道,因此它可能是一个有用的选择。问题内容: 我知道python函数默认是虚拟的。假设我有这个: 我不希望他们能够这样做: 有没有办法防止用户重载roo()? 问题答案: 您可以使用元类: 每当创建子类时,就会调用该元类型的 new 。如果您在场,这将导致错误。仅当没有基类时,它才会接受roo的定义。 您可以通过使用注释来声明哪些方法是最终方法,从而使该方法更加理想。然后,您需要检查所有基准并计算所有最终方法,以查看是否有任何基准
给定一组2D点,我想定义一个多边形,覆盖一定百分比的所有点,同时保持它的面积尽可能小。 我开始想到这样一个算法: 从最接近平均值的2点开始 在所有其他点上循环 添加导致覆盖面积最小的点 重复2和3直到达到所需的百分比 我想这会起作用,但听起来效率很低。我对计算面积的最佳选择是使用凸包的现有实现。我的问题听起来也像一个经典的数学问题,我怀疑有一个scipy函数可能会开箱即用。 什么是解决或近似这个问
我试图将我的项目升级到一些最新版本,但由于项目中的一些依赖项尚未更新,我无法获得空安全性。 我已经求助于sdk版本2.10,同时我更新了所有核心包,解决了所有突破性的更改。一些不推荐的更改(如FlatButton到TextButton,尚未解决)。 我在构建解决方案时遇到了几个问题,在咨询了一些旧的Stack帖子后,我拼凑了gradle文件更新,升级到Android Studio等... 但是,当
我需要一些帮助来估计某种形态学操作(最好使用skimage或scipy image或通常使用python),这些操作可以帮助我隔离由所有边包围的区域(参见Images.)问题是外壳可以有不同的形状和大小。封闭区域的形状和大小也各不相同。图像的例子,其中封闭的(由白色区域)黑色区域需要隔离。 通过隔离,我的意思是获得封闭的黑色区域中的所有像素坐标。 实施例1
问题内容: 我想在CSS中使用大小均相同但高度不相同的元素来实现网格效果。我希望下面的元素始终位于底部元素的50px处,无论接下来是什么。 我尝试使用浮点数,但该错误。因此,我尝试使用Flex,但是它仍然无法满足我的要求。 问题答案: Try the new CSS Grid Layout 建立一个块级网格容器。该grid-auto-rows属性设置自动生成的行的高度。在此网格中,每行高度为50p
我在最新的Android Studio上创建了一个全新的Android项目。我做的第一件事是将`realm'库添加到项目中,方法是将以下内容添加到gradle文件中: 如果我尝试编译,我会得到以下错误: Origine2:C:\users\usmaan.gradle\caches\caches\modules-2\files-2.1\io.realm\realm-android\0.80.3\79