我遇到的问题是html表溢出了它的父容器。我已设置a sample jsfiddle here来说明问题。
如何强制标题文本和表格单元格文本以适合其容器的方式进行换行?我更喜欢仅CSS的方法,但如果绝对必要,我也愿意使用Javascript(或jQuery)。
答案 0 :(得分:209)
从纯粹的“让它适合div”的角度来看,将以下内容添加到您的表类(jsfiddle)中:
table-layout: fixed;
width: 100%;
根据需要设置列宽;否则,固定布局算法会将表格宽度均匀分布在您的列上。
为了快速参考,这里是表格布局算法,重点是我的:
使用此(快速)算法,表的水平布局不依赖于单元格的内容;它只取决于表格的宽度,列的宽度,边框或单元格间距。
在此算法中(通常不需要超过两次),表格的宽度由其列的宽度 [,由内容确定] < / b>(以及介入borders)。
[...]此算法可能效率低下,因为它要求用户代理在确定之前访问表中的所有内容。最终布局,可能需要多次通过。
单击查看源文档以查看每种算法的具体信息。
答案 1 :(得分:45)
尝试添加
word-break: break-all
到表元素上的CSS。
这将使表格单元格中的单词断开,使得表格不会比包含div的表格更宽,但表格列仍然是动态调整大小的。 jsfiddle demo
答案 2 :(得分:16)
将display: block;
和overflow: auto;
添加到.my-table
。这将简单地切断超出您执行的280px
限制的任何内容。由于pélagosthrough
之类的字词宽于280px
,因此无法使其“看起来很漂亮”。
答案 3 :(得分:1)
尝试添加到td
:
display: -webkit-box; // to make td as block
word-break: break-word; // to make content justify
溢出的tds将与新行对齐。
答案 4 :(得分:0)
好吧,考虑到你的限制,我认为在overflow: scroll;
div上设置.page
可能是你唯一的选择。 280 px非常窄,考虑到你的字体大小,单独换行就不会这样做了。有些词很长,无法包裹。您可以大幅缩小字体大小,也可以使用overflow:scroll。
答案 5 :(得分:0)
将CSS更新为以下内容:这应该可以解决
.page {
width: 280px;
border:solid 1px blue;
overflow-x: auto;
}