How do I make an HTML table the same width as its containing div tag?
我在div内有一张桌子。 我希望表格占据div标签的整个宽度。
在CSS中,我已将表的width设置为100%。 不幸的是,当div上有一些margin时,表最终比其所在的div宽。
我需要支持IE6和IE7(因为这是一个内部应用程序),但如果可能的话,我显然希望使用完全跨浏览器的解决方案!
我正在使用以下DOCTYPE ...
1
| <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
编辑:不幸的是,我无法动态编码宽度,因为我正在动态生成HTML,它包括将div递归嵌套在彼此之间(每个div上留有空白,这会产生很好的"嵌套"效果)。
将以下CSS添加到您的
中:
1 2
| table-layout: fixed;
width: 100%; |
以下内容在Firefox和IE7中对我有用...一条准则是:如果在元素上设置宽度,请不要在同一元素上设置边距或填充。这尤其适用于混合单位(例如,混合百分比和像素)的情况。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
Test
</head>
<body>
This is the outer div
This is the inner div
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr>
<td style="border: 1px solid blue; background-color:#FEE;">Here is my td</td>
</tr>
</table>
</body>
</html> |
请参阅此处的示例。
基于百分比的宽度相对于具有指定宽度的第一个父元素。如果您的div没有指定宽度,则表的宽度与它无关。您可以发布标记的简化版本来显示DOM树的外观吗?
从另一个角度来看,如果您的父div确实设置了宽度并且边距仍在影响您的表格,那么您可能处于怪癖模式。您已经指定了DOCTYPE,但要注意DOCTYPE元素必须是文件的第一行。默认情况下,在处理IE6时要注意其他事项,如果您的内容比父对象宽,则父对象会被拉伸以容纳,您可以通过在css中为父元素添加overflow: hidden来停止此操作,但是在此过程中,您可能会遮掩某些子元素的内容。
不太确定问题出在哪里-在IE6 / 7和FF3中可以正常工作。设置.container DIV元素的宽度可设置表格的宽度。在.container div中添加边距不会影响表格。也许您的标记/ CSS中还有其他东西会影响布局?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
Boxes and Tables
<style type="text/css">
div.container {
background-color: yellow;
border: 1px solid #000;
width: 500px;
margin: 5px auto;
}
table.contained {
width: 100%;
border-collapse: collapse;
}
table td {
border: 2px solid #999;
}
</style>
</head>
<body>
<table class="contained">
<thead>
<tr><th>Column1</th><th>Column2</th><th>Column3</th></tr>
</thead>
<tbody>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
</tbody>
</table>
</body>
</html> |
我在这里找出了问题的核心。它与border-collapse有关。我已经有相同的问题一段时间了。由于桌子的边框通常很薄,因此对于大多数人来说,问题并不明显。如果像Nate一样在div内放置一个宽度设置为100%的常规表,那很好。
但是,如果在表上指定border-collapse:collapse,则该表将脱离div。这对于大多数人来说并不明显,因为它可能只会出现一个像素,或者取决于它所处的上下文和用户代理,也许根本不会出现。
为了使发生的事情更清楚,请尝试以下操作:在HTML文件中,将Nate的示例放在David Heggie的示例旁边。
看起来两者都可以正常工作。但是现在,将Nate的嵌入式TD样式更改为border: 40px solid blue。将David的表td样式更改为border: 40px solid #999;。此时,David的桌子超出了div两侧边界50%的范围。内特仍在工作。
在Nate的桌子上放一个border-collapse:collapse样式,现在他的休息时间也放。
导致它的是border-collapse!
我一直使用
如果您是自动生成可能带有边距的代码,则添加一个简单的,未样式化的元素来包装表格就可以解决问题。
溢出:自动; 如果您看到奇怪的东西,则最外面的div上的内容可能会有所帮助-例如最外面的div小于您想要的div或不占用里面的div的整个大小。
以下代码适用于IE6 / 8,Chrome,Firefox,Safari:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <style type="text/css">
div.container
{
width: 500px;
padding: 10px;
margin: 10px;
border: 1px solid red;
}
table.contained
{
width: 100%;
border: 1px solid blue;
}
</style>
<table class="contained">
<tr>
<td>Hello</td><td>World</td>
</tr>
</table> |
尝试复制并粘贴在上面(仅将样式部分移至标题或单独的.css文件),也许您使用的将CSS内联(使用样式标签)的方式与问题有关,还是围绕div表块的其他CSS?漂浮也会带来麻烦。
附言我设置了红色和蓝色边框,以查看区域扩展到的位置,以便进行更直观的检查。
顺便说一句,您是否有充分的理由不使用严格的doctype?严格应该始终是默认设置。过渡式仅适用于遗留代码。
尝试这个:
1 2 3 4 5 6 7 8
| div {
padding: 0px;
}
table {
width: 100%;
margin: 0px;
} |
通过将div的填充设置为零,您将删除div的边框及其内容之间的空格。通过将表格的宽度设置为100%并将其边距设置为零,您将删除表格边框与其容器之间的空间。
也许这篇有关Internet Explorer和CSS框模型的文章会有所帮助?
那是CSS对待width属性的方式存在的最大问题,也是Microsoft首先以不同的方式实现box模型的原因。微软输了,现在元素的宽度或边距/边距/边框。
具有box-sizing属性的CSS3的情况可能会变得更好
推荐阅读
wps删除重复数据|WPS表格中,删除重复项,只保留一个数据,如何删除重复项,只保留一个数据),重复,删除,数据,wps,1.WPS表格中,如何删除重复项
金蝶报表系统怎么取消隐藏|表格怎么取消隐藏,,1.表格怎么取消隐藏1、首先打开电脑, 然后在电脑中打开表格,进入操作页面中,如下图所示。2、接
wps表格查找重复的数据|在wps表格中查找重复数据,表格,重复,数据,wps,1.怎样在wps表格中查找重复数据第一步,用wps office表格打开需要查询
将wps转为EX|把WPS文件转为excel表格,转为,如何将,wps,1.怎么把WPS文件转为excel表格WPS表格转为excel共有三种方法~以WPS 2019版为例第一
表格中怎么填充颜色快捷键|表格的填充颜色快捷键,,1. 表格的填充颜色快捷键提供两种方法如下: 1、直接调用系统设定的快捷键 按下alt+H; 按
删除表格整行的快捷键|表格里怎么快捷键删除整行,,表格里怎么快捷键删除整行方法步骤如下:选中需要删除的行,(方法:点击最左侧的行号);按快捷键C
斑马打印机官方网站|斑马标签打印机官网,,斑马标签打印机官网这个首先是105SL打印机没有检测到纸张,实际不是自动打印,而是打印机一直在找纸
wps单独打开标签|wps单独打开多个文档,不喜欢在一个窗口显示多个书签,不喜欢在一个窗口显示多个书签),单独,打开,标签,wps,1.wps怎么单独
wps改变保存表格的大小|用WPS做表,更改一个表格的大小,如何更改一个表格的大小),表格,保存,大小,改变,1.用WPS做表,如何更改一个表格的大
Excel表格每页打印相同表头标题的方法?,表头,表格,设置,1、首先点击菜单栏的“页面布局”,点击页面设置旁边的折叠图标,选择工作表。2、找到
excel表格对勾快捷键|excel表里怎么打勾快捷键,,1. excel表里怎么打勾快捷键在excel中打钩的三种方法:1、在符号窗口插入对钩符号;2、按住al
苹果手机wps查看隐藏表格|手机wps工作表被隐藏,样查看呢,怎么样查看呢),表格,隐藏,苹果,查看,1.手机wps工作表被隐藏,怎么样查看呢以苹果X
wps表格设置成文本格式|wps表格中设置文本格式,设置成,表格,文本,格式,1.wps表格中怎么设置文本格式软件版本:Office2013方法如下:1.选择单
快捷键复制表格|快捷键复制表格样式,,快捷键复制表格样式第一步:打开需要复制的excel表。第二步:选中要复制的数据,单击鼠标右键,选择“复制”
火狐打开新标签页设置|火狐怎么添加标签页,,1. 火狐怎么添加标签页地址栏输入 about:config ,确认风险,搜索 browser.search.openintab选项,
|