js bom

1 什么是bom

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8oliTJl2-1605453724588)(D:\images\image-20201113172359765.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m13fa2GB-1605453724591)(D:\images\image-20201113172859860.png)]

2 窗口加载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDpf6L8M-1605453724593)(D:\images\image-20201113175410267.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fX03B00E-1605453724593)(D:\images\image-20201113173936268.png)]

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>

    window.onload = function () {
      var btn = document.querySelector('button')
      btn.addEventListener('click', function () {
        alert(11)
      })
    }
    window.onload = function () {// 后面一次会覆盖前面一次onload
      var btn = document.querySelector('button')
      btn.addEventListener('click', function () {
        alert(22)
      })
    }
    window.addEventListener('load', function () {
      alert(11)
    })
    window.addEventListener('load', function () {
      alert(22)//后面不会覆盖前面
    })
    window.addEventListener('DOMContentLoaded', function () {
      alert(33)//dom加载完毕就执行 不包括图片 样式等
    })
  </script>
</head>
<style>
  .box {
    width: 100px;
    height: 40px;
    background-color: pink;
    position: absolute;
    left: 0;
    top: 35px;
    overflow: hidden;
    display: none;
    font-size: 30px;
  }

  .boxb {
    width: 0;
    height: 0;
    position: absolute;
    border-bottom: 5px solid pink;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    display: none;
  }

  input {
    width: 150px;
  }
</style>


<body>
  <button>按钮</button>
</body>

</html>

3 窗口大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vW3uu4a-1605453724595)(D:\images\image-20201113175613275.png)]

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>
    window.onload = function () {
      window.onresize = function () {
        var div = document.querySelector('div')
        if (window.innerWidth < 1000 && window.innerWidth > 900) {
          div.style.display = 'none'
        }
      }
      window.addEventListener('resize', function () {
        var div = document.querySelector('div')
        if (window.innerWidth > 1000) {
          div.style.display = 'block'
        }
      })
    }
  </script>
</head>
<style>
  div {
    width: 400px;
    height: 400px;
    background-color: pink;
  }
</style>


<body>
  <div></div>
</body>

</html>

4 定时器

执行一次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rdv663Z3-1605453724597)(D:\images\image-20201113180949247.png)]

重复执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KqCb1ucb-1605453724600)(D:\images\image-20201113184159658.png)]

5 js执行机制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgSi5hVF-1605453724601)(D:\images\image-20201114000148558.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WbdHEKd-1605453724602)(D:\images\image-20201114000616072.png)]

6 location对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DR54MhBT-1605453724604)(D:\images\image-20201114000917336.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z2CaXbJF-1605453724604)(D:\images\image-20201114001049608.png)]

例子 5秒之后跳转页面

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>

</style>


<body>
  <button>跳转页面</button>
  <div></div>
</body>
<script>
  var btn = document.querySelector('button')
  var div = document.querySelector('div')
  var time = 5
  btn.addEventListener('click', function () {
    setInterval(function () {
      div.innerHTML = `将在${time}秒之后进行跳转`
      time--
      if (time == -1) {
        location.href = 'http://www.baidu.com'
      }
    }, 1000)
  })
</script>

</html>

一个页面获取另一个页面信息

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>

</style>


<body>
  <form action="index.html">
    <input type="text" name="myname" id="">
    <button>登录</button>
  </form>
</body>
<script>
</script>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div></div>
  <script>
    var div = document.querySelector('div')
    var a = location.search// "?myname=zpf"
    var b = a.substr(8)// zpf
    div.innerHTML = `${b}欢迎你!`
  </script>
</body>

</html>

常见方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Af9hBBDH-1605453724606)(D:\images\image-20201114005545228.png)]

7 navigator对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ch9tpwO1-1605453724608)(D:\images\image-20201114005944225.png)]

9 offset

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSfLjzgm-1605453724609)(D:\images\image-20201114011202343.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oV8gNGrK-1605453724611)(D:\images\image-20201114011619471.png)]

例子 拖动模态框

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  * {
    margin: 0;
    padding: 0;
  }

  .a {
    width: 100px;
    margin: 0 auto;
    text-align: center;
  }

  .login {
    width: 500px;
    height: 300px;
    background-color: rgb(255, 254, 255);
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    display: none;
  }

  .login h3 {
    height: 80px;
    line-height: 80px;
    color: gray;
  }

  .login input {
    margin: 15px;
    border: 1px solid black;
    height: 25px;
    width: 200px;
  }

  .login button {
    width: 180px;
    height: 40px;
    background-color: rgb(255, 254, 255);
    margin: 40px;
  }

  .login span:first-of-type {
    margin-left: 16px;
  }

  .login div {
    width: 32px;
    height: 32px;
    line-height: 32px;
    border: 1px solid rgb(255, 254, 255);
    border-radius: 50%;
    font-size: 10px;
    position: absolute;
    left: 480px;
    top: -17px;
    background-color: rgb(255, 254, 255);
  }
