浏览器在没有出滚动条时,赋值后该值不会发生变化,始终是0。
下面是示例,该检测方法,不仅可以检测页面滚动条,传入要检测的节点,一样可以得到想要的结果。
代码(给scrollLeft,scrollTop赋负数值时会报错,此外scrollLeft,scrollTop的值不能大于实际最大的滚动值):
复制代码代码示例:
var isScroll = function (el) {
// test targets
var elems = el ? [el] : [document.documentElement, document.body]
var scrollX = false, scrollY = false
for (var i = 0i <elems.lengthi++) {
var o = elems[i]
// test horizontal
var sl = o.scrollLeft
o.scrollLeft += (sl >0) ? -1 : 1
o.scrollLeft !== sl &&(scrollX = scrollX || true)
o.scrollLeft = sl
// test vertical
var st = o.scrollTop
o.scrollTop += (st >0) ? -1 : 1
o.scrollTop !== st &&(scrollY = scrollY || true)
o.scrollTop = st
}
// ret
return {
scrollX: scrollX,
scrollY: scrollY
}
}
第二部分,jquery判断滚动条到底部并加载数据的方法。js滚动条回到顶部示例代码 js 页面刷新记住滚动条位置的方法 js动态隐藏滚动条(兼容多浏览器 IE FF等)
有些浏览器下会出现累计执行、重复执行的情况,可以在准备执行前和执行完毕加一个执行完毕的标记,当判断上一次执行完毕,再执行该次操作。
复制代码代码示例:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>jQuery实现当拉动滚动条到底部加载数据</title>
<style type="text/css">
*{margin:0padding:0}
body{font-size:14pxcolor:#444font-family:"微软雅黑",Arialbackground:#fff}
a{color:#444text-decoration: none}
a:hover{color:#065BC2text-decoration: none}
.clear{clear:both}
img{border:nonevertical-align: middle}
ul{list-style: none}
</style>
</head>
<body>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
//首先,窗口绑定事件scroll
$(window).bind("scroll",function() {
// 判断窗口的滚动条是否接近页面底部,这里的20可以自定义
if ($(document).scrollTop() + $(window).height() >$(document).height() - 20) {
//没有写ajax的调用,直接触发了链接的click事件。
$("#container").append('<div style="height:500px">dd</div>')
} // www.jbxue.com
})
</script>
</head>
<body>
<div id="container">
dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>
dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>
dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>dd<br/>
</div>
</body>
</html>
另外,此下拉到最后,浏览器会记住当前滚动条位置,会在刷新页面后,直接执行操作,所以在刷新页面时要执行,滚动条到顶部的操作。
复制代码代码示例:
<script>
$(document).ready(function(){
$('body,html').animate({scrollTop:0})
})
</script>
在jQuery中获取浏览器窗口的尺寸信息
在jQuery中获取浏览器及页面的长度与宽度主要用到以下几个代码:
$(window).height() //浏览器时下窗口可视区域高度
$(document).height()//浏览器时下窗口文档的高度
$(document.body).height()//浏览器时下窗口文档body的高度
$(document.body).outerHeight(true) //浏览器时下窗口文档body的总高度 包括border padding margin
$(window).width() //浏览器时下窗口可视区域宽度
$(document).width()//浏览器时下窗口文档对于象宽度
$(document.body).width()//浏览器时下窗口文档body的高度
$(document.body).outerWidth(true) //浏览器时下窗口文档body的总宽度 包括border padding margin
给个简单的 也需引入jqueryHtml:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function(){
$('#showWin').click(showWin)
function showWin(){
$('#floatWin').show('slow')
}
})
</script>
</head>
<body>
<button id="showWin">显示窗口</button>
<div id="floatWin"
style="right:0pxbottom:0pxdisplay:nonewidth: 200pxheight: 200pxbackground-color: #ccccccposition: absolute">
</div>
</body>
</html>
最近项目里正好有类似需求 代码给出来供你研究下 需要jQuery支持
有什么疑问可以hi我
(function(){
$(function(){
$.ajax({
url: messagePath+'messageBox.do',
// dataType:'json',
success:function(json){
alert(json)
showMessages(json)
}
})
})
function showMessages(json){
if(json.messagecount>0){
var messageBox ="<div id=\"OTOS_MESSAGEBOX_CONTAINER\">"+
" <table id=\"OTOS_MESSAGEBOX_HEADER\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">"+
" <tr>"+
" <td id=\"OTOS_MESSAGEBOX_HEADER_TEXT\"></td>"+
" <td align=\"right\" width=\"20\"><img id=\"OTOS_MESSAGEBOX_CLOSE\" style=\"cursor: pointer\" src=\"resources/images/close.gif\"></td>"+
" </tr>"+
" </table>"+
" <table id=\"OTOS_MESSAGEBOX_CONTEXT_TITLE_TABLE\" width=\"100%\">"+
" <tr id=\"OTOS_MESSAGEBOX_CONTEXT_TABLE_HEADER\">"+
" <td>标题</td>"+
" <td width=\"50\">类型</td>"+
" <td width=\"40\">发送人</td>"+
" </tr>"+
" </table>"+
" <div id=\"OTOS_MESSAGEBOX_CONTEXT\">"+
" <table id=\"OTOS_MESSAGEBOX_CONTEXT_TABLE\" width=\"100%\"></table>"+
" </div>"+
"</div>"
$('body').append(messageBox)
// $('#OTOS_MESSAGEBOX_CONTAINER').jqDrag("#OTOS_MESSAGEBOX_HEADER")
$('#OTOS_MESSAGEBOX_HEADER_TEXT').text("您有"+json.messagecount+"条未读消息!")
$('#OTOS_MESSAGEBOX_CLOSE').bind('click',closeMessageBox)
$('#OTOS_MESSAGEBOX_CONTAINER').show('slow')
for(var i=0i<json.list.lengthi++){
var map = json.list[i]
$('#OTOS_MESSAGEBOX_CONTEXT_TABLE').append("<tr onClick=\"toViewMessage("+map.id+",+"+map.mid+")\" class=\"OTOS_MESSAGEBOX_CONTEXT_TABLE_TR\"><td>"+cutTitle(map.title)+"</td><td width=\"50\" nowarp>"+map.type+"</td><td width=\"40\">"+map.sender+"</td></tr>")
}
$('#OTOS_MESSAGEBOX_CONTEXT_TABLE').verticalRoll({parentid:'OTOS_MESSAGEBOX_CONTEXT'})
}
}
// 纵向滚动
$.fn.verticalRoll = function(options) {
var opts = $.extend({}, $.fn.verticalRoll.defaults, options)
if(!opts.parentid||$('#'+opts.parentid).size()<1){
alert('父级不存在')
return false
}
var $p = $('#'+opts.parentid)
var $t = $(this)
if($t.attr('tagName')!='TABLE'){
alert('不是table')
return false
}
var s = $t.find('tr').size()
$p.css('overflow','hidden')
$t.css('position','absolute')
if(s>5){
window.setInterval(function(){
var temp = $t.find('tr:first')
temp.fadeOut('slow',function(){
$t.append(temp)
temp.show()
})
},2000)
}else{
return false
}
$.fn.verticalRoll.defaults = {}
}
})(jQuery)
function closeMessageBox(){
$('#OTOS_MESSAGEBOX_CONTAINER').hide('slow')
$('#OTOS_MESSAGEBOX_CONTAINER').fadeOut()
}
function cutTitle(title){
var temp
if(title.length>8){
temp = title.substring(0,8)+"..."
return temp
}else{
return title
}
}
function toViewMessage(id,rid){
window.location.href = "messagesUserList.do?id="+id+"&rid="+rid
}
Css文件
@CHARSET "UTF-8"
#OTOS_MESSAGEBOX_CONTAINER {
position: absolute
width: 240px
height: 145px
border: 1px solid #81b8ff
background-color: #deecfd
right: 0px
bottom: 0px
overflow:hidden
display: none
}
#OTOS_MESSAGEBOX_CONTAINER TD{
white-space: nowrap
overflow: hidden
height: 18px
}
#OTOS_MESSAGEBOX_HEADER {
cursor: move
border-bottom: 1px solid #81b8ff
background-color: #9ACDFE
overflow:hidden
}
#OTOS_MESSAGEBOX_HEADER td {
padding: 2px
color: #ffffff
overflow:hidden
}
#OTOS_MESSAGEBOX_CONTEXT {
position: relative
height: 102px
overflow:hidden
}
#OTOS_MESSAGEBOX_CONTEXT td{
white-space: nowrap
overflow: hidden
}
#OTOS_MESSAGEBOX_HEADER_TEXT {
font-weight: bold
overflow:hidden
}
#OTOS_MESSAGEBOX_FOOTER {
position: relative
bottom: 0px
padding-right: 2px
text-align: right
overflow:hidden
}
.OTOS_MESSAGEBOX_CONTEXT_TABLE_TR{
cursor:pointer
color: #336699
overflow:hidden
}
#OTOS_MESSAGEBOX_CONTEXT_TABLE_HEADER td{
overflow:hidden
font-weight: bold
overflow:hidden
}
复制粘贴我的代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
*{margin:0}
body{
height:1000px
width:1000px
}
#a{
width:300px
height:100px
background:red
}
</style>
<script>
var isie6 = window.XMLHttpRequest?false:true
window.onload = function(){
var a = document.getElementById('a')
var d = document.getElementById('d')
if(isie6){
a.style.position = 'absolute'
window.onscroll = function(){
d.innerHTML = ''
}
}else{
a.style.position = 'fixed'
}
a.style.left= '0'
a.style.bottom = '0'
}
</script>
</head>
<body>
<div id ="d" style="display:none">rgrrrrrrrr</div>
<div id='a'>test</div>
</body>
</html>
若是效果不是你想要的,我还可以给你写,到你满意为止。