×

scrollLeft,scrollTop,滚动代码的总结

作者:Terry2015.09.24来源:Web前端之家浏览:14179评论:0

今天和兄弟一起研究了一下横向和竖向图片滚动的代码,很兴奋,因为解决了几个小问题
第一个:
 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++是可以起作用的!

代码:

  1. <body>   

  2.     <form id="form1" runat="server">   

  3.     <div id="demo">   

  4.         <asp:TextBox ID="TextBox1" runat="server" Height="50px" TextMode="SingleLine" Width="200px" Wrap="False">   

  5.         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa        </asp:TextBox>   

  6.         <input id="Button1" type="button" value="button" onclick="scrolltop1()" /></div>   

  7.     <script language="javascript" type="text/javascript">   

  8.   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>   

  9.     </form>   

  10. </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

下面给出横向移动的代码

  1. <form runat=server>   

  2. <div id="demo" style="overflow:hidden;width:300px;align=center">   

  3. <table border=0 align=center cellpadding=1 cellspacing=1 cellspace=0 >   

  4. <tr>   

  5. <td valign=top bgcolor=ffffff id=marquePic1>   

  6. <table width=90% border=0 cellspacing=0 cellpadding=0>   

  7.  <tr align="center">   

  8.  <td><a href="#" target="new"><img src="image/iecool001.gif" /></a></td>   

  9.  <td><a href="#" target="new"><img src="image/iecool002.gif" /></a></td>   

  10.  <td><a href="#" target="new"><img src="image/iecool003.gif" /></a></td>   

  11. <td><a href="#" target="new"><img src="image/iecool004.gif" /></a></td>   

  12. <td><a href="#" target="new"><img src="image/iecool005.gif" /></a></td>   

  13. </tr>   

  14.  </table>   

  15. </td>   

  16. <td id="marquePic2" valign="top"></td>   

  17. </tr>   

  18. </table>   

  19. </div>   

  20. <script type="text/javascript"var speed=30 ;//marquePic2.innerHTML=marquePic1.innerHTML;    

  21. 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>   

  22. </form>  

在给出竖向移动的代码

  1. <html>   

  2. <head>   

  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   

  4. </head>   

  5. <body>   

  6. <div id="demo" style="height:72px; width:180px; overflow:hidden ">          <div id="demo1">   

  7.         <div align="center">   

  8.                     <img src="image/iecool001.gif" />   

  9.             <img src="image/iecool002.gif" />   

  10.             <img src="image/iecool003.gif" />   

  11.             <img src="image/iecool004.gif" />   

  12.             <img src="image/iecool005.gif" />   

  13.             <img src="image/iecool006.gif" />                </div>   

  14.       </div>   

  15. <div id="demo2"></div>   

  16. <!--滚动的javascript-->   

  17. <script>   

  18. var speed1=8   

  19. demo2.innerHTML=demo1.innerHTMLfunction Marquees1(){if(demo2.offsetTop-demo.scrollTop<=0)demo.scrollTop-=demo1.offsetHeightelse{demo.scrollTop++   

  20. }}var MyMars1=setInterval(Marquees1,speed1)demo.onmouseover=function() { clearInterval(MyMars1) }demo.onmouseout=function() { MyMars1=setInterval(Marquees1,speed1) }   

  21. </script>   

  22. </div>   

  23. </body>   

  24. </html>  

您的支持是我们创作的动力!
温馨提示:本文作者系Terry ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/scrollTop.html

网友评论文明上网理性发言已有0人参与

发表评论: