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 个参数,动画对象移动到的距离。

posted @   守鹤  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示