您可以覆盖align-items
有align-self
一个弯曲的项目。我正在寻找一种方法来替代justify-content
弹性项目。
如果您有一个带有的flexbox容器justify-content:flex-end
,但是您希望第一个项目为justify-content: flex-start
,那该怎么办呢?
最好的答案是这个帖子:https : //stackoverflow.com/a/33856609/269396
您可以覆盖align-items
有align-self
一个弯曲的项目。我正在寻找一种方法来替代justify-content
弹性项目。
如果您有一个带有的flexbox容器justify-content:flex-end
,但是您希望第一个项目为justify-content: flex-start
,那该怎么办呢?
最好的答案是这个帖子:https : //stackoverflow.com/a/33856609/269396
Answers:
似乎没有要justify-self
,但你可以达到同样的效果的设置适当margin
,以auto
¹。例如 对于flex-direction: row
(默认),您应该设置margin-right: auto
为将孩子向左对齐。
.container {
height: 100px;
border: solid 10px skyblue;
display: flex;
justify-content: flex-end;
}
.block {
width: 50px;
background: tomato;
}
.justify-start {
margin-right: auto;
}
<div class="container">
<div class="block justify-start"></div>
<div class="block"></div>
</div>
¹此行为由Flexbox规范定义。
justify-self
可能与它无关,flexbox
而是被使用了,css grids
但我不确定。我似乎无法通过Flexbox在Chrome中使用它。
AFAIK在规范中没有针对该属性的属性,但是这是我一直在使用的一个技巧:将容器元素(带有的容器元素display:flex
)设置为,justify-content:space-around
然后在第一项和第二项之间添加一个额外的元素并将其设置为flex-grow:10
(或一些与您的设置配合使用的其他值)
编辑:如果项目紧密对齐,则最好也添加flex-shrink: 10;
到额外元素,因此布局将在较小的设备上正确响应。
min-width: 0
如果您实际上并不局限于将所有这些元素都保留为兄弟节点,则可以将这些元素包装在另一个默认的flex框中,并使两者的容器之间都使用空格。
.space-between {
border: 1px solid red;
display: flex;
justify-content: space-between;
}
.default-flex {
border: 1px solid blue;
display: flex;
}
.child {
width: 100px;
height: 100px;
border: 1px solid;
}
<div class="space-between">
<div class="child">1</div>
<div class="default-flex">
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
</div>
</div>
或者,如果您使用flex-start和flex-end反向进行相同的操作,则只需交换default-flex容器和独生子的顺序即可。
好像justify-self
即将要进入浏览器。在MDN上已经有一篇文章。在撰写本文时,浏览器支持不佳。
关于边距解决方案:我有一个带间隙的Flexbox网格。flex-gap
Flexbox 没有属性(尚未?)。因此,对于装订线,我正在使用填充和边距,因此margin: auto
需要覆盖其他边距...
In flexbox layouts, this property is ignored
justify-self
中工作display: grid
。最近,它就像flexbox一样,因此可以实现,等丰富的定位align-items
,align-self
以及一些其他功能,例如我们在这里需要的功能justify-self
。我建议在足够的地方使用flexbox,但是如果缺少的话,grid最有可能满足您的需求。(例如,将一个子项轻松对齐到center-x和y中心,将另一子项轻松对齐到right-x中心y - flexbox margin-left: auto
可以轻松地将left / right 对齐,而不能将center-right对齐)示例:stackoverflow.com/a/57128453 / 2441655
auto
边距。参见此处的框26:stackoverflow.com/a/33856609/3597276