JavaScript获取窗口属性的个人笔记

编程入门 行业动态 更新时间:2024-10-06 11:26:28

JavaScript获取窗口<a href=https://www.elefans.com/category/jswz/34/1771415.html style=属性的个人笔记"/>

JavaScript获取窗口属性的个人笔记

窗口属性

    • 上期题目解答
    • 一、滚动条
      • 1.滚动条滚动距离
      • 2.查看视口的尺寸
    • 二、元素尺寸
      • 1.查看元素的几何尺寸
      • 2.查看元素的尺寸位置
    • 三、滚动条滚动
      • 1.window上有三个方法

上期题目解答

1.封装函数insertAfter();功能类似insertBefore(),即将目标元素放在指定元素后面。

Element.prototype.insetAfter = function(targetNode,afterNode){//原型上封装,节点都能够调用var dressNode = afterNode.nextElementSibling;//找到afterNode的后面的一个元素节点if(dressNode == null){//如果后面一个不存在,说明已经是最后一个元素节点了this.appendChild(targetNode);//就直接appendChild,放在末尾}else{this.insertBefore(targetNode,dressNode);//存在,放在afterNode下一个兄弟元素节点的前面,就是放在afterNode的后面}
}

一、滚动条

1.滚动条滚动距离

window.pageXOffset/pageYOffset:设置或返回当前页面相对于窗口显示区左上角的 X/Y 位置。
以下我没有进行左右滚动,所以pageXOffset为0

由于以上方法IE8及IE8以下不兼容,它提供以下方法
document.body/documentElement.scrollLeft/scrollTop:但是兼容性比较混乱,使用时取两个值相加,因为不可能存在两个同时有值。(这里电脑不好演示IE的方法)
通过封装一个兼容性方法来让我们快速理解

function getScrollOffset(){//获取滚动条滚动距离(设置同理)if(window.pageXOffset){return {//现在的多数浏览器x : window.pageXOffset,y : window.pageYOffset}}else{return {//ie8及以下的兼容问题x : documnet.body.scrollLeft + document.documentElement.scrollLeft,y : documnet.body.scrolTop + document.documentElement.scrollTop//前面提到的,兼容性比较混乱,使用时取两者相加}}
}

2.查看视口的尺寸

window.innerWidth/innerHeight :返回窗口的文档显示区的宽度/高度(加上 滚动条宽度 / 高度)
这里因为控制台站位,且左右没有滚动天,所以显示可视区左右宽度,而高度因为是加上滚动条的,一般情况就是页面可视高。IE8及IE8以下不兼容

document.documentElement.clientWidth/clientHeight:标准模式下,任意浏览器都兼容的视口的尺寸(不加 滚动条宽度 / 高度)

document.body.clientWidth/clientHeight:适用于怪异模式下的浏览器
如果使用方法documentpatMode返回"BackCompat"即为怪异模式
这里简单介绍下怪异模式:
在标准模式页面按照HTML,CSS的定义渲染,而在怪异模式就是浏览器为了兼容很早之前针对旧版本浏览器设计,并未严格遵循W3C标准而产生的一种页面渲染模式。浏览器基于页面中文件类型描述的存在以决定采用哪种渲染模式,如果存在一个完整的DOCTYPE则浏览器将会采用标准模式,如果缺失就会采用怪异模式。
两者两个常见区别:盒模型的处理差异,行内元素的垂直对齐。
这里本人也只是简单了解,如果有读者想认真了解,这里有一篇《简书》供借阅。
链接: 浏览器的标准模式与怪异模式.
这里通过封装一个兼容性方法,返回浏览器视口尺寸,让读者能够快速掌握

function getViewportOffset(){if(window.pageXOffset){return {x : window.innerWidth,y : window.innerHight}}else{//IE8及以下if(documentpatMode === "BackCompat"){//怪异模式下return {x : document.body.clientWidth,y : document.body.clientHeight}}else{return {//标准模式下x : document.documentElement.clientWidth,y : document.documentElement.clientHeight}}}
}

二、元素尺寸

1.查看元素的几何尺寸

domEle.getBoundingClientRect():该方法返回一个对象,对象里面有left,top,right,bottom等属性。left和top代表该元素左上角的X和Y坐标,right和bottom代表元素右下角的X和Y坐标。(兼容性比较好,但是height和width属性老版本IE并未实现)

返回的结果并不是“实时的”,这里的实时性前面已经讲过,即后面再更改时该方法的结果不会跟着改变。

2.查看元素的尺寸位置

dom.offsetWidth / offsetHeight:查看元素的尺寸
dom.offsetLeft / offsetTop:查看元素的位置
dom.offsetParent:返回最近的有定位的父级,如无,返回body, body.offsetParent 返回null


对于无定位父级的元素,返回相对文档的坐标。对于有定位父级的元素,返回相对于最近的有定位的父级的坐标。(无论是 left 还是margin-left等都是距离。)

三、滚动条滚动

1.window上有三个方法

scroll / scrollTo / scrollBy(x,y) 用法都是将x,y坐标传入。即实现让滚动轮滚动到当前位置。
区别:scrollBy()会在之前的数据基础之上做累加。
这里通过一个常见的小说自动翻页功能来让大家快速掌握

var key = true;//设置一把锁
var timer = 0;//定时器外部保存
var start = document.getElementsByClassName("start")[0];//选中自动翻页的开关
var stop = document.getElementsByClassName("stop")[0];
tart.onclick = function(){if(key){timer = setInterval(function(){window.scrollBy(0,5);},100);//每100毫秒往下滚动5key = false;这是关锁,防止多次点击,生成多个执行队列}
};
stop.onclick = function(){clearInterval(timer);key = true;//关闭后开锁,下次可以在启动
};

博主开始运营自己的公众号啦,感兴趣的可以关注“飞羽逐星”微信公众号哦,拿起手机就能阅读感兴趣的博客啦!

更多推荐

JavaScript获取窗口属性的个人笔记

本文发布于:2024-02-28 06:55:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768556.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性   窗口   笔记   JavaScript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!