我在从页面底部滑动div时遇到了麻烦。
这是我的JSFIDDLE
当我点击蓝色框(箭头悬停)时,div会向上滑动(box-main)。
但是为了再次隐藏div(box-main),我必须在box-main div中单击。
相反,当我再次点击蓝色框(箭头悬停)时,我想要隐藏div。我尝试了很多,但没有成功。
而且我也使用了固定在两个盒子上的位置,所以当我放大页面时,盒子是固定的,它隐藏了页面的其余部分。如果我提供绝对或相对位置Div(box-main)在页脚下方可见,这看起来不太好。有没有其他方法可以做到这一点。
这是我的代码
HTML:
<div id="container">
<div id="box-main"></div>
<div id="arrow-hover"></div>
<footer></footer>
</div>
CSS:
#container
{
margin:0;
width:100%;
height:100%;
}
#box-main{
position: fixed;
left:150px;
bottom: -150px;
width: 250px;
height: 150px;
background: #000;
z-index: 100;
}
#arrow-hover{
position: fixed;
bottom: 50px;
left: 250px;
width: 50px;
height: 50px;
background: blue;
z-index: 100;
}
footer
{
width:100%;
background:green;
height:50px;
bottom:0;
left:0;
position:absolute;
z-index:500;
}
Jquery的:
$('body').on('click','#arrow-hover',function(){
$('#arrow-hover').animate({
bottom: '200px'
},250);
$('#box-main').animate({
bottom: '50px'
},250);
});
$('body').on('click','#box-main',function(){
$('#arrow-hover').animate({
bottom: '50px'
},250);
$('#box-main').animate({
bottom: '-150px'
},250);
});
而且我想在(箭头悬停)div中放一个向上的箭头,所以当点击div向上移动然后箭头应该向下,所以当再次点击时div隐藏。有没有办法在Jquery或javascript或css3中执行此操作。
任何帮助将不胜感激,非常感谢。
答案 0 :(得分:2)
您可以维护一个布尔变量并检查其值并相应地显示或隐藏div。
var clicked = false;
$('body').on('click','#arrow-hover',function(){
if(!clicked){
$('#arrow-hover').animate({
bottom: '200px'
},250);
$('#box-main').animate({
bottom: '50px'
},250);
clicked = true;
}
else{
$('#arrow-hover').animate({
bottom: '50px'
},250);
$('#box-main').animate({
bottom: '-150px'
},250);
clicked = false;
}
});
希望这有帮助。
答案 1 :(得分:2)
因为我不依赖变量,所以我只在主盒中添加了一个类:&#34;可见&#34;
这个类在两个动画中都被切换,因此当你显示它时它被设置,当你隐藏它时被移除:
更新:要在可点击的div中添加一些箭头,我们添加一个&#34;向上箭头&#34;类到html中的#arrow-hover元素:
<div id="container">
<div id="box-main"></div>
<div id="arrow-hover" class"arrow-up"></div>
<footer></footer>
</div>
然后我们将toggleClass函数添加到你的箭头悬停点击处理程序,以在箭头向上和向下箭头类之间切换
$('body').on('click','#arrow-hover',function(){
if($('#box-main').hasClass("visible"))
{
$('#arrow-hover').animate({
bottom: '50px'
},250).toggleClass("arrow-up arrow-down");
$('#box-main').animate({
bottom: '-150px'
},250).toggleClass("visible");
}else
{
$('#arrow-hover').animate({
bottom: '200px'
},250).toggleClass("arrow-up arrow-down");
$('#box-main').animate({
bottom: '50px'
},250).toggleClass("visible");
}
});
现在要做的就是在你的CSS中定义向上箭头和向下箭头的类并设置背景图像。
出于这些目的,我使用图标字体&#34; font awesome&#34; http://jsfiddle.net/hapttwf6/28/ - &GT;这是它的样子;)
答案 2 :(得分:1)
看到我更新的小提琴:
$('body').on('click','#arrow-hover',function(){
$('#arrow-hover').animate({
bottom: '200px'
},250);
$('#box-main').animate({
bottom: '50px'
},250);
if($('#arrow-hover').css('bottom')!='50px'){
$('#arrow-hover').animate({
bottom: '50px'
},250);
$('#box-main').animate({
bottom: '-150px'
},250);
}
});
&#13;
#container
{
margin:0;
width:100%;
height:100%;
}
#box-main{
position: fixed;
left:150px;
bottom: -150px;
width: 250px;
height: 150px;
background: #000;
z-index: 100;
}
#arrow-hover{
position: fixed;
bottom: 50px;
left: 250px;
width: 50px;
height: 50px;
background: blue;
z-index: 100;
}
footer
{
width:100%;
background:green;
height:50px;
bottom:0;
left:0;
position:absolute;
z-index:500;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="container">
<div id="box-main"></div>
<div id="arrow-hover"></div>
<footer></footer>
</div>
&#13;