</style>

<body>
  <div class="a">
    点击登录
  </div>
  <div class="login">
    <h3>登录会员</h3>
    <span>用户名:</span>
    <input type="text" name="" id="name" placeholder="请输入用户名">
    <p></p>
    <span>登录密码:</span>
    <input type="password" name="" id="pwd" placeholder="请输入登录密码">
    <p></p>
    <button>登录会员</button>
    <div>关闭</div>
  </div>
</body>
<script>
  var a = document.querySelector('.a')
  var login = document.querySelector('.login')
  var body = document.querySelector('body')
  var div = document.querySelectorAll('div')[2]
  a.addEventListener('click', function () {
    body.style.backgroundColor = '#b2afb2'
    login.style.display = 'block'
  })
  login.addEventListener('mousedown', function (e) {
    var x = e.pageX - login.offsetLeft
    var y = e.pageY - login.offsetTop
    document.addEventListener('mousemove', move)
    function move(e) {
      login.style.left = e.pageX - x + 'px'
      login.style.top = e.pageY - y + 'px'
    }
    document.addEventListener('mouseup', function (e) {
      document.removeEventListener('mousemove', move)
    })

  })
  div.addEventListener('click', function () {
    login.style.display = 'none'
    body.style.backgroundColor = 'rgb(255,255,255)'
  })

</script>

</html>

10 client

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k56Mg3Ys-1605453724612)(D:\images\image-20201114182659345.png)]

11 立即执行函数

  (function(){}())
  (function(){})()
  (function sum(){} ())
  (function sum(){})()

不需要调用,立即执行,参数可以放在后面的小括号里,每一个立即执行函数就是一个作用域,里面的变量都是局部变量

12 scroll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqmdBm8X-1605453724612)(D:\images\image-20201114185200011.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A0ZVbW46-1605453724613)(D:\images\image-20201114185609631.png)]

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  div {
    width: 100px;
    height: 100px;
    background-color: pink;
    overflow: auto;
  }
</style>


<body>
  <div>
    我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容
  </div>
</body>
<script>
  var div = document.querySelector('div')
  console.log(div.clientHeight);//盒子的height+padding
  console.log(div.scrollHeight);//内容没有超出盒子大小为盒子大小 超出为内容大小
  console.log(div.scrollTop);//盒子上沿被卷去的部分
  div.addEventListener('scroll', function () {
    console.log(div.scrollTop);
  })
</script>

</html>

13 封装简单动画函数

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  div {
    width: 100px;
    height: 100px;
    background-color: pink;
    position: absolute;
  }

  span {
    width: 200px;
    height: 200px;
    background-color: aliceblue;
    position: absolute;
    left: 0;
    top: 400px;
  }
</style>


<body>
  <div></div>
  <span>262323</span>
  <button>点击启动</button>
</body>
<script>
  var div = document.querySelector('div')
  var span = document.querySelector('span')
  var btn = document.querySelector('button')
  function move(obj, target) {
    clearInterval(obj.timer)
    obj.timer = setInterval(function () {
      obj.style.left = obj.offsetLeft + 1 + 'px'
      if (obj.offsetLeft >= target) {
        clearInterval(obj.timer)
      }
    }, 30)
  }
  move(div, 500)
  btn.addEventListener('click', function () {
    move(span, 600)
  })
</script>

</html>

缓动函数

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  * {
    margin: 0;
    padding: 0;
  }

  span {
    width: 200px;
    height: 200px;
    background-color: aliceblue;
    position: absolute;
    left: 0;
    top: 400px;
  }
</style>


<body>
  <span>262323</span>
  <button class="btn5">点击到500</button>
  <button class="btn8">点击到800</button>
</body>
<script>
  var span = document.querySelector('span')
  var btn5 = document.querySelector('.btn5')
  var btn8 = document.querySelector('.btn8')
  var num = 1
  function move(obj, target) {
    clearInterval(obj.timer)
    obj.timer = setInterval(function () {
      var step = (target - obj.offsetLeft) / 10
      step = step > 0 ? Math.ceil(step) : Math.floor(step)
      obj.style.left = obj.offsetLeft + step + 'px'
      if (obj.offsetLeft == target) {
        clearInterval(obj.timer)
      }
    }, 15)
  }
  btn5.addEventListener('click', function () {
    move(span, 500)
  })
  btn8.addEventListener('click', function () {
    move(span, 800)
  })
</script>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值