Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 左对齐一个图元,居中对齐另一个图元,但由左图元推动居中图元_Html_Css_Positioning_Flexbox - Fatal编程技术网

Html 左对齐一个图元,居中对齐另一个图元,但由左图元推动居中图元

Html 左对齐一个图元,居中对齐另一个图元,但由左图元推动居中图元,html,css,positioning,flexbox,Html,Css,Positioning,Flexbox,我目前正在使用flex,我认为这是必要的,但我对所有CSS解决方案都持开放态度 我有一个酒吧,左边有一些元素。这是通过flex:0自动完成的和flex:1自动在其后面的空元素上 我需要将另一组元素放在这个条的中心(而不是剩余空间的中心)。如果第一组元素不在那里,我可以使用flex:0 auto在居中元素的左侧和右侧执行flex:1 auto 但现在我需要把这些元素组合起来,这样左边元素就留在左边,中间元素留在中间,但是我也需要左边元素来推动中间元素向右移动(从而使它不再居中)。 编辑:我应该提到

我目前正在使用flex,我认为这是必要的,但我对所有CSS解决方案都持开放态度

我有一个酒吧,左边有一些元素。这是通过
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;
}