提问者:小点点

为什么这里的外部<div>没有完全包围内部<div>呢?


这里有一个jsfiddle:https://jsfiddle.net/lh7qbye2/7/

和以下测试网页:https://shetline.com/test/test01.html

问题是:当您将包含窗口的大小调整为较窄的大小时,为什么内部

的内容不能防止外部
缩小到小于内部
的宽度?

基于我得到的问题答案的更新:

https://jsfiddle.net/lh7qbye2/8//

https://shetline.com/test/test02.html

 ;

我可以使用以下方法来解决Chrome或Safari的问题:

宽度:fit-content;

。。。在外部的

上,但这不能解决Firefox或Edge的问题。 此外,MDN将fit-content标记为实验性API:

这是一个实验性API,不应该在生产代码中使用。

断字:外层的全部断字

有点帮助,但把所有的自动换行都搞乱了。 如果试图通过在


共2个答案

匿名用户

使用inline-blockmin-width:100%的组合可以完成您想要的任务。 块元素的宽度是基于其父元素(包含块)定义的,而inline-block的宽度是由其内容定义的。

添加min-width:100%将使其表现为块元素。 在这种情况下,这不是强制性的,因为您已经有了很多内容,所以您一定要覆盖所有的宽度:

null

body {
  margin: 4em;
}

.demo {
  background-color: #BFC;
  box-sizing: border-box;
  margin: 0;
  padding: 1em;
  position: relative;
  display:inline-block;
  min-width:100%;
}

.demo p:first-child {
  margin-top: 0;
}

.other-stuff {
  align-items: center;
  display: flex;
}

button {
  margin-right: 1em;
}

.square {
  display: inline-block;
  background-color: #699;
  height: 80px;
  margin-right: 1em;
  min-width: 80px;
  width: 80px;
}

.circle {
  border-radius: 50px;
  display: inline-block;
  background-color: #969;
  height: 100px;
  margin-right: 1em;
  min-width: 100px;
  width: 100px;
}
<div class="demo">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
  <div class="other-stuff">
    <button>One&nbsp;button</button>
    <div class="square"></div>
    <button>Another&nbsp;button</button>
    <div class="circle"></div>
    <button>Don't&nbsp;click!</button>
  </div>
</div>

匿名用户

您需要使用flex-wrap:wrap;将内容拆到下一行。

也就是说,由于您对按钮使用固定宽度,这是您在较小屏幕中的最佳选择。

null

body {
  margin: 4em;
}

.demo {
  background-color: #BFC;
  box-sizing: border-box;
  margin: 0;
  padding: 1em;
  position: relative;
}

.demo p:first-child {
  margin-top: 0;
}

.other-stuff {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
}

button {
  margin-right: 1em;
}

.square {
  display: inline-block;
  background-color: #699;
  height: 80px;
  margin-right: 1em;
  min-width: 80px;
  width: 80px;
}

.circle {
  border-radius: 50px;
  display: inline-block;
  background-color: #969;
  height: 100px;
  margin-right: 1em;
  min-width: 100px;
  width: 100px;
}
<div class="demo">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
  <div class="other-stuff">
    <button>One&nbsp;button</button>
    <div class="square"></div>
    <button>Another&nbsp;button</button>
    <div class="circle"></div>
    <button>Don't&nbsp;click!</button>
  </div>