我有一个居中的div和另外4个div - 一个在居中的div的每一侧。当我单击一个按钮时,每个div滑入框架并将中心的div推出。
它在chrome中工作正常,但使用firefox失败,让我没有来自firebug的错误。
Here是我的实现,目前在firefox中无法正常工作。
正如你所看到的,在firefox中,居中的div只是消失而不是滑出屏幕。使用chrome,中心div按预期滑出。
有人可以看看萤火虫并告诉我他们认为可能导致问题的原因吗?
此代码基于jsfiddle,使用chrome或firefox工作正常。
以下是jsfiddle的代码:
这是 html
<div id="fullContainer">
<div id="right">
</div>
<div id="left">
</div>
<div id="top">
</div>
<div id="bottom">
</div>
</div>
<div id="centerContainer">
<div id="relativeContainer">
<div id="content">
This is where your face should go. Notice that I placed it within a centering div.
This will enable the face to be absolutely positioned, and allow for you to modify
it's position when the side-bars slide in.
<div data-move="left">Open Left</div>
<div data-move="right">Open Right</div>
<div data-move="top">Open Top</div>
<div data-move="bottom">Open Bottom</div>
</div>
</div>
</div>
这里是 css
#centerContainer {
position:fixed;
top:50%;
left:50%;
width:0;
height:0;
}
#relativeContainer {
position:relative;
}
#fullContainer {
position:fixed;
width:100%;
height:100%;
top:0;
left:0;
}
#content {
position:absolute;
width:300px;
height:400px;
top:-200px;
left:-150px;
background:#BADA55;
border:1px solid #444;
padding:10px;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
#content.right {
left:-250px;
}
#content.left {
left:-50px;
}
#content.bottom {
top:-300px;
}
#content.top {
top:-100px;
}
#content div {
cursor:pointer;
color:blue;
text-decoration:underline;
margin-top:15px;
text-align:center;
}
#left {
position:absolute;
top:0;
left:-125px;
height:100%;
width:100px;
background:blue;
border:1px solid #444;
padding:10px;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
#left.opened {
left:0;
}
#right {
position:absolute;
top:0;
right:-125px;
height:100%;
width:100px;
background:green;
border:1px solid #444;
padding:10px;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
#right.opened {
right:0;
}
#top {
position:absolute;
left:0;
top:-125px;
width:100%;
height:100px;
background:yellow;
border:1px solid #444;
padding:10px;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
#top.opened {
top:0;
}
#bottom {
position:absolute;
left:0;
bottom:-125px;
width:100%;
height:100px;
background:red;
border:1px solid #444;
padding:10px;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
#bottom.opened {
bottom:0;
}
这是 javascript :
function SlideOut(element){
$(".opened").removeClass("opened");
$("#"+element).addClass("opened");
$("#content").removeClass().addClass(element);
}
$("#content div").click(function(){
var move = $(this).attr('data-move');
SlideOut(move);
});
以下是fiddle
谢谢
凯蒂
答案 0 :(得分:0)
我做了一些测试,发现了正在发生的事情。为了说明和演示的目的,在fiddle中重现了这一点。
在Firefox中,如果要转换CSS属性left
,则需要有一个初始值来开始。如果没有,那么它将不会转换,它只是将值赋给属性。
在Chrome中,如果您没有设置初始值,那么它显然只是从任何地方开始而不用担心。
如果您在Firefox中查看上面的小提琴并单击第一行,它就会显得更远,而第二行会转换过来。唯一的区别是第二行最初设置了left: 0
。在Chrome上,两者都是一样的。
如果您在left: 0
上放置#content div
,那么它会在Firefox中滑动。 (在Firebug中测试过,确实修复了它。)