Chrome,Safari忽略表中的最大宽度
我有这样的HTML代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title></title> </head> <body> <table style="width:100%;"> <tr> <td> <table style="width:100%; max-width:1000px; background:#000099;"> <tr> <td> 001 </td> </tr> </table> </td> </tr> </table> </body> </html>
问题是,Chrome和Safari忽略"max-width:1000px"
我的朋友发现,我们可以通过为内部表添加"display:block"
来阻止它,并以某种方式工作。
所以,我想知道的是 – 还有其他解决这个问题的方法,为什么会这样呢?
最大宽度适用于块元素 。 <table>
既不是块也不是 inline 。 含糊不清? 哈哈。 你可以使用display:block; max-width:1000px
display:block; max-width:1000px
并忘记width:100%
。 Chrome和Safari遵循规则!
编辑2017年5月:请注意,这个评论是7年前(2010年!)。 我怀疑浏览器多年来改变了一堆(我不知道,我不再做网页devise)。 我build议使用更新的解决scheme。
我知道这已经回答了一段时间,并有一个工作的解决方法,但答案指出, max-width
只适用于块元素和引用一个来源是不是规范是完全不正确的。
规范 (CSS内部和外在尺寸的CSS 3规范是指CSS 2.1规范)明确规定:
所有元素,但未被replace的行内元素,表行和行组
这意味着它应该适用于表格元素。
这意味着WebKit不遵守表格元素的max-width
或min-width
的行为是不正确的。
我想你在这里寻找的是:
table-layout: fixed
将这种样式应用于表格,您的表格将遵守分配给它的宽度。
注意:直接在Chrome
应用此样式看起来不起作用。 您需要在CSS / HTML
文件中应用样式并刷新页面。
用div包裹内部表格,并将最大宽度设置为这个包装div。
我遇到过同样的问题。 我用一个表格作为手段来居中我的内容在页面上,但safari忽略width:100%; max-width:1200px
width:100%; max-width:1200px
作为我应用于表格的样式。 我了解到,如果我将表格封装在div中,并在div上设置了左右边距,则它将位于页面上,并遵循Safari中的最大和最小宽度属性以及Mac上的firefox。 我还没有检查浏览器或Windows上的铬。 这里是一个例子:
<div style="position:relative; width:100%; max-width:1200px; min-width:800px; margin-left:auto; margin-right:auto">
然后,我嵌套在表格里面的div …
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
我刚刚遇到了这个答案,值得注意的是,根据MDN( https://developer.mozilla.org/en-US/docs/Web/CSS/max-width ),它们的最大宽度兼容性表格表示:
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) | -------------------------------------------------------------------------------------------------------- |applies to <table> [1]| Not supported | (Yes) | Not supported | (Yes) | Not supported |
“[1] CSS 2.1明确地将max-width的行为保留为undefined,因此任何行为都符合CSS2.1;较新的CSS规范可能会定义此行为,所以Web开发人员现在不应该依赖特定的行为。
MDN上有一些很酷的东西,例如“fill-available”和“fit-content” – 当规格趋于稳定时,我们有一些东西值得期待。
我能够解决我的问题媒体查询:
我replace了
max-width: 360px
同
@media (min-width: 440px) { width: 360px; }
这是一个明确的参考: 10可视化格式模型详细信息(w3.org)
在CSS 2.1中, 表格 ,内嵌表格,表格单元格,表格列和列组中的“最小宽度”和“最大宽度”的效果是未定义的 。
以前在这个线程中给出的参考,错误地将“table rows”读作“table”。 但是,这个真的说“桌子”。 这是CSS2的一部分,但CSS3是以CSS2为基础的max-width
。
所以这只是未定义的,浏览器可以自由地做他们想做的事情,依靠它是不安全的。