请教一个JQ的浮动机制问题

sinat_37697026 2017-03-03 11:07:13

<script type="text/javascript">
Y_jQ(function(){
var fx_height = Y_jQ("#WB_DiyBox_Fix").offset().top;
var fx2_height = Y_jQ("#nimeide").offset().top;
Y_jQ(window).scroll(function(){
var this_scrollTop = Y_jQ(this).scrollTop();
if( this_scrollTop > fx_height && this_scrollTop < fx2_height ){
Y_jQ("#WB_DiyBox_Fix").addClass("Fixed fadeInDown animated");
}
else{
Y_jQ("#WB_DiyBox_Fix").removeClass("Fixed fadeInDown animated");
}
});
});
</script>


这段中,fx2高度必须要大于fx的高度,并且fx2的ID顶部到达浏览器的顶端后才会执行 .removeClass。
如何把这个机制修改成为 页底 的ID,也就是说,在滚动屏幕时,

1.当页底DIV层的顶部与浏览器的顶端的距离等于fx时候。就绝对定位在原处不动。
2.当页底DIV层的顶部与浏览器的顶端的距离大于fx时候。继续保持浮动。
3.当页底DIV层的顶部与浏览器的顶端的距离小于fx时候。就相对定位随浏览器内容向上滚动。

这个原理就像是新浪微博边栏的那个机制。求大神帮忙
...全文
189 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_37697026 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 webyellow 的回复:


<script>
var ifAjax = 0;
var asyNo = 0;
var curVal = parseInt($(".pagemoreval").val());
$(window).scroll(function () {
	var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();
	/*var classVal = $(".pageclass").val();
	var nextPage = curVal + 1;
	if(scrollBottom < 500){
			if(ifAjax == 0 && asyNo == 0){
				$.ajax({
					type: "get",
					async: false,
					dataType: 'html',
					url: "?ac=lists_ajax&class="+classVal+"&page="+nextPage,
					beforeSend: function(XMLHttpRequest){
						$(".classload").css("display","block");
						curVal++;
						asyNo = 1;
					},
					success: function(data, textStatus){
						if(data.length < 100){
							ifAjax = 1
						}else{
							$(".contl dl").append(data);
							asyNo = 0;
						}
					},
					complete: function(XMLHttpRequest, textStatus){
						$(".classload").css("display","none");
					},
					error: function(){
						$(".classnull").css("display","block");
					}
				});
			}
	}*/
	var winHei = $(window).height();
	var rigHei = $(".rightFix").height() - 310;
	var lefHei = $(".contl").height();
	var sctBot = $(".footer").height() + $(".flcont").height() + 90;//底高度
	if(rigHei >= winHei){
		if($(window).scrollTop() >= rigHei){
			$(".rightFix").css({"position":"fixed","bottom":"0"});	
		}
		if(scrollBottom < sctBot){
			$(".rightFix").css("position","fixed");
			$(".rightFix").css("bottom",sctBot);
		}
		if($(window).scrollTop() <= 310 || $(window).scrollTop() <= rigHei ){
			$(".rightFix").css({"position":"static","bottom":"0"});		
		}
	}
	if(rigHei < winHei){
		if($(window).scrollTop() > rigHei){
			$(".rightFix").css({"position":"fixed","top":"0"});	
		}
		if($(window).scrollTop() <= 310){
			$(".rightFix").css({"position":"static","top":"0"});		
		}
	}
	var _top = document.documentElement.scrollTop || document.body.scrollTop;
	if(_top>=200){
		$(".gotop").fadeIn();
	}else{
		$(".gotop").fadeOut();
	}
});
var _top = document.documentElement.scrollTop || document.body.scrollTop;
	if(_top>=200){
		$(".gotop").fadeIn();
	}else{
		$(".gotop").fadeOut();
	}
$(".gotop").click(function(){
	$(window).scrollTop(0);
});
		
</script>
这个要自己算的,之前做过一个,注释部分是异步加载数据的。修改下用吧。
有HTML的部分吗。有点看不懂
daswcszxw 2017-03-06
  • 打赏
  • 举报
回复


<script>
var ifAjax = 0;
var asyNo = 0;
var curVal = parseInt($(".pagemoreval").val());
$(window).scroll(function () {
	var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();
	/*var classVal = $(".pageclass").val();
	var nextPage = curVal + 1;
	if(scrollBottom < 500){
			if(ifAjax == 0 && asyNo == 0){
				$.ajax({
					type: "get",
					async: false,
					dataType: 'html',
					url: "?ac=lists_ajax&class="+classVal+"&page="+nextPage,
					beforeSend: function(XMLHttpRequest){
						$(".classload").css("display","block");
						curVal++;
						asyNo = 1;
					},
					success: function(data, textStatus){
						if(data.length < 100){
							ifAjax = 1
						}else{
							$(".contl dl").append(data);
							asyNo = 0;
						}
					},
					complete: function(XMLHttpRequest, textStatus){
						$(".classload").css("display","none");
					},
					error: function(){
						$(".classnull").css("display","block");
					}
				});
			}
	}*/
	var winHei = $(window).height();
	var rigHei = $(".rightFix").height() - 310;
	var lefHei = $(".contl").height();
	var sctBot = $(".footer").height() + $(".flcont").height() + 90;//底高度
	if(rigHei >= winHei){
		if($(window).scrollTop() >= rigHei){
			$(".rightFix").css({"position":"fixed","bottom":"0"});	
		}
		if(scrollBottom < sctBot){
			$(".rightFix").css("position","fixed");
			$(".rightFix").css("bottom",sctBot);
		}
		if($(window).scrollTop() <= 310 || $(window).scrollTop() <= rigHei ){
			$(".rightFix").css({"position":"static","bottom":"0"});		
		}
	}
	if(rigHei < winHei){
		if($(window).scrollTop() > rigHei){
			$(".rightFix").css({"position":"fixed","top":"0"});	
		}
		if($(window).scrollTop() <= 310){
			$(".rightFix").css({"position":"static","top":"0"});		
		}
	}
	var _top = document.documentElement.scrollTop || document.body.scrollTop;
	if(_top>=200){
		$(".gotop").fadeIn();
	}else{
		$(".gotop").fadeOut();
	}
});
var _top = document.documentElement.scrollTop || document.body.scrollTop;
	if(_top>=200){
		$(".gotop").fadeIn();
	}else{
		$(".gotop").fadeOut();
	}
$(".gotop").click(function(){
	$(window).scrollTop(0);
});
		
</script>
这个要自己算的,之前做过一个,注释部分是异步加载数据的。修改下用吧。

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