如何在表格单元格溢出时将文本居中?

问题描述:

我想将一些文本居中放在单元格中间,但文本大于单元格的宽度,因此它溢出到右侧。如何在表格单元格溢出时将文本居中?

是否有可能使它从左边和右边溢出?

这里是一个的jsfiddle例如:http://jsfiddle.net/p5wg8yyc/2/

的HTML

<table> 
    <thead> 
     <tr> 
      <th>Left</th> 
      <th>Center</th> 
      <th>Right</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td></td> 
      <td>SomeVeryBigTextThatDoesNotFit</td> 
      <td></td> 
     </tr> 
    </tbody> 
</table> 

的CSS

table, td{ 
    border:1px solid black; 
} 

table{ 
    width:500px; 
    border-collapse: collapse; 
    table-layout:fixed; 
} 

td{ 
    text-align:center; 
    color:red; 
} 
+0

你可能会需要的JavaScript了点。 – j08691 2014-10-17 15:52:42

+0

删除固定布局? – 2014-10-17 15:54:36

+0

如果您在左侧和右侧td中有文字会发生什么?他们会超过它,这不是很好:) – 2014-10-17 15:59:21

编辑:这里为后人留下了,但阿贝尔唯一的CSS-答案是好得多的方法。


可能需要一些JavaScript来实现此目的。我已经张贴在这里使用jQuery 1.11的例子实际上只是选择的元素和获取/设置属性可以帮助:

http://jsfiddle.net/sd8xw5d6/1/

基本上刚开细胞和文本的宽度,调整定位:

$(function() { 
    var textWidth = $(".overflowtext").width(); 
    var tdWidth = $(".overflowcell").width(); 
    $(".overflowtext").css("margin-left", tdWidth/2 - textWidth/2); 
}); 

注意的是,虽然这工作,你仍然需要考虑调整窗口大小,并根据需要调整,因为大小只为原来的窗口大小的工作,但希望这将让你开始。

实际上只起了CSS的方式,这是非常简单的:

演示http://jsfiddle.net/p5wg8yyc/9/

.toCenter { 
    display: inline-block; 
    position: relative; 
    margin-left: 50%; 
    -webkit-transform: translateX(-50%); 
    transform: translateX(-50%); 
} 
+0

非常好!我试图完成定位,但没有考虑使用翻译。加上定位最终崩溃了表格单元格。做得好。 – trnelson 2014-10-17 16:14:24

+0

在IE8中不起作用,并且需要对IE9进行-ms-transform。 – Gudradain 2014-10-17 17:26:31

这里就是你需要

  table, td{ 
 
    border:1px solid black; 
 
} 
 

 
table{ 
 
    table-layout: fixed; 
 
    width:500px; 
 
    border-collapse: collapse; 
 
    table-layout:fixed; 
 
} 
 

 
td{ 
 
    word-wrap:break-word; 
 
    text-align:center; 
 
    color:red; 
 
}
 <table> 
 
    <thead> 
 
     <tr> 
 
      <th>Left</th> 
 
      <th>Center</th> 
 
      <th>Right</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr> 
 
      <td></td> 
 
      <td>SomeVeryBigTextThatDoesNotFit</td> 
 
      <td></td> 
 
     </tr> 
 
    </tbody> 
 
</table> 
 

+1

OP希望文本从左边和右边溢出,不包含在单元格中。 – Arbel 2014-10-17 16:14:01

+0

同意,@阿贝尔的答案很重要,但我也建议OP审查这个答案,以防万一它更适合他的情况(我更喜欢这种可用性)。 – trnelson 2014-10-17 16:17:15

简单的CSS修复:http://jsfiddle.net/p5wg8yyc/8/

HTML:

<tr> 
    <td><span>AB</span></td> 
    <td><span>SomeVeryBigTextThatDoesNotFit</span></td> 
    <td></td> 
</tr> 

CSS:

td span{ 
    margin-left:-50%; 
    margin-right:-50%;  
} 
+0

当文本很大并且存在换行符时,这会失败:http:// jsfiddle。net/p5wg8yyc/10/ – Arbel 2014-10-17 16:17:41

+0

如果添加'display:inline-block',则不行。 – GramThanos 2014-10-17 16:18:57

+0

当您通过跨度替换div时效果更好。 – Gudradain 2014-10-17 17:38:26