我有几行要在行中居中放置的inline-block元素,我想水平居中。内联块元素都具有相同的固定大小,但我希望居中处理页面大小调整以及添加或删除元素。
为了简化起见,我删除了html" target="_blank">html /css并删除了居中的尝试。
如果您调整结果窗口的大小,以便第三个内联块元素下降,则容器将填充宽度,我们将得到以下结果:
-----------------BODY------------------
| |
||-------------CONTAINER-------------||
||-INLINEBLOCK---INLINEBLOCK-- ||
|||____________||____________| ||
||-INLINEBLOCK-- ||
|||____________| ||
||___________________________________||
|_____________________________________|
而不是这样:
-----------------BODY------------------
| |
| |----------CONTAINER---------| |
| |-INLINEBLOCK---INLINEBLOCK--| |
| ||____________||____________|| |
| |-INLINEBLOCK-- | |
| ||____________| | |
| |____________________________| |
|_____________________________________|
根据ptriek关于JavaScript解决方案的答案进行编辑:
Ptriek的代码是一个有用的起点。它适用于特定情况,但不适用于一般情况。
在考虑了一下之后,我同意Wex的上述评论。
因此,我摆弄了一个JavaScript解决方案(jQuery)-我不是这方面的专家,因此代码可能会得到改进-但我想它完全可以满足您的需求:
var resizeContainer = function () {
var w_window = $(window).width();
var w_block = $('.inlineblock').width();
if (w_window < w_block * 3 && w_window >= w_block * 2) {
$('.container').width(w_block * 2);
} else if (w_window < w_block * 2) {
$('.container').width(w_block);
} else {
$('.container').width(w_block * 3);
}
};
$(document).ready(resizeContainer);
$(window).resize(resizeContainer);
body {
text-align:center;
}
.container {
display: inline-block;
background-color: #aaa;
text-align:left;
}
.inlineblock {
display: inline-block;
width: 200px;
height: 200px;
background-color: #eee;
}
<div class='container'>
<div class='inlineblock'></div>
<div class='inlineblock'></div>
<div class='inlineblock'></div>
</div>
问题内容: 我试图弄清楚flexbox的工作原理(理应工作吗?),如下所示: 问题是,当有足够的空间容纳元素时,我会得到一个很好的紧身儿童,它们之间的间距均匀。(第一,顶部div块) 但是,如果没有足够的空间并且儿童中的文字开始换行,则所有内容都会朝着怪异的方向前进- 儿童不再紧密贴合,即使在换行后,flex子童周围也有足够的空间,因为不再合适,实际上环绕操作实际上也没有机会工作(第二个div块)
问题内容: 我有一个宽度最初未知的元素,特别是用户提供的MathJax方程。我将元素设置为内联块,以确保元素的宽度适合其内容并具有定义的宽度。但是,这阻止了传统的居中方法。也就是说,以下操作无效: 解决方案不能是: 因为我不知道宽度实际应该是多少,并且如果用户单击方程式,则需要突出显示整个方程式,因此无法将宽度设置为0。有人可以解决此方程式居中的问题吗? 问题答案: 只需将其放在容器上即可。
问题内容: 当我尝试在flex容器中插入块元素时,它们都处在同一行上,就好像它们是行内块一样。 我希望前两个div位于同一行,最后一个位于第二行。可悲的是,这似乎不起作用。 有人知道吗? 问题答案: flex容器的初始设置为。这意味着弹性项目被强制保留在一行中。 您可以使用覆盖默认设置。 弹性项目的值在弹性布局中被忽略。 一个flex容器,它是带有或的元素,可建立一个 flex格式化上下文 。尽管
问题内容: Width issue Left Right 上面的代码试图将#left div和#right div并排放置在一行中。但是,正如您在上面的JSFiddle URL中所看到的,情况并非如此。 我能够解决将div之一的宽度减小到49%的问题。但这不是理想的解决方案,因为两个div之间出现很小的间隙。 我能够解决问题的另一种方法是通过同时浮动两个div。这很好。 但是我最初的问题仍然存在。
问题内容: 我知道这已经被问了一千遍了,但是我找不到一种使文本和图像垂直居中的方法。 我正在使用具有动态内容的Twitter Bootstrap 3,因此,我既不知道文本大小也不知道图像大小。另外,我希望这一切都能做出回应。 我创建了一个Bootply,概述了我要实现的布局类型。基本上,我希望文本和图像垂直居中。文本并不总是大于图像。 有人可以帮我这个忙吗? 谢谢。 问题答案: 您可以使用CSS
问题内容: 我正在使用CSS网格来布局这样的某些项目… 如何使最后一行居中而不是左对齐?我不能保证项目的数量,因此想要使布局适合任何数量的项目。 这是我应该使用flexbox代替的东西吗?还是CSS网格适合使用? 问题答案: CSS Grid不适合在整行中对齐,因为纵横交错的轨道阻碍了这种方式。以下是详细说明: 或者,将flexbox与一起使用。 这会将所有项目打包在该行的水平中心。然后,您的利润