我想执行类似于justify-content:space-around
或justify-content:space-between
的操作,但使用:
- x个项目并排在左侧,
- y个项目并排在中间,
- z个项目并排显示在右侧。
通过 Package 元素会很简单,但我不能,因为这些项目(.left
,.middle
,.right
)将是影响下面元素样式的复选框(并且没有得到良好支持的父选择器)。
我找到了this answer来模拟右侧的first-of-class
,但没有找到类似于模拟last-of-class
的东西。
/* emulate first-of-class */
.container>.right {
margin-left: auto;
}
.container>.right~.right {
margin-left: unset;
}
下面是我目前尝试的一个片段:
第一个
我可以通过在display:flex
容器中的最后一个左边元素中添加一个特定的类来应用margin-right:auto;
,在第一个右边元素中添加一个特定的类来应用margin-left:auto;
,但这不是最好的,即使这样,如果左边和右边的部分宽度不同,中间的项也不会居中。
第一个
我目前的目标是根据所选语言显示元素,即使禁用JavaScript也是如此,因此我正在寻找不使用JavaScript的解决方案。
正如HackerFrosch所建议的,我试图通过使用网格来解决它,但我不习惯它,.middle
项没有居中,我没有设法使.right
div下面的元素默认为100%宽度。
一个
有没有办法做到这一点?
5条答案
按热度按时间kzmpq1sx1#
css grid layout
是解决这个问题的一个方法。如果你愿意的话,你可以自定义这个例子中的位置。我希望这对你有帮助。第一个
5kgi1eie2#
你 可以 尝试 用 * * flex * * 来 解决 这个 问题 , 并 使用 * * calc ( ) * * 函数 来 管理 左边 距 或 右边 距 。 因此 , 我 创建 了 四 个 类 , 用 其中 一 个 来 居中 中间 类 。
中 的 每 一 个
# # # # 用法 . 左 二 . 中
第 一 次
# # # # 用法 . 一 - 右 . 中间
第 一 个
tyky79it3#
类似这样-在第一个 center 和 right 类上使用左边距自动:
第一个
xa9qqrwz4#
这样做很好地保持了中心,同时仍然允许css选择器。它将保持中心添加更多的元素到左,中,或右容器。中间容器可以有奇数或偶数元素,它仍然会保持中心,只要有足够的空间。
这种方法的局限性是你的标题高度必须是固定的,并且绝对定位的#dynamic_children div top属性必须反映这个值。另外,由于IE 11糟糕的flex实现,这将无法正常工作,而且显然他们永远不会修复这个问题,因为IE 11不再支持。我不确定这对你来说是否重要。
第一个
7gcisfzg5#
根据您的要求,您需要使用
grid
属性。