CSS - 包装优先级

时间:2015-04-17 14:43:24

标签: html css

我有一个包含3列的表

**********************************************************
*  Name        *     Description               * Actions *
**********************************************************
*  John        * Lorem ipsum bla bla etc eetc  *   B1    *
*              *                               *   B2    *
**********************************************************

最后一列首先包装其内容,然后是描述列。我想首先包装Description列。 我尝试添加white-space:nowrap,但是Actions列从不包装。

浏览器如何确定要换行的列?

我希望第3列成为最后一个包装。因此,在描述列完全包装之前,它应该在一行上显示按钮。当柱子没有更多空间时,可以包裹。



@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css');

<table class="table">
  <thead>
    <tr>
      <th>Entity</th>
      <th>ID</th>
      <th>Description</th>
      <th>Actions</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Customer</td>
      <td>9004</td>
      <td>null, asdjkajk, kkkjk, kjkk, kkk, 898989</td>
      <td>
        <button class="btn c-btn">
          <span class="glyphicon glyphicon-pencil"></span>
        </button>
        <button class="btn c-btn">
          <span class="glyphicon glyphicon-remove"></span>
        </button>
      </td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

为第一列和最后一列指定宽度。然后,中心布局将采用所有剩余的布局,并在需要时包装其内容。

答案 1 :(得分:3)

列在表格中按降序包装文本。 所以你只需要修复最后一列的宽度。

如果您希望它再次在小屏幕中换行,只需添加一个媒体查询(请参阅CSS)将其宽度重置为自动,并将其列为优先包装。

&#13;
&#13;
table{
  width:300px;
}

td{
  border:1px solid black;
}

table>tr>td:last-child{
  width:40px;
}

@media (max-width: 200px) {
  table>tr>td:last-child{
    width:auto;
  }
}
&#13;
<table>
  <tr>
    <td>Col1</td>
    <td class="cc">Description</td>
    <td>Actions</td>
  </tr>
  <tr>
    <td>John</td>
    <td class="cc">Lorem ipsum bla bla black test long text</td>
    <td>BA AB</td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 2 :(得分:3)

请参阅规范中的automatic table layout部分:

  

列宽如下确定:

     
      
  1. 计算每个单元格的最小内容宽度(MCW):格式化的内容可能跨越任意数量的行但可能不会溢出   细胞盒。如果单元格的指定'width'(W)更大   与MCW相比,W是最小单元宽度。值'auto'意味着   MCW是最小单元宽度。

  2.   
  3. 此外,计算每个单元格的“最大”单元格宽度:格式化内容而不会破坏除显式行之外的行   发生了休息。

  4.   
  5. 对于每列,确定仅跨越该列的单元格的最大和最小列宽。最低要求是   具有最大单元格宽度(或列)的单元格   'width',以较大者为准)。最大值是   具有最大单元格宽度(或列)的单元格   'width',以较大者为准。)

  6.   
  7. 对于跨越多个列的每个单元格,增加它跨越的列的最小宽度,以便它们一起至少为   像细胞一样宽。对最大宽度执行相同操作。如果可能的话,   扩大所有跨栏列的数量大致相同。

  8.   
  9. 对于“宽度”不是“自动”的每个列组元素,增加它跨越的列的最小宽度,以便一起   它们至少与列组的“宽度”一样宽。

  10.         

    这为每列提供了最大和最小宽度。

         

    标题宽度最小值(CAPMIN)通过计算来确定   每个标题的最小标题外部宽度为a的MCW   包含格式为的标题的假设表格单元格   “显示:阻止”。最小字幕外部宽度的最大值是   CAPMIN。

         

    列和标题宽度会影响最终的表格宽度,如下所示:

         
        
    1. 如果'table'或'inline-table'元素的'width'属性具有除'auto'以外的计算值(W),则使用的宽度为   更大的W,CAPMIN,以及所有的最小宽度   列加单元格间距或边框(MIN)。如果使用的宽度是   大于MIN,额外宽度应分布在   列。
    2.   
    3. 如果'table'或'inline-table'元素的'width:auto',则使用的宽度是表的包含块宽度中的较大者,   CAPMIN和MIN。但是,如果是CAPMIN或最大宽度   列加上单元格间距或边框(MAX)所需的更少   而不是包含块,使用max(MAX,CAPMIN)。
    4.   

请注意

  

如果使用的宽度大于MIN,则应增加额外宽度   分布在列上。

但是,它没有具体说明应如何分发。

此外,该算法是非规范性的:

  

该算法反映了几个流行的HTML用户的行为   代理人在撰写本规范时。 UAs不是必需的   实现这个算法。

因此,行为依赖于实现