核心:ECMAScript
文档对象模型:DOM
浏览器对象模型:BOM
offset/client/scroll家族
事件
4.1事件流;
4.2事件处理程序;//1.HTML事件处理程序 2.DOM 0级事件处理程序 3.DOM 2级事件处理程序 4.IE事件处理程序
4.3事件对象;//1.获取事件对象 2.事件目标 3.事件代理 4.事件冒泡 5.事件流阶段 6.阻止默认行为
4.4事件对象属性;//1.坐标位置
动画:基本动画;匀速动画;缓慢动画;透明度动画;动画封装
offset demension 偏移量
1.定位父级 offsetParent 找到有定位的父级
2.offsetLeft offsetTop
3.offsetHeight offsetWidth
html代码如下:
<div id="grandFather" style="position:relative;"><div id="father"><div id="box"></div></div></div>
javascript代码如下:
// offsetParent定义:与当前元素最近的经过定位的父级元素<!-- 1.元素自身有fixed定位,offsetParent是null style="position:fixed;"-->var box =document.getElementById('box');console.log(box.offsetParent);// 2.元素自身无fixed定位,offsetParent是body//3.元素自身无定位,父级元素存在定位,offsetParent是最近的经过定位的父级元素//4.body元素offsetParent是nullconsole.log(document.body.offsetParent);
css代码如下:
<style type="text/css">#box{width:200px;height:200px;background-color: red;padding:10px;margin:10px;border:1px solid #0000FF;}</style>
html代码如下:
<div id="box" style="width:100px;height:100px;"></div>
javascript代码如下:
//offsetWidth = width + border-left-width + border-right-width + padding-left-width + border-right-widthvar box = document.getElementById('box');console.log(box.offsetWidth,box.offsetHeight);//只能获取行内的属性console.log(box.style.width,box.style.height);// offsetWidth,offsetHeight 是只读属性// box.offsetWidth = 500;box.style.height = 500 + 'px';box.style.width = 500 +'px';
css代码如下:
<style type="text/css">*{margin:0px;margin:0px;}#father{width:400px;height:400px;position:relative;background-color:red;margin:40px;}#son{width:200px;height:100px;background-color: #0000FF;margin-left:20px;margin-top:30px;border:5px solid #ccc;}</style>
html代码如下:
<div id="father"><div id="son"></div></div>
javascript代码如下:
//1.offsetTop 当前元素的上边框到offsetParent上边框的距离 与边框么有关系//1.offsetLeft 当前元素的左边框到offsetParent左边框的距离var son = document.getElementById('son');//如果有父元素定位console.log(son.offsetParent);console.log(son.offsetTop,son.offsetLeft);//0,20//如果没有父元素定位// console.log(son.offsetParent);// console.log(son.offsetTop,son.offsetLeft);//40,60//总结:相对于父元素(父元素是否有定位,如果有定位,以父元素为基准,如果没有往上寻找到,则以body为基准)
css代码如下:
<style type="text/css">/* *{margin:0px;margin:0px;} */#grandfater{border:5px solid red;padding:30px;position:absolute;}#father{padding:20px;border:1px solid #000;position:relative;}#son{width:100px;height:100px;margin:10px;background-color: red;}</style>
html代码如下:
<div id="grandfater"><div id="father"><div id="son"></div></div></div>
javascript代码如下:
var son = document.getElementById('son');console.log(getElementLeft(son));console.log(getElementTop(son));function getElementLeft(obj){//1.获取当前元素的左边偏移量var actualLeft = obj.offsetLeft;//2.求出定位父级var parent = obj.offsetParent;//3.循环while(parent != null){//3.1求出当前的左方偏移量actualLeft = actualLeft + parent.clientLeft + parent.offsetLeft;console.log(parent);//3.2更新定位父级;parent = parent.offsetParent;}return actualLeft + 'px';}function getElementTop(obj){//1.获取当前元素的左边偏移量var actualTop = obj.offsetTop;//2.求出定位父级var parent = obj.offsetParent;//3.循环while(parent != null){//3.1求出当前的左方偏移量actualTop = actualTop + parent.clientTop + parent.offsetTop;console.log(parent);//3.2更新定位父级;parent = parent.offsetParent;}return actualTop + 'px';}
html代码如下:
<div id="box" style="width: 200px;height: 200px;border: 1px solid #ccc;background-color: red;padding:20px;"></div>
javascript代码如下:
//client 客户端大小:指的是元素内容到内边距占据的空间大小// 不包含border//1.clientWidth = width + padding-left + padding-right//2.clientHeight = height + padding-top + padding-bottom//3.clientLeft 左边框的大小//4.clientTop 上边框的大小var box = document.getElementById('box');console.log(box.clientWidth,box.clientHeight);console.log(box.clientTop,box.clientLeft);// 获取当前页面元素的大小console.log(document.documentElement.clientWidth);console.log(document.documentElement.clientHeight);//注意:1.所有client是只读的 静态失败// box.clientHeight = 400;// cosole.log(box.clientHeight);//2.如果给元素设置display:none ,客户端属性client属性都为 0//3.尽量避免重复访问这些属性console.time('time');var b = box.clientHeight;for(var i = 0;i <100000;i++){// console.log(box.clientHeight);var a = b; //time: 1.81201171875ms}console.timeEnd('time');//time: 26.23291015625ms
css代码如下:
<style type="text/css">#box{width:100px;height:100px;border:1px solid #000;padding:10px;margin:10px;overflow: scroll;}</style>
html代码如下:
<div id="box"><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p></div><button id="btn1">向下滚动</button>
javascript代码如下:
//1.scrollHeight 表示元素的总高度,包含由于溢出而在网页上面均不可见部分//1.scrollWidth 表示元素的总宽度,包含由于溢出而在网页上面均不可见部分var box = document.getElementById('box');var btn1 = document.getElementById('btn1');//1.无滚动条的时候,scrollHeight和clientHeight属性结果是相同的// console.log(box.scrollHeight);// console.log(box.scrollWidth);//2.有滚动条的时候// console.log(box.scrollHeight);// console.log(box.scrollWidth);//3.scrollTop 元素被卷起的高度// box.onscroll = function(){// console.log(box.scrollTop,box.scrollHeight);// //当滚动条滚动到底部是,符合下公式:// //scrollHeight = clientHeight + scrollTop;// }//注意:scrollTop是可读写的btn1.onclick = function(){box.scrollTop += 20;console.log(box.scrollTop);}//4.scrollLeft 元素被卷起的宽度
css代码如下:
<style type="text/css">#box{width:100px;height: 100px;border:1px solid #000;padding:10px;margin:10px;overflow:scroll;}#btn{position:fixed;top:200px;left:30px;}</style>
html代码如下:
<body style="height:2000px;"><div id="box"><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p></div><button id="btn">回到顶部</button>
javascript代码如下:
window.onscroll = function(){//console.log(document.documentElement.scrollTop);//chrome浏览器,火狐浏览器可以,ssrifi步行//console.log(document.body.scrollTop);//chrome浏览器步行,火狐浏览器可以,srifi可以//兼容代码var doScrollTop = document.documentElement.scrollTop || document.body.scrollTop;console.log(doScrollTop);var btn = document.getElementById('btn');btn.onclick = scrollTop;function scrollTop(){if(doScrollTop){// document.documentElement.scrollTop = 0;// document.body.scrollTop = 0;//简化写法document.documentElement.scrollTop = document.body.scrollTop = 0;}}}
html代码如下:
<body style="height:2000px;"><button id="backTop" style="position: fixed;">回到顶部</button>
javascript代码如下:
var backTop = document.getElementById('backTop');backTop.onclick = function(){window.scrollTo(0,100);}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号