`

scrollLeft,scrollTop,滚动代码的总结

阅读更多
今天和兄弟一起研究了一下横向和竖向图片滚动的代码,很兴奋,因为解决了几个小问题
第一个:
for(var i=1;i<50;i++)
     {
          document.getElementById("TextBox1").scrollTop++;
          document.getElementById("TextBox1").scrollLeft++;
      }
我刚开始的时候写成了
for(int i=1;i<50;i++)
     {
          //document.getElementById("TextBox1").scrollTop++;
          document.getElementById("TextBox1").scrollLeft++;
      }
IE提示错误,Exception ;我半天不知道怎么回事,最后才发现是犯了个很低级的错误,javascript中的
变量用var定义,可以不定义!
下面入正题
clientHeight
大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看
到内容的这个区域的高度。

offsetHeight
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

scrollHeight
IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。
NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。

简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。
NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度,只不过当网页内容高度小于等于
clientHeight 时,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 认为 offsetHeight 是可视区域 clientHeight 滚动条加边框。
scrollHeight 则是网页内容实际高度。

同理
clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同,只是把高度换成宽度即可。

说了半天还是给个图吧



那么当容器如div中的table的宽大与定义的div的宽的时候,这个时候ScrollLeft++是可以起作用的!
example




<body>
    <form id="form1" runat="server">
    <div id="demo">
        <asp:TextBox ID="TextBox1" runat="server" Height="50px" TextMode="SingleLine" Width="200px" Wrap="False">
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        </asp:TextBox>
        <input id="Button1" type="button" value="button" onclick="scrolltop1()" /></div>
    <script language="javascript" type="text/javascript">
  function scrolltop1()
  {
     for(var i=1;i<50;i++)
     {
          document.getElementById("TextBox1").scrollTop++;
          document.getElementById("TextBox1").scrollLeft++;
      }
  window.alert(document.getElementById("TextBox1").scrollTop);
  window.alert(document.getElementById("TextBox1").scrollWidth);
  window.alert(document.getElementById("TextBox1").scrollLeft);
  }
    </script>
    </form>
</body>




而这里的 document.getElementById("TextBox1").scrollTop++;是不能起作用的!为什么呢?因为他的容器的
高scrollHeight不大于定义的 <asp:TextBox ID="TextBox1" runat="server" Height="50px">中的50px
如果大于就可以起作用了,如
<body>
    <form id="form1" runat="server">
    <div id=demo>
      
        <asp:TextBox ID="TextBox1" runat="server" Height="24px" TextMode="MultiLine" Width="30px" Wrap="False">
        fghdsfgfdgdf
guj</asp:TextBox>
        <input id="Button1" type="button" value="button" onclick="scrolltop1()" /></div>
    <script language="javascript" type="text/javascript">
  function scrolltop1()
  {
      for(var i=1;i<500;i++)
      {
          document.getElementById("TextBox1").scrollTop++;
          document.getElementById("TextBox1").scrollLeft++;
      }
  window.alert(document.getElementById("TextBox1").scrollWidth);
  window.alert(document.getElementById("TextBox1").scrollLeft);
  }
    </script>
    </form>
</body>
这个时候,scrollleft和scrolltop都是可以起作用的,这里给我们一起提示
要想用这两个家伙就必须把实际的内容弄得多于定义的容器的width和height

下面给出横向移动的代码




<form runat=server>
<div id="demo" style="overflow:hidden;width:300px;align=center">
<table border=0 align=center cellpadding=1 cellspacing=1 cellspace=0 >
<tr>
<td valign=top bgcolor=ffffff id=marquePic1>
<table width=90% border=0 cellspacing=0 cellpadding=0>
<tr align="center">
<td><a href="#" target="new"><img src="image/iecool001.gif" /></a></td>
<td><a href="#" target="new"><img src="image/iecool002.gif" /></a></td>
<td><a href="#" target="new"><img src="image/iecool003.gif" /></a></td>
<td><a href="#" target="new"><img src="image/iecool004.gif" /></a></td>
<td><a href="#" target="new"><img src="image/iecool005.gif" /></a></td>
</tr>
</table>
</td>
<td id="marquePic2" valign="top"></td>
</tr>
</table>
</div>
<script type="text/javascript">
var speed=30 ;
//marquePic2.innerHTML=marquePic1.innerHTML;
function Marquee(){
if(demo.scrollLeft>=marquePic1.scrollWidth){
  demo.scrollLeft=0;
}
else{
  demo.scrollLeft++;
}
}
var MyMar=setInterval(Marquee,speed);
demo.onmouseover=function() {
clearInterval(MyMar);
}
demo.onmouseout=function() {
MyMar=setInterval(Marquee,speed);
}
</script>
</form>


在给出竖向移动的代码




<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<div id="demo" style="height:72px; width:180px; overflow:hidden ">   
      <div id="demo1">
        <div align="center">
       
            <img src="image/iecool001.gif" />
            <img src="image/iecool002.gif" />
            <img src="image/iecool003.gif" />
            <img src="image/iecool004.gif" />
            <img src="image/iecool005.gif" />
            <img src="image/iecool006.gif" />     
          </div>
      </div>
<div id="demo2"></div>
<!--滚动的javascript-->
<script>
var speed1=8
demo2.innerHTML=demo1.innerHTML
function Marquees1(){
if(demo2.offsetTop-demo.scrollTop<=0)
demo.scrollTop-=demo1.offsetHeight
else{
demo.scrollTop++
}
}
var MyMars1=setInterval(Marquees1,speed1)
demo.onmouseover=function() { clearInterval(MyMars1) }
demo.onmouseout=function() { MyMars1=setInterval(Marquees1,speed1) }

</script>
</div>
</body>
</html>


其实代码是比较简单的,只是要理解其意思就可以了!
  • 大小: 18.1 KB
分享到:
评论

相关推荐

    jquery scroll()区分横向纵向滚动条的方法

    jquery在scroll()事件里面,...然后绑定scroll事件,触发的时候获取scrollLeft/scrollTop和初始化的scrollLeft/scrollTop对比判断是横向还是纵向,同时更新对象存储的scrollLeft/scrollTop 代码如下:&lt;style&gt;.c{h

    图片无缝滚动代码(向左/向下/向上)

    下面说一下这个相对简单的实现思路:一个设定宽度并且隐藏超出它宽度的内容的容器demo,里面放demo1和 demo2,demo1是滚动内容,demo2为demo1的直接克隆,通过不断改变demo1的scrollTop或者scrollLeft达到滚动的目的...

    js浏览器滚动条卷去的高度scrolltop(实例讲解)

    2、scrollTop/scrollLeft:滚动条卷去的高度/宽度(这两个属性是唯一“可读写”的属性) box.scrollTop = 0 // 直接回到容器的顶部 我们的scrollTop的值是存在边界值(最大和最小值),我们设置的值比最小值小或者比...

    js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍

    代码如下: &lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt; &lt;html xmlns=”http://www.w3.org/1999/xhtml”&gt; &lt;head&...

    JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)

    **兼容IE,Firefox 遵循W3C标准写法的图片无缝滚动代码(支持左移/右移功能)(本示例为上下两行图片进行双行滚动) **实现思路:一个设定宽度并且隐藏超出它宽度的内容的容器demo,里面放demo1和demo2,demo1是滚动...

    让页面上两个div中的滚动条(滑块)同步运动示例

    使用JQuery添加如下代码 代码如下: $(‘#sourceDiv’).scroll( function() { $(‘#targetDiv’).scrollTop($(this).scrollTop()); $(‘#targetDiv’).scrollLeft($(this).scrollLeft()); }); $(‘#targetDiv’)....

    基于jquery的DIV随滚动条滚动而滚动的代码

    核心代码: 代码如下: [removed][removed] [removed] $(function() { $(window).scroll(function() { var top = $(window).scrollTop()+200; var left= $(window).scrollLeft()+320; $(“#editInfo”).css({ left:...

    页面加载完毕后滚动条自动滚动一定位置

    昨天有一需求,是希望... 想要页面加载完毕时自动滚动一定距离,则使用jquery的animate,如下面例子: $(“html,body”).animate({“scrollLeft”: “300px”}, 1000); $(“html,body”).animate({“scrollTop”: “30

    jQuery检测滚动条是否到达底部

    scrollTop() 获取匹配元素相对滚动条顶部的偏移。 scrollLeft() 获取匹配元素相对滚动条左侧的偏移。 scroll([[data],fn]) 当滚动条发生变化时触犯scroll事件 jQuery检测滚动条到达底部代码: $(docum

    DIV随滚动条滚动而滚动的实现代码【推荐】

    记得以前写这样的代码比较麻烦,现在有了JQuery简单多了,就几行代码搞定! [removed][removed] [removed] $(function() { $(window).scroll(function() { var top = $(window).scrollTop()+200; var left= $...

    perfect-scrollbar:简约但完美的自定义滚动条插件

    设计布局无变化无需对DOM树进行任何操作使用普通的scrollTop和scrollLeft 滚动条样式是完全可定制的高效的版式更新希望您会喜欢!实时预览查看代码段。 您可以立即将其派生用于测试和实验目的。更有用的插件您会在...

    javascript 获取模态窗口的滚动位置代码

    到现在终于解决的了模态窗口的滚动位置获取办法,现在来分享一下, 其实很简单,给你的弹出模态窗口的div块设置一个id, 在js中通过 document.getElementById(‘divID’).scrollLeft 这样获取的是向右滚动的值 ...

    javascript 回到顶部效果的实现代码

    代码如下://speed 滚动速度 time 时间间隔function gotoTop(speed,time){  speed = speed || 0.1; time = time || 16;  // 滚动条到页面顶部的水平距离 var x = document.body.scrollLeft;  // 滚动条到页面...

    原生js简单实现放大镜特效

    本文实例为大家分享了js实现放大镜特效展示的具体代码,供大家参考,具体内容如下 ...scrollTop 内容滚动的上边距 scrollLeft 内容滚动的左边距 onmousemove 鼠标移动事件 onmouseover 鼠标划过事件 主要思路:  

    js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth (包括边线的宽);...网页被卷去的左: document.body.scrollLeft

    一个用jquery写的判断div滚动条到底部的方法【推荐】

    jQuery 里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。 我们...

    基于javascript的无缝滚动动画实现2

    不过换汤不换药,还是来来回回在scrollTop/scrollLeft与offsetTop/offsetLeft上做文章。总的思路基本是这样,让某个元素整体向某个方向移动,这样它里面的内容(图片或文字)就跟着移动,当元素移动到某一个距离后就...

    通过JS 获取Mouse Position(鼠标坐标)的代码

    在IE中始终当有滚动条的时候,发现document.body.scrollTop并没有起到作用。后来在google中搜索到一篇文章Mouse Cursor Position,详细介绍了浏览器鼠标定位的问题。各个浏览器对鼠标定位的标准不一样,就连不通版本...

    JavaScript获取鼠标坐标的函数(兼容IE、FireFox、Chrome)

    还好网上什么都有,上网找了一个浏览器兼容性最佳的函数,经测试兼容IE、FireFox、Chrome,并且不会有滚动条误差问题,存档下,以备后用 :slightly_smiling_face: 代码如下:function mousePos(e){ var x,y;...

    JavaScript Table行定位效果

    一开始的需求只是表头部分在滚动时能一直固定在头部,那关键要实现的就是让tr能定位。 首先想到的方法是给tr设置relative,用ie6/7测试以下代码: Code &lt;!DOCTYPE ...

Global site tag (gtag.js) - Google Analytics