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

为什么弹性商品仅限于父代尺寸?

白禄
2023-03-14
问题内容

考虑以下示例…

body {

  margin: 0;

}



* {

  box-sizing: border-box;

}



.parent {

  min-height: 100vh;

  width: 50vw;

  margin: 0 auto;

  border: 1px solid red;

  display: flex;

  align-items: center;

  justify-content: center;

}



.child {

  border: 1px solid blue;

  width: 150%;

}


<div class="parent">

    <div class="child">

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Amet tellus cras adipiscing enim eu turpis. Neque aliquam vestibulum morbi blandit. Sem integer vitae justo eget magna.

    </div>

</div>

…我希望孩子width:150%在左右方向上都可以长到或长出父母(因为它水平居中)。

为什么不发生这种情况?

注意: 我对从官方或可靠来源获得的答案感兴趣,理想情况下可以精确地指出任何提及行为和可能的变通方法的错误或说明。

调试信息: 在最新的Chrome(Ubuntu 17.10)中体验到这一点。 尚未测试跨浏览器,将像我一样进行更新。


问题答案:

您需要考虑flex-shrink。如您在这里阅读:

flex-shrink CSS属性指定弹性项目的弹性收缩系数。当 flex项默认大小大于 flex容器
,flex 根据flex-shrink编号 收缩以填充 容器

body {

  margin: 0;

}

* {

  box-sizing: border-box;

}



.parent {

  min-height: 100vh;

  width: 50vw;

  margin: 0 auto;

  border: 1px solid red;

  display: flex;

  align-items: center;

  justify-content: center;

}



.child {

  border: 1px solid blue;

  width: 150%;

  flex-shrink: 0; /* added this */

}


<div class="parent">

  <div class="child">

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Amet tellus cras adipiscing enim eu turpis. Neque aliquam vestibulum morbi blandit. Sem integer vitae justo eget magna.

  </div>

</div>

正如我们在这里也可以阅读:

该柔性收缩属性指定 柔性收缩因子 ,其确定 多少柔性物品将相对收缩到的其余部分 的柔性物品 时在柔性容器 负的自由空间(1)的 分布

此属性处理浏览器计算flex项目的flex-basis值, 发现它们太大而 无法放入flex容器的情况 。只要flex-shrink具有正值, 这些项目就会收缩 ,以使它们 不会溢出 容器。

因此,通过设置flex-shrink0元素将永远不会缩小,从而允许溢出(默认情况下,该值设置为1)。

(1) 负自由空间 :当项目的自然大小总和 大于 flex容器中 的可用空间 时,我们就有负自由空间。



 类似资料:
  • 问题内容: 我正在尝试制作多个具有相同高度的正方形行(每行3个)。 我为此编写了一些HTML和CSS,但所有框都在同一行上。 这是我到目前为止的内容: 当我用此页面加载页面时,所有框都出现了,但它们都在一行上,超过了父div的100%宽度。 任何帮助深表感谢。 问题答案: flex容器的初始设置为 。 这意味着,当您创建一个伸缩容器(通过应用元素或将其应用于元素)时,所有子元素(“伸缩项”)都限于

  • 问题内容: 我有一个flex项目,它也是一个flex容器,问题是即使添加了,它的flex项目也拒绝包装。 谁能为我解决这个问题,或指出我做错了什么。 问题答案: 嵌套容器中的伸缩项目按 百分比 调整大小。 由于百分比长度基于父级的长度,因此 没有理由进行包装 。它们将始终是父级的40%,即使父级的宽度为1%。 如果您使用其他长度单位,例如或,它们将自动换行。

  • 我开始使用将样式动态地应用于;基于对我的另一个问题的回答,以及对其他类似问题的回答。 但是最近开始在构造函数上出现一个lint错误,该错误声明: 只能从同一个库组(groupid=com.android.support)中调用 我遇到的唯一类似的问题是关于一个(现在已经修复)bug的问题;导致此lint错误显示在的子类的方法上。我不认为这种情况是一种错误,而是一种故意的限制;我想知道背后的原因。

  • 我们有7.2个弹性团簇,其下有结点。6数据节点3主节点2摄取节点 最近,我们在我们的弹性原木中观察到以下误差。默认的限制似乎是[986061209/940.3MB],但实际的使用情况([990145976/944.2MB])不止于此。请让我们知道是否有任何配置将transport_request大小增加到986061209以上。 [2020-02-04T00:37:24,464][DEBUG][O

  • 本文向大家介绍什么是NoSQL(不仅限于SQL数据库),包括了什么是NoSQL(不仅限于SQL数据库)的使用技巧和注意事项,需要的朋友参考一下 常规的关系数据库是为获得最佳存储结构而进行的大量研究和测试的产物。但是,它们的缺点是它们具有刚性的结构,如果有不同的规格,则不能改变。为了解决这个问题,创建了NoSQL数据库。 NoSQL数据库有许多不同类型,具有不同的规范。其中一些是- 列 -数据以列形

  • 问题内容: 我正在尝试制作多个具有相同高度的正方形行(每行3个)。 我为此编写了一些HTML和CSS,但所有框都在同一行上。 这是我到目前为止的内容: 当我用此页面加载页面时,所有框都出现了,但是它们都在一行上,超过了父div的100%宽度。 任何帮助深表感谢。 问题答案: flex容器的初始设置为 。 这意味着,当您创建一个伸缩容器(通过应用元素或将其应用于元素)时,所有子元素(“伸缩项”)都限