2011-05-03 110 views
1

我有一个jQuery插件,用于创建,填充和格式化表格。我已经有了创建和填充的权利,但格式仍然没有我。固定大小的列

桌子总是宽800px(为了让我的生活变得简单,我设计了我的网站,我是一个大多数左脑的家伙,音乐是我能理解和制作的唯一艺术),但是列和它们各自的特性(标题,宽度,对齐)的数量是可变的:

$ 
.grid('MostSoldBySales', 'Most sold products by total sales', 112 /* height in px */, [ 
    {css: {'text-align': 'left', width: 120/*px*/}, children: 'Description'}, 
    {css: {'text-align': 'right', width: 160  }, children: 'Total Sales'}, 
    {css: {'text-align': 'left', width: 360  }, children: 'Comments'} 
]) 
.grid('MostSoldByWeight', 'Most sold products by total weight', 112 /* height in px */, [ 
    {css: {'text-align': 'left', width: 120/*px*/}, children: 'Description'}, 
    {css: {'text-align': 'right', width: 160  }, children: 'Total Weight'}, 
    {css: {'text-align': 'left', width: 360  }, children: 'Comments'} 
]) 
; 

我的主要问题是有关列宽:我迫切需要的方式规定,使我的列完全一样宽。我不希望浏览器出于任何原因调整列的大小。我认为这是Visual Basic提供的功能。我如何使用CSS做到这一点?

+0

@mu太短:很遗憾,没有。我想分享,但是这个代码是为别人编写的,而且它不是免费软件。 – pyon 2011-05-04 07:49:30

+0

@mu太短:这是一个Intranet应用程序。 – pyon 2011-05-04 23:45:41

回答

3

一个安全可靠的方式我所知道的是把每一个的DIV里面的TD。您为TD指定的宽度仅作为建议(即使在现代浏览器中),如果窗口太窄,列将压缩。所以这将始终严格200px宽:

<table> 
    <tr> 
    <td> 
     <div style="width:200">Some stuff</div> 
    </td> 
    </tr> 
</table> 
2

您可以尝试使用'min-width': '120px'

2

我认为你的问题是,你给浏览器冲突的尺寸。你说<table>元素被设置为800px宽,但你的三列只能添加640px。你将需要在某处添加另一个160px。与其他列集,你必须确保列宽度总和为800px。

您可以尝试在您的<table>上使用table-layout: fixed。这应该强制这个问题,并停止你可能得到的表和它的单元格之间的任何反馈。 !

+0

即使列宽增加到800px,单个宽度也会变形。 – pyon 2011-05-04 00:17:08

+0

@Eduardo:你有任何边界或类似的东西吗?还有'table-layout:fixed'(请参阅我的更新以获取链接)。 – 2011-05-04 00:49:00

+0

@mu太短:我的表没有任何边框,但它的单元格有左右填充。在设置列大小时,我将这些填充考虑在内,但即使如此,列的大小也不正确。 – pyon 2011-05-04 17:25:45

2

虽然不是真的实用,你也可以尝试包装在双引号的宽度,增加了它的重要,像这样

{css: {'text-align': 'left', width: "360px !important"  }, children: 'Comments'}