我有一系列div,使用-webkit-transform
从负边距顶部向下滑动到屏幕上的位置。问题是,如果没有适用于他们的边缘边缘,他们最终会坐在正常位置。
这意味着如果我显示第二个div,它有一个空白空间,大小超过它的第一个div。为了解决这个问题,我可以对第二个div应用负余量顶部,但我认为这很麻烦。
我主要担心的是,如果dropdiv1的高度发生变化,那么我必须重置点击功能上的值,让其他div在显示时再次正确对齐。
有没有办法修改-webkit-transform
以合并postion:absolute?
我目前的代码是:
CSS:
#dropdiv1 {
-webkit-transform: translate(0, -3000px);
-webkit-transition: all ease-in 1s;
}
#dropdiv2 {
-webkit-transform: translate(0, -3400px);
-webkit-transition: all ease-in 1s;
}
#dropdiv3 {
-webkit-transform: translate(0, -4200px);
-webkit-transition: all ease-in 1s;
}
JQuery的:
$('#clickme1').click(
function() {
$('#dropdiv1').css('-webkit-transform','translate(0, -335px)');
});
$('#clickme2').click(
function() {
$('#dropdiv2').css('-webkit-transform','translate(0, -2335px)');
});
$('#clickme3').click(
function() {
$('#dropdiv3').css('-webkit-transform','translate(0, -3300px)');
});
HTML:
<ul class="mainmenu">
<li><a id="clickme1" href="#">Click Me 1</a></li>
<li><a id="clickme2" href="#">Click Me 2</a></li>
<li><a id="clickme3" href="#">Click Me 3</a></li>
</ul>
<div class="showdata" id="dropdiv1">
Lots of random text....
</div>
<div class="showdata" id="dropdiv2">
Lots of random text....
</div>
<div class="showdata" id="dropdiv3">
Lots of random text....
</div>
答案 0 :(得分:0)
我真的没有看到动画position: absolute
的任何逻辑行为。
这将更容易阅读:
#dropdiv1 {
-webkit-transform: translate(0, -3000px);
-webkit-transition: all ease-in 1s;
}
#dropdiv1.anim {
-webkit-transform: translate(0, -335px);
}
#dropdiv2 {
-webkit-transform: translate(0, -3400px);
-webkit-transition: all ease-in 1s;
}
#dropdiv2.anim {
-webkit-transform: translate(0, -2335px);
-webkit-transition: all ease-in 1s;
}
#dropdiv3 {
-webkit-transform: translate(0, -4200px);
-webkit-transition: all ease-in 1s;
}
#dropdiv3.anim {
-webkit-transform: translate(0, -3300px);
-webkit-transition: all ease-in 1s;
}
然后添加课程。
$('#dropdiv3').addClass('anim');
那,或者在应用.offset()
之前运行position: absolute
并使用top
和left
进行动画制作。
答案 1 :(得分:0)
好的,我找到了一种解决方案。仍然凌乱,但还可以:
<div id="bigcontainer">
<ul class="mainmenu">
<li><a id="clickme1" href="#">Click Me 1</a></li>
<div class="showdata" id="dropdiv1">
Lots of random text....
</div>
<li><a id="clickme2" href="#">Click Me 2</a></li>
<div class="showdata" id="dropdiv2">
Lots of random text....
</div>
<li><a id="clickme3" href="#">Click Me 3</a></li>
<div class="showdata" id="dropdiv3">
Lots of random text....
</div>
</ul>
</div>
CSS:
#bigcontainer {
height: 1500px;/*as big as the bigest dropdiv to enable scrolling*/
}
#dropdiv1 {
-webkit-transform: translate(0, -3000px);
-webkit-transition: all ease-in 1s;
z-index: 1;
position: absolute;
}
#dropdiv2 {
-webkit-transform: translate(0, -3400px);
-webkit-transition: all ease-in 1s;
z-index: 2;
position: absolute;
}
#dropdiv3 {
-webkit-transform: translate(0, -4200px);
-webkit-transition: all ease-in 1s;
z-index: 3;
position: absolute;
}
不是特别的粉丝,但它会做!