【问题标题】:Inline-block without line break and with elements into max width内联块,没有换行符和元素到最大宽度
【发布时间】:2015-04-01 18:36:03
【问题描述】:

我尝试了很多次,在很多情况下都非常有用,但似乎不可能:

  1. 将 2 个 div 放入同一个 div 容器中,总之 2 列,div 容器宽度保持固定。
  2. 每个 div 看起来像 inline-block,所以它会根据内部内容调整,所以如果内部内容没有,宽度为零,如果内部是 100px,宽度将是 100px。这是正常的内联块。
  3. 2 个 div 必须始终在同一行,没有断线。
  4. 如果一个或两个 div 的内容溢出,它将被隐藏,并且 div 始终在容器的宽度内

我可以做 1-2-3,但我停在 4。

这是代码:

<div class="container">
       <div class="column">Lorem ipsum dolor sit amet</div>                           
       <div class="column">Lorem ipsum dolor sit amet</div>                       
</div>

CSS

.container{
  display: table;
  overflow: hidden;
}
.column {
  display: table-cell;
}

Demo

类似的事情可以通过 inline-block 完成,但两种方式都有相同的问题:内部内容溢出的 div 宽度不保持在容器宽度内而是保持完整内容宽度

有点难解释,希望有人理解。 这是我项目的截图,也是我的问题:http://expirebox.com/download/39f9acff53e75830b1714a653b11e0d0.html

谢谢

【问题讨论】:

  • 这是我来的时候最接近的了。我似乎无法将表格强制为 100% 宽度。 liveweave.com/axoIhN

标签: html css


【解决方案1】:

这里有两件事要做:

  1. table-layout 设置为fixed

    .container {
      width: 200px;
      display: table;
      table-layout: fixed;
      overflow: hidden;
    }
    
  2. visibility设置为隐藏以防溢出

    var element = document.querySelector('.column');
    if( (element.offsetHeight < element.scrollHeight) || (element.offsetWidth < element.scrollWidth)){
      // your element have overflow
      element.style.visibility = "hidden";
    }
    else{
      //your element don't have overflow
    }
    

引用自hereJS Bin

【讨论】:

  • 这似乎导致单元格宽度一致。有演示吗?
  • 可能是因为table-layout: fixed。但是,没有它,columns 的宽度可能会超出container 的宽度。
  • 对。问题就在于此。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多