我有一个网页,其中有三个绿色框,每个框都有自己的行。每个绿色框还有一个相关的红色框,当您将鼠标悬停在绿色框上时会出现该框。所有的绿色盒子都装在一个黑盒子里,盒子宽度足以容纳最宽的绿色盒子。
如何加宽较短的绿色框,使其与最宽的绿色框的宽度相匹配?以下是我希望看到的MSPaint演绎:
至少,我想支持Internet Explorer 7,8和9. Firefox是可选的。我对支持任何其他浏览器不感兴趣。
我已经做了一些尝试来实现这一目标,但我无法按照我想要的方式工作。 (如果它们很无聊,请随意跳过这些下一部分。)
我为每个绿色块添加了display:block
样式,并删除了它们之间的<br/>
。
绿色框已成功调整大小!但是,现在每个红色框在下面显示其各自的绿色框,而不是右边。我不知道是否有办法将红色框放在与block
元素相同的行上,所以我放弃了这种方法。
我给每个绿色框的宽度为100%并删除它们之间的<br/>
。
(忽略绿色和红色框之间的间隙。那是因为两个跨距之间有空白,很容易修复。)
绿色盒子的大小都相同,但是它们的宽度大约是50px,它们会延伸到黑盒子的末端。
其他特定于浏览器的问题:
从Attempt 2.0开始,我删除了绿色框的填充。填充是一个非常强大的“它会很好”,但如果没有办法,我会放弃它。
绿色盒子在黑盒子末端延伸1px,这很烦人但不可接受。盒子仍然太宽。 2.0中所有特定于浏览器的问题仍然存在。
从尝试2.1开始,我重新添加了<br/>
s。
绿色框是正确的宽度,给出或取一个像素!
特定于浏览器的更新:
从尝试2.2开始,我将width
更改为99%。
绿色盒子比黑盒子短一点,这是可以接受的。只要它们的宽度相同。
特定于浏览器的更新:
所以此时我有75%的浏览器兼容性。但是,似乎任何调整都不会使IE7工作,所以我放弃了这种技术。
调整框以适应列通常不是太困难。但是,当盒子具有固定像素宽度的填充和绝对定位的兄弟姐妹必须出现在他们的右边时,常规方法会失败。我正在寻找一种在这种特殊情况下可行的方法。
答案 0 :(得分:2)
我确认此演示适用于IE7 +和现代浏览器:
http://jsfiddle.net/thirtydot/APVuq/4/
<强> CSS:强>
.hoverBox {
position: relative;
}
.visiblePart {
display: block;
border: 1px solid green;
padding: 5px;
white-space: nowrap;
}
.hiddenPart {
display: none;
border: 1px solid red;
position: absolute;
left: 100%;
top: 0;
white-space: nowrap;
}
.hoverBox:hover > .hiddenPart{
display: block;
}
.enclosingBox {
border: 1px solid black;
display: inline-block;
*display: inline;
zoom: 1;
}
<强> HTML:强>
<div class="enclosingBox">
<div class="hoverBox">
<span class="visiblePart">
Box 1
</span>
<span class="hiddenPart">
Hidden part of Box 1
</span>
</div>
<div class="hoverBox">
<span class="visiblePart">
Box 2, which is much wider than box 1
</span>
<span class="hiddenPart">
Hidden part of Box 2
</span>
</div>
<div class="hoverBox">
<span class="visiblePart">
Box 3, which <br/> is split into two lines.
</span>
<span class="hiddenPart">
Hidden part of Box 3
</span>
</div>
</div>
答案 1 :(得分:1)
我简直无法相信我要写的内容,但为什么不使用一个好的旧<table>
?有2列3行,第二列包含你的红色框......这应该很容易做到。