更新1:
我发现当从div中删除width:100%
时,如果它不包含任何内容,我得到的结果我想要它的高度为0的内容。但是,我需要div的宽度为100%,由于某种原因迫使它的高度没有内容。
这是问题的一个方面。如果你使用IE7进入以下链接,你可能只会看到问题,可能是在IE6及以下版本。
原始问题:
我有一个空div,出于某种原因有高度。
在Chrome上,div除非包含内容,否则根本不会显示。另一方面,IE7显示div,即使它没有内容。
所以基本上,如果它是空的,我希望它的高度为0px,如果它有内容,则自动调整它的高度。如果它的宽度不是100%,那么它的确如何表现。
答案 0 :(得分:6)
在您使用position: fixed
:
要在此处支持IE7,您必须使用两个div
。我有理由相信这是不可能的(除非你更喜欢坚持使用一个div
并使用JavaScript修复)。
查看:强>
没有内容:http://jsfiddle.net/r3P8D/2/
内容为:http://jsfiddle.net/r3P8D/3/
发生此错误的原因是,一旦您添加某些属性(例如width: <not auto>
或position: fixed
),就会触发hasLayout
on the element。一旦触发hasLayout
,就会发生此错误。
因为您需要position: fixed
(..which doesn't even work in IE6,但我离题了),所以无法避免hasLayout
,因此无法避免此错误。
所以,我给了你能想到的最好的解决方法。
旧回答:
但是,我需要div才能拥有 宽度为100%
只是不要使用width: 100%
。
div
将具有默认的width
值,即auto
,因此需要“完整的可用宽度”。 width: auto
与<{1}}的不一样,但就本问题而言,它在视觉上看起来是一样的。
在Chrome和IE6 / 7中检查此内容(不含内容):http://jsfiddle.net/r3P8D/
请在Chrome和IE6 / 7中查看此内容(含内容):http://jsfiddle.net/r3P8D/1/
根据我对你的问题的理解,这正是你所要求的。
答案 1 :(得分:1)
这是一个烦人的IE漏洞。
我想我过去已经完成了它:
div{
overflow:hidden;
min-height:0;
display: inline;
}
在这里演示:http://jsfiddle.net/tomgrohl/YfbJt/
如果这影响了您的布局,最好使用一个类,当您向div添加内容时添加该类(如果您动态添加它):
div
{
height:0;
overflow:hidden;
}
div.active
{
height: auto;
}
答案 2 :(得分:0)
我认为IE 7给出了默认高度,除非你提供一个值。
尝试将高度设置为0px。
答案 3 :(得分:-3)
将其添加到CSS文件的开头:
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
这将标准规则应用于元素,并消除了跨浏览器的不一致性。
如果它仍然给你一个错误,请尝试在重置下添加:
div{
width: 0px;
height: 0px;
}