【问题标题】:CSS inline-block scenario - Collapse all or nothing [duplicate]CSS内联块场景-全部折叠或全部折叠[重复]
【发布时间】:2020-01-02 09:01:15
【问题描述】:

我有这样一个场景:

你有三个内联元素,两个本质上是一样的,但是中间的那个不是,它的宽度总是未知的。

你想要两件事:

  • 所有三个元素都内联在同一行中
  • 如果宽度是两个 很小,所有三个元素都堆叠在一起

使用 display: inline-element,它会根据需要折叠,这意味着在一定宽度上,两个元素将在顶部,一个在底部。这不是任何期望的条件。

    .div-a {
      background-color: red;
    }
    
    .div-b {
      background-color: blue;
    }
    
    div {
      display: inline-block;
      font-size: 4em;
    }
    <div class="div-a">
     L
    </div>
    <div class="div-b">
     Mid
    </div>
    <div class="div-a">
     R
    </div>

我们如何确保所有块都是堆叠的,或者它们都是内联的?请记住,中间元素的宽度总是未知的。

编辑:不知道为什么这被标记为重复,因为我什至没有询问媒体查询调整大小,这只是解决方案之一。

【问题讨论】:

  • 请在此处发布您的代码,不要链接到外部网站。
  • @cloned 我会编辑它,谢谢你让我知道。
  • 你确定你已经在jsfiddle中添加了代码?
  • @tanvikorgaonkar 链接已损坏,现已修复 :)
  • @Bug 我不确定这是否仅适用于 css,您想要纯 css 选项还是愿意使用 javascript?

标签: html css flexbox display


【解决方案1】:

这取决于您的视口和元素宽度。当您将显示内联元素放在 div 中时,所有 div 都将被视为内联元素。直到您在任何特定的 div 中应用任何新的显示属性。为确保堆叠,您可以使用 display flax 属性。

请阅读这篇文章。希望它会帮助你。 https://css-tricks.com/snippets/css/a-guide-to-flexbox/

【讨论】:

  • 是的,但是如果这与整个页面无关,例如如果这三个元素位于其他嵌套元素的内部,该怎么办。在这种情况下,媒体查询将不起作用。
  • 在这种情况下,你必须使用内联样式和亚麻
  • 有什么例子吗?
【解决方案2】:

使用 display flex 保持在一行并动态管理宽度中间元素

<div class="a">
<div class="div-a">
L
</div>
<div class="div-b">
Midghghghghchcghgdc
</div>
<div class="div-a">
 R
</div>
</div>

css

    .a {
  display:flex;
}
.div-a {
  background-color: red;
}

.div-b {
  background-color: blue;
}

div {
  display: inline-block;
  font-size: 2em;
}

【讨论】:

  • 这不会崩溃:jsfiddle.net/sm7k4ejL
  • 如果你想折叠然后改变显示标签 flex 以阻止并使用媒体查询来管理你的元素
猜你喜欢
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2011-11-19
相关资源
最近更新 更多