Html 左对齐一个图元,居中对齐另一个图元,但由左图元推动居中图元
我目前正在使用flex,我认为这是必要的,但我对所有CSS解决方案都持开放态度 我有一个酒吧,左边有一些元素。这是通过Html 左对齐一个图元,居中对齐另一个图元,但由左图元推动居中图元,html,css,positioning,flexbox,Html,Css,Positioning,Flexbox,我目前正在使用flex,我认为这是必要的,但我对所有CSS解决方案都持开放态度 我有一个酒吧,左边有一些元素。这是通过flex:0自动完成的和flex:1自动在其后面的空元素上 我需要将另一组元素放在这个条的中心(而不是剩余空间的中心)。如果第一组元素不在那里,我可以使用flex:0 auto在居中元素的左侧和右侧执行flex:1 auto 但现在我需要把这些元素组合起来,这样左边元素就留在左边,中间元素留在中间,但是我也需要左边元素来推动中间元素向右移动(从而使它不再居中)。 编辑:我应该提到
flex:0自动完成的此元素组上的代码>和flex:1自动代码>在其后面的空元素上
我需要将另一组元素放在这个条的中心(而不是剩余空间的中心)。如果第一组元素不在那里,我可以使用flex:0 auto在居中元素的左侧和右侧执行flex:1 auto
代码>
但现在我需要把这些元素组合起来,这样左边元素就留在左边,中间元素留在中间,但是我也需要左边元素来推动中间元素向右移动(从而使它不再居中)。
编辑:我应该提到两个元素的宽度都是动态的。我确实知道高度,但最好不需要
像这样的事
HTML
这是一个使用绝对定位的解决方案,需要显式设置左侧块的宽度。基本上,绝对定位将块从流中取出,为了确保左块和右块不重叠,左边距设置在右块上,即左块宽度的大小
这是一把小提琴:。(调整预览窗口的大小以查看效果)
HTML:
如果你能分享相关的代码就好了。我相信这里至少有一个人知道如何解决您的问题,但是如果您需要其他程序员的帮助,您需要给我们一些代码来修补…@Banana。我想他很清楚他想要完成什么。@DRD你没有明白我的意思。你只限于css吗?因为使用它相对容易实现javascript@Banana如果可能的话,我想限制自己使用CSS。只有当他知道左边元素的宽度,如果它是动态的,你的解决方案就不起作用了。是的,这就是我在介绍中说的:“…并且需要显式设置左边块的宽度。”@谢谢你提醒我提到那件事。我已经编辑了我的问题,提到宽度是未知的。我认为你最好的选择是使用这个解决方案,在dom加载后使用javascript调整蓝色元素的边距。你实际上可以不用javascript完成,但我能想到的唯一解决方案是使用flex box和使用额外的标记。从本质上讲,左块是重复的(在HTML中),并且位于最后一个块的位置(使用HTML或顺序
)。然后,您可以使用调整内容:
之间的空格,效果很好:。不幸的是,我不知道宽度。宽度是动态的,不是绝对的。@Keavon这就是我要说的。如果你不设置宽度,应该可以。哦,我很抱歉,我在你的评论中漏掉了你的“不”字。让我试一试,中间的元素推到左边的元素里面,看到了吗
<body>
<aside>Left</aside>
<main>Right</main>
</body>
* {
margin: 0;
padding: 0;
}
main {
width: 1000px;
height: 500px;
background: cyan;
margin: 0 auto;
}
aside {
float: left;
width: 200px;
height: 500px;
background: magenta;
}
<div class = "container">
<div>left</div>
<div>Pushed to Right</div>
</div>
* {
margin: 0;
padding: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body {
padding: 10px;
}
.container {
background-color: #ccc;
position: relative;
text-align: center;
overflow: hidden;
}
.container > div:first-child,
.container > div:nth-child(2) {
padding: 10px 20px;
background-color: #fA5858;
color: #fff;
text-transform: uppercase;
font: 15px/1 Sans-Serif;
}
.container > div:first-child {
position: absolute;
left: 0;
width: 100px;
}
.container > div:nth-child(2) {
display: inline-block;
background-color: #5882FA;
margin: 0 100px;
white-space: nowrap;
}