点击并向下滚动页面,滑入Call to Action div Bugy



我有一个div,点击后会在右边滑入,但如果它还没有打开或打开,我也会尝试让它在滚动中滑入。所以你们可以点击按钮让它滑入,或者当你们向下滚动时关闭页面,它会打开,然后在几秒钟后消失,或者点击按钮。

我有点工作,但很麻烦。如有任何帮助,我们将不胜感激!

http://jsfiddle.net/abennington/50tab7vh/2/

HTML:

<div class="floating-form" id="contact_form">
<div class="contact-opener">CTA Box Toggle</div>    
<div class="contact_body">
<h3>This is a CTA Box</h3>
<p>On click it will slide out and on scroll it will scroll out as you get down the page and then go away.</p>
<a href="#" class="btn btn-primary btn-block"><i class="fa fa-calendar-o"></i> CTA Button</a>

</div>
</div>

jQuery:

$(document).ready(function(){ 
var buttonhieght = $('.contact-opener').width()-52;
var popdiv = $('#contact_form').width();
var _scroll = true, _timer = false, _floatbox = $("#contact_form"), _floatbox_opener = $(".contact-opener") ;
_floatbox.css("right", "-"+ popdiv+"px"); //initial contact form position
_floatbox_opener.css("left", "-"+ buttonhieght+"px"); //initial contact form position
//Contact form Opener button
_floatbox_opener.click(function(){
if (_floatbox.hasClass('visiable')){
_floatbox.animate({'right': '-'+ popdiv+'px'}, {duration: 300}).removeClass('visiable');
}else{
_floatbox.animate({"right":"0px"},  {duration: 300}).addClass('visiable');
}
}); 
});
$(document).on('scroll', function() {
var popdiv = $('#contact_form').width();
var _floatbox = $("#contact_form");
var scrollTop = $(window).scrollTop();
if (scrollTop > 700) {
if (_floatbox.hasClass('visiable')){
_floatbox.animate({'right': '-'+ popdiv+'px'}, {duration: 300}).removeClass('visiable');
}else{
_floatbox.animate({"right":"0px"},  {duration: 300}).addClass('visiable');
}
}
})

CSS:

/* floating box style */
.floating-form * { color: #fff; }
.floating-form {
width:300px;
max-width: 300px;
top: 100px;
font: 13px Arial, Helvetica, sans-serif;
background: #F9F9F9;
background: #754c24;
color: #fff;    
right: 10px;
position: fixed;
z-index: 1000;
box-shadow: -2px -0px 8px rgba(43, 33, 33, 0.06);
-moz-box-shadow: -2px -0px 8px rgba(43, 33, 33, 0.06);
-webkit-box-shadow:  -2px -0px 8px rgba(43, 33, 33, 0.06);
}
.contact-opener {
position: absolute;
text-transform:uppercase;   
left: -100px;
transform: rotate(-90deg);
top: 150px;
background-color: #754c24;
padding: 10px 15px;
color: #fff;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.43);
cursor: pointer;
border-radius: 5px 5px 0px 0px;
-webkit-border-radius: 5px 5px 0px 0px;
-moz-border-radius: 5px 5px 0px 0px;
box-shadow: -2px -0px 8px rgba(43, 33, 33, 0.06);
-moz-box-shadow: -2px -0px 8px rgba(43, 33, 33, 0.06);
-webkit-box-shadow:  -2px -0px 8px rgba(43, 33, 33, 0.06);
}
#contact_form .contact_body { padding: 30px 30px 10px 30px; }
#contact_form .contact_body h3 { margin: 0rem 0 1.0rem; }
#contact_form .contact_body ol { padding: 5px 0px 10px 20px; }
#contact_form .contact_body li { padding: 8px 0px; font-weight: 700; }
#contact_form .contact_body .btn-primary { background: rgba(35,26,19,0.9); margin-bottom: 20px; }

问题是滚动处理程序从未分离,因此#contact_form一直显示/隐藏,直到所有滚动事件都被"清除"。我已经更新了你的fiddle,使其在页面滚动超过某个点时只尝试显示#contact_form一次,然后删除滚动处理程序。

我想这就是你想要的:http://jsfiddle.net/50tab7vh/3/

最新更新