这里的情景:我有四个单元重叠的一个的其他的父元素,像这样:如何使用CSS转换切换重叠元素?
<body class="one">
<div id="overlapping">
<div class="one">1</div>
<div class="two">2</div>
<div class="three">3</div>
<div class="four">4</div>
</div>
...
的CSS看起来有点像这样:
.one, .two, .three, .four { display: none; }
body.one .one,
body.two .two,
body.three .three,
body.four .four {
display: block;
}
再有就是一些javascript和一些按钮可以在“身体”上切换课程。
这很好,除了我想使用css转换在块之间切换。它们的高度不均匀(并且未知),所以我不能在高度上进行动画制作。我宁愿不硬编码任何宽度为responsive的原因,并且转换不能在display
仍然工作。
我不能visibility
或opacity
动画,因为重复的部分继续,而隐藏或透明占用空间布局:即它们不是真正的重叠,除非那些看不见有display: none
。
(一个工作解决方案是CSS来在#overlapping
左上角的所有元素的位置,服从正常的文字环绕规则,在彼此的顶部,这样#overlapping
扩展以容纳他们,如果他们不position: absolute
。我还没有找到这样的方法。)
那么我该如何为开关设置动画?有没有用CSS的方法,还是我不得不求助于js动画?
仅供参考,您的css解决方案相当于'#overlapping> div {display:none; } #overlapping> div.someclasstoadd {display:block; }' – Will 2012-03-15 04:13:49
我知道第一个是'#overlapping> div',但我想在问题中更加明确。至于第二个,我不认为你是正确的:'.one'类在主体上,而不是'#overlapping',因为在主体中还有其他元素也在转换。 – So8res 2012-03-15 04:18:29
好的,但是将嵌套div的类添加到body元素对我来说毫无意义。为什么不使用'body.displaytoggle #overlapping> div {display:block; }'? – Will 2012-03-15 04:32:37