js第十三天
navigator 对象
navigator 对象包含有关浏览器的信息,它有很多属性,最常用的是 userAgent,该属性可以返回由客户机发送服务器的 user-agent 头部的值。
<button>刷新</button> <script> document.querySelector('button').onclick = () => { // 如果检测到 navigator.userAgent里有 iPad 那就跳转到 其他页面 if ((navigator.userAgent.match(/(iPad)/i))) { location.href = '../day12/index13.html' } } </script>
history 对象
window 对象给我们提供了一个 history 对象,与浏览器历史记录进行交互。该对象中包含用户在浏览器窗口中访问过的 URL。
history对象方法 | 作用 |
back() | 可以后退功能 |
forward() | 前进功能 |
go(参数) | 前进后退,参数如果是 1 前进 1 个页面,如果是 -1 后退 1 个页面 |
元素偏移量 offset 系列
offset 概述
offset 翻译过来就是偏移量,使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。可以用来获得元素距离带有定位父元素的位置和元素自身的大小(宽度高度),需要注意的是返回的数值都不带单位。
offset系列属性 | 作用 |
element.offsetParent | 返回作为该元素带有定位的父级元素,如果父级都没有定位则返回 body |
element.offsetTop | 返回元素相对于带有定位的父元素上方的偏移 |
element.offsetLeft | 返回元素相对于带有定位的父元素左边框的偏移 |
element.offsetWidth | 返回自身包括 padding、边框、内容区的宽度,返回数值不带单位 |
element.offsetHeight | 返回自身包括 padding、边框、内容区的高度,返回的数值不带单位 |
<style> * { margin: 0; padding: 0; } .father { width: 200px; height: 200px; background-color: cyan; margin: 100px; position: relative; } .son { width: 100px; height: 100px; background-color: rebeccapurple; margin-left: 30px; } .w { width: 200px; height: 200px; background: skyblue; margin: 0 auto 200px; } </style> <div class="father"> <div class="son"></div> </div> <div class="w"></div> <script> // offset let father = document.querySelector('.father') let son = document.querySelector('.son') // 得到元素的偏移 位置,返回值不带单位 以带有定位的父元素为准,如果没有父元素或父元素没有定位那么就以body为准 // 父元素 console.log(father.offsetTop); console.log(father.offsetLeft); // 子元素 console.log(son.offsetTop); console.log(son.offsetLeft); console.log('========================'); // 获取元素的宽高 let w = document.querySelector('.w') // 宽高包括 padding、border、width console.log(w.offsetWidth); console.log(w.offsetHeight); // 返回带有定位的父元素,否则返回body console.log(son.offsetParent); </script>
元素可视区 client 系列
client 翻译过来就是客户端,我们使用 client 系列的相关属性来获取元素可视区的相关信息。通过 client 系列的相关属性可以动态的得到该元素的边框大小、元素大小等。
client系列属性 | 作用 |
element.clientTop | 返回元素上边框的大小 |
element.clientLeft | 返回元素左边框的大小 |
element.clientWidth | 返回自身包括padding、内容区的宽度,不包含边框,返回数值不带单位 |
element.clientHeight | 返回自身包括padding、内容区的高度,不包含边框,返回数值不带单位 |
元素滚动 scroll 系列
元素 scroll 系列属性:scroll 翻译过来就是滚动的,我们使用 scroll 系列的相关属性可以动态的得到该元素的大小、滚动距离等。
scroll 系列属性 | 作用 |
element.scrollTop | 返回被卷曲的上侧距离,返回数值不带单位 |
element.scrollLeft | 返回被卷曲的左侧距离,返回数值不带单位 |
element.scrollWidth | 返回自身实际的宽度,不含边框,返回数值不带单位 |
element.scrollHeight | 返回自身实际的高度,不含边框,返回数值不带单位 |
三大系列大小对比
三大系列大小对比 | 作用 |
element.offsetWidth | 返回自身包括padding、边框、内容区的宽度,返回数值不带单位 |
element.clientWidth | 返回自身包括padding、内容区的宽度,不包含边框,返回数值不带单位 |
element.scrollWidth | 返回自身实际的宽度,不含边框,返回数值不带单位 |
主要用法:
offset系列经常用于获得元素位置 | offsetLeft、offsetTop |
client经常用于获取元素大小 | clientWidth、clientHeight |
scroll经常用于获取滚动距离 | scrollTop、scrollLeft |
mouseenter 鼠标事件
当鼠标移动到元素上时会触发 mouseenter 事件,它和 mouseover 的区别是:mouseover 经过自身盒子会触发,经过子盒子还会触发,而 mouseenter 只会经过自身盒子触发。原因是 mouseenter 不会冒泡。跟 mouseenter 搭配的是 mouseleave 鼠标离开,同样也不会冒泡。
<div class="f"> <div class="son"></div> </div> <script> let f = document.querySelector('.f') f.addEventListener('mouseenter', () => { console.log(1); }) </script>
动画函数封装
动画实现原理
核心原理:通过定时器 setInterval() 不断移动盒子位置。
实现步骤:获得盒子当前位置 --> 让盒子在当前位置上加 1 个移动距离 --> 利用定时器不断重复这个操作 --> 加一个结束定时器的条件。注意此元素需要添加定位,才能使用 element.style.left。
动画函数简单封装
注意函数需要传递 2 个参数,动画对象和移动到的距离。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界