我正在上一门关于HTML和CSS的课程,突然发现了一个让我困惑的不一致之处: (背景:https://codepen.io/Hobror/pen/yLQoqMa)

.ex13f-post-attachment {
  font-family: Arial;
  width: 350px;
  display: flex;
  border-style: solid;
  border-width: 1px;
  border-radius: 15px;
  border-color: rgb(220, 220, 220);
  align-items: center;
  overflow: hidden;
}

.ex13f-attachment-preview {
  width: 100px;
  height: 100px;
  background-color: rgb(220, 220, 220);
  margin-right: 10px;
}

.ex13f-attachment-info {
  flex: 1;
}
<div class="ex13f-post-attachment">
  <div class="ex13f-attachment-preview"></div>
  <div class="ex13f-attachment-info">
    <div class="ex13f-atachment-link">youtube.com</div>
    <div class="ex13f-atachment-description">Backend web development - a complete overview 2021) </div>
  </div>
</div>

我有什么我试图使预览部分设置为ex13f-attachment-infopx,并想要一个方形,圆角部分,如下面的图像链接所示.当我将flex设置为1到ex13f-attachment-info时,我将看到我试图创建的元素的缩略图部分的正确宽度为ex13f-attachment-infopx.

enter image description here

然而,当我没有将ex13f-attachment-info(它包含附件的文本部分)的flex设置为1时,我发现这会影响缩略图部分,并且它不再是ex13f-attachment-infopx长.

enter image description here

这样做的理由是什么?对于上下文,我也将整个元素限制在350px宽.

我确实try 了弹性值,试图缩小这一原因,它似乎绑定到flex-grow被设置为1,使缩略图宽度以我希望的方式显示.我不明白附件信息的Flex-Growth属性如何影响附件预览的宽度.

推荐答案

弹性容器上的默认设置为flex-shrink: 1个.这意味着弹性项将自动收缩以避免容器溢出.

因此,您的标题:"Why does 100 on neighboring element in flexbox affect the fixed width of another element?"有一个错误的前提,因为在禁用收缩之前,另一个元素没有"固定宽度".

添加flex-shrink: 0以覆盖缺省值并禁用收缩.

.ex13f-post-attachment {
    width: 350px;
    display: flex;
    border-style: solid;
    border-width: 1px;
    border-radius: 15px;
    border-color: rgb(220, 220, 220);
    align-items: center;
    overflow: hidden;
}

.ex13f-attachment-preview {
    width: 100px;
    height: 100px;
    background-color: rgb(220, 220, 220);
    flex-shrink: 0; /* NEW */
}

.ex13f-attachment-info {
    /* flex: 1; */
}
<div class="ex13f-post-attachment">
  <div class="ex13f-attachment-preview"></div>
  <div class="ex13f-attachment-info">
    <div class="ex13f-atachment-link">youtube.com</div>
    <div class="ex13f-atachment-description">Backend web development - a complete overview 2021)     </div>
  </div>
</div>

关于你的信息元素,产生影响的不是flex-grow,而是flex-basis.

flex: 1相当于:

  • flex-grow: 1
  • flex-shrink: 1
  • flex-basis: 0

值为flex-basis: 0个时,元素可以使用行上的所有空格.

但是当没有使用flex: 1时,flex-basis默认为auto,并且内容的长度被考虑到宽度计算中,在本例中挤压了sibling 元素.

有关完整的详细信息,请参阅此处:

Html相关问答推荐

HTML CSS如何使用图像作为中心点将元素置于中心

有没有可能一个按钮,有焦点,然后再次点击它清除它的焦点,只是使用css?

CURL邮箱中的图像不能调整其大小

页脚与主要内容重叠

仅向上扩展并以最大高度滚动的Div

子元素的单一背景

有没有办法移动占位符?

如何在r中提取明显非标准html标签的值

图像如何能达到 HTML 表格的全宽?

为什么即使我点击其他地方,我的 contenteditable="true" 也会被激活?

Google Apps 脚本 - RegEx 适用于小文本,但不适用于大文件?

模拟另一个输入值设置表单输入的数值

表单中如何分别禁用/启用多个提交按钮?

为什么 text-align 应用于 span 而不是 CSS 中的 img