如何在不裁剪或换行的情况下限制列宽?

Posted

技术标签:

【中文标题】如何在不裁剪或换行的情况下限制列宽?【英文标题】:How can I constrain column widths without text clipping or wrapping? 【发布时间】:2021-01-12 04:20:43 【问题描述】:

我想限制表格列的宽度,不进行文本剪辑(不换行)。

我在 *** 上遇到了很多线程(抱歉重复),但没有一个能真正给出直接的解决方案,尽管我认为这是一个相当简单的问题......

首先,我是否必须同时限制标题和内容列的宽度?

我真的不想在th / td 中插入div(反正我还没有找到直接的解决方案)。

我相信white-space: nowrap;text-overflow: clip; 表格样式宽度<th style="width: 100px>...</th>(同上td)就足够了,但它不起作用)。它们的 CSS 顺序重要吗?

我不明白为什么像下面这样简单的东西不起作用..

<th style="width: 72px; text-overflow: clip; white-space: nowrap;">ABCDEFGHIJKLMNOPQRSTUVWXY abcdefghijklmnopqrstuvwyz</th><!-- Of course, specified in CSS file -->

并希望看到类似的内容:

----------------
   |ABCDEFG|
----------------

更新

CSS 样式

th 
    max-width: 72px;
    white-space: nowrap;
    text-overflow: clip;
    overflow: hidden;


td 
    max-width: 72px;
    white-space: nowrap;
    text-overflow: clip;
    overflow: hidden;

剃刀页面

<tH @html.Raw(Helpers.HTMLTagAttribute(Enums.FieldType.Date))>
...
<td @Html.Raw(Helpers.HTMLTagAttribute(Enums.FieldType.Date))>
...

其中帮助方法HTMLBodyTagStyleAttributes(FieldType fieldType) 使用HTMLWidth(FieldType fieldType) 定义如下,FieldType 是一个相对于每一列的枚举:

private static string HTMLWidth(FieldType fieldType)

    string width;

    switch (fieldType)
    
        case FieldType.Date:
            width = "72px";
            break;
        // ...
        default:
            width = "86px";
            break;
    

    return width != "" ? $"max-width: width;" : "";

感谢您的任何见解!

【问题讨论】:

【参考方案1】:

尝试添加max-widthoverflow: hidden,例如:

th 
  max-width: 72px;
  text-overflow: clip; 
  white-space: nowrap;
  overflow: hidden;

【讨论】:

好的,谢谢。我刚刚更新了我最终实施的问题。看来我需要限制正文和标题中的列宽。我使用辅助方法来覆盖 CSS 文件中的默认 max-width。似乎工作:-)【参考方案2】:
    仅修复标题。不是细胞。 使用 CSS 属性 word-wrapword-break

    div 
      word-wrap: break-word;
      word-break: normal;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    

【讨论】:

谢谢,但我并没有真正对应我正在寻找的内容,因为它仍然显示所有文本(在几行中......)也许,如果我限制行高仍然可以? ?我试图用我错过的overflow: hidden; 来调整我的属性,但仍然必须使用min-widthmax-width 使用文本溢出:省略号

以上是关于如何在不裁剪或换行的情况下限制列宽?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不换行的情况下在引导列之间添加边距[重复]

Flexbox:如何让 div 在不换行的情况下填充 100% 的容器宽度?

如何在不破坏文本换行的情况下保存和格式化wpf UserControl中的内容?

批处理字符如何替换成回车符或换行。

如何在不影响现有列宽的情况下更改列数据类型

如何在不使用内部相机裁剪的情况下裁剪图像