当前位置: 首页 > 面试题库 >

收缩包装并居中放置行内块元素的容器

弓玉书
2023-03-14
问题内容

我有几行要在行中居中放置的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与一起使用。 这会将所有项目打包在该行的水平中心。然后,您的利润