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

内联块元素换行时,父包装器不适合新宽度的CSS

李浩邈
2023-03-14
问题内容

inline-block如果内容因屏幕宽度而断线,如何获取适合其内容宽度的元素?

<!-- parent inline-block -->
<div style='display: inline-block;'>
    <div style='display: inline-block; width:200px;'></div>
    <!--
        If this child line breaks, 
        two 200px wide blocks are stacked vertically.
        That should make the parent width 200px,
        but the parent stays much wider than that
    -->
    <div style='display: inline-block; width:200px;'></div>
</div>

我想不出如何表达这个问题,听起来似乎很简单,但是我整理了一个简单的插图。

#wide {

  position: relative;

  width: 100%;

  border: 1px solid black;

  padding: 5px;

}

#narrow {

  position: relative;

  width: 175px;

  border: 1px solid black;

  padding: 5px;

}

.wrap {

  display: inline-block;

  border: 1px solid green;

  margin: auto;

}

.inlineblock {

  display: inline-block;

  vertical-align: top;

  background: red;

  min-width: 100px;

  min-height: 100px;

  border: 1px solid black;

}


<section id='wide'>

  <div class='wrap'>

    <div class='inlineblock'></div>

    <div class='inlineblock'></div>

  </div>

</section>

<p>

  When the red inline-blocks are forced to line break, how do you make a parent with display:inline-block (the green border) snap to fit? How do you get rid of all the extra horiztonal space in the lower green bordered div?

</p>

<section id='narrow'>

  <div class='wrap'>

    <div class='inlineblock'></div>

    <div class='inlineblock'></div>

  </div>

</section>

问题答案:

你不能 默认情况下,inline-block元素具有缩小到适合的宽度:

收缩至配合宽度为:
min(max(preferred minimum width, available width), preferred width)

然后,

  • 当为时preferred minimum width <= preferred width <= available width,宽度将为preferred width您所希望的。
  • 当为时available width <= preferred minimum width <= preferred width,宽度将为preferred minimum width您所希望的。
  • preferred minimum width <= available width <= preferred width,宽度将是available width,即使你不喜欢它。

如果您确实不希望这样做,我想您可以resize使用JS 添加事件侦听器,然后手动设置所需的宽度。



 类似资料:
  • 问题内容: 您可以设置诸如,和的内联元素的宽度,但是在放置它们之前不会发现任何效果。 a)我认为不能设置内联元素的内联宽度? b)假设可以设置宽度-在放置内联元素之前,我们不会注意到任何效果(因此我们指定了宽度)。位置如何/在哪里? c)为什么仅当我们“定位”内联元素时才显示它们的宽度? 问题答案: 正如其他人提到的那样,设置内联元素的宽度(或其他一些与位置相关的属性)将导致浏览器将元素显示为块元

  • 问题内容: 我想在单词中镜像字母,所以我使用了CSS变换属性,但是如果我将文本包裹在一个范围内则无法使用,但是如果我选择了ass或 那么转换不适用于内联元素吗? 示例1(转换失败) 示例2(Works,如果使用OR) 问题答案: 在官方W3规范中,在可转换元素下回答: 一个元素,其布局由CSS框模型控制,该CSS框模型可以是 块级 或 原子内联级元素 ,或者其“ display”属性可以计算为“

  • 将父flex容器宽度调整为子flex容器内容宽度时出现问题。 使用Bulma,我有以下HTML结构 但它最终应用于所有子flex容器,如您所见: http://codepen.io/anon/pen/mWqRxW 如何解决这个问题,并使父flex容器适合子flex容器的宽度(在本例中是输入的宽度)?

  • 问题内容: 我希望有两列宽度为50%的列,并避免出现浮点数。所以我想用。 当元素添加到99%的宽度(例如50%,49%)时,它将按预期工作。 当使用100%的宽度(例如50%,50%)时,第二列会中断到第二行。 这是为什么? 问题答案: 这是因为要考虑html中的空白。如果您删除之间的空白,则可以正常使用。

  • 问题内容: 我想有两列宽度为50%的列,并避免出现浮点数。所以我想用。 当元素添加到99%的宽度(例如50%,49%,http://jsfiddle.net/XCDsu/2/)时,它将按预期工作。 当使用100%的宽度(例如50%,50%,http://jsfiddle.net/XCDsu/3/)时,第二列会中断到第二行。 这是为什么? 问题答案: 这是因为考虑到html中的空白。如果您删除之间的

  • 问题内容: Width issue Left Right 上面的代码试图将#left div和#right div并排放置在一行中。但是,正如您在上面的JSFiddle URL中所看到的,情况并非如此。 我能够解决将div之一的宽度减小到49%的问题。但这不是理想的解决方案,因为两个div之间出现很小的间隙。 我能够解决问题的另一种方法是通过同时浮动两个div。这很好。 但是我最初的问题仍然存在。