获取窗口属性,获取dom尺寸,脚本化css(上)-->查看滚动条距离,求可视区窗口尺寸的方法,查看元素的几何尺寸,让滚动条滚动,自动阅读器小程序

一,查看滚动条的滚动距离

window.pageXOffset / pageYOffset   IE8及IE8以下不兼容

IE9以下的求滚动条距离距离:document.body.scrollLeft/document.body.scrollTop 
: document.documentElement.scorllLeft/document.documentElement.scorllTop
两个方法,但由于兼容性太差两个方法不一定在哪个浏览器管用,所以两个方法相加就是最后的滚动条距离
(因为两个方法一旦有一个方法有值另一个方法一定为0)

  二,封装兼容性方法,求滚动轮滚动距离getScrollOffset()  scroll是滚动的意思  offset尺寸的意思


​
function getScrollOffset(){
    if(window.pageXOffset){
        return{
            x : window.pageXOffset,
            y : window.pageYOffset
        }
    }else{
       return{
           x : document.body.scrollLeft+document.documentElement.scrollLeft,
           y : document.body.scrollTop+document.documentElement.scrollTop
       }
    }
}

三,求可视区窗口的尺寸


1.查看可视区尺寸  -->用html写的部分 控制台不算
window.innerWidth/innerHeight    -->IE8及IE8以下不兼容
2.document.documentElement.clientWidth/clientHeight -->标准模式下,任何浏览器都兼容  -->client是客户端的意思
  document.body.clientWidth/clientHeight  -->适用于怪异模式下的浏览器
(在html标签上面还有一个<!DOCTYPE html> 删除他就是怪异模式/混杂模式,不删除就是标准模式) -->两种渲染模式
怪异模式一经启动就会试图去兼容以前的语法-->比如写的是IE6的语法,用IE7打开他会有的不兼容,启动怪异模式的话会自动退回IE6的语法

​

四,封装兼容性方法,返回浏览器视口尺寸getViewportOffset()    -->viewport是可视区窗口的意思  offset尺寸的意思

 function getViewportOffset(){
     if(window.innerWidth){
         return{
             w : window.innerWidth,
             h : window.innerHeight
         }                           compat-->意思为兼容性 compatMode-->意思为兼容模式
     }else{                  -->document.compatMode等于"CSS1Compat"的话为标准模式下--等 
                            于"BackCompat"--意思为向后兼容-为怪异模式
         if(document.compatMode === "BackCompat"){   
             return{
                 w : document.body.clientWidth,
                 h : document.body.clientHeight
             }
         }else{
             return{
               w : document.documentElement.clientWidth,
               h : document.documentElement.clientHeight
             } 
         }
     }
 }

五,查看元素的几何尺寸

domEle.getBoundingClientRect();  -->兼容性很好,返回的方法不是实时的
----实时指的是把他封装给一个变量,然后去改变要查的属性值,这个变量是不会实时跟着改变
该方法返回一个对象,对象里面有left,top,right,bottom等属性
left和top代表该元素左上角的x和y的坐标,right和bottom代表元素右下角的x和y坐标
height和width属性老版本IE并未实现  
例如:<div style="width:100px;height:100px;background-color:red;position:absolute;left:100px;top:100px;">
然后var div = document.getElementsByTagName('div')[0]; 
调用div.getBoundingClientRect  -->会返回bottom:200 height:100 right:200 
left:100 top:100 width:100;

另一个查看元素尺寸的方法:
dom.offsetWidth,dom.offsetHeight (视觉上的尺寸,包括padding border)
查看元素的位置
dom.offsetLeft,dom.offsetTop
对于无定位父级的元素,返回相对文档的坐标,对于有定位父级的元素,返回相对于最近的有定位的父级的坐标
dom.offsetParent-->返回最近的有定位的父级,如无返回body,body.offsetParent返回null

六,让滚动条滚动

window上有三个方法:scroll(x,y),scrollTo(x,y) ,scrollBy(x,y)
三个方法功能类似,用法都是将x,y坐标传入,即实现让滚动轮滚动到当前位置
区别:scrollBy会在之前的数据基础上做累加,其他两个不会累加规定什么位置就是什么位置

 七,自动阅读器

自动阅读器,前提是有两个div按钮一个开始一个停止和超过一屏以上的文字才能向下自己滚动,key是给加锁防止产生多个定时器导致最后无法停止
var div = document.getElementsByTagName('div');
    var key=true;
    var time=0;
    div[0].onclick=function(){
        if(key){
          time = setInterval(function(){
               scrollBy(0,10);
           },60)
           key=false;
        }
    }
    div[1].onclick=function(){
        clearInterval(time);
        key=true;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小兔子的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值