Web API基础知识五

105 阅读3分钟

Web API基础知识五

滚动事件(scroll)
//页面滚动事件
window.addEventListener('scroll',function(){
//执行的操作
    console.log(document.documentElement.scrollTop)//获取当前页面的滚动距离
})
若要监听某个元素的内部滚动直接给某个元素加即可
加载事件(load)
//页面加载事件
window.addEventListener('load',function(){
	//执行的操作
    //DOMContentLoaded  都加载完毕就触发了,不需要等待标签的内容回来
    //video标签一生成 事件就触发
    // load事件等待 vide标签生成了,同时 video标签内的视频也加载回来 才触发 

      // video加载 分两部
      // 只是加载标签而已 很快 DOMContentLoaded    快
      // 会去加载 标签对应的视频 比较慢  load 慢
    
})
scroll家族

获取宽高(scrollWidth/scrollHeight)

​ 获取元素的内容总款高(不包含滚动条)

获取位置(scrollLeft和scrollTop)

​ 获取元素内容往左、往上滚出去看不到的距离

1649906814334.png

offset家族

获取宽高(offsetWidth/offsetHeight)

​ 获取元素自身的宽高(包含滚动条,padding和border

获取位置(offsetLeft和offsetTop)

​ 获取元素距离自己定位父级元素的左、上距离

1649907017460.png

client家族

获取宽高(clientWidth/clientHeight)

​ 获取元素的可见部分宽高

获取位置(clientLeft和clientTop)

​ 获取左边框和上边框宽度

1649907153964.png

屏幕大小改变(flexible.js(resize))
 div {
        width: 1rem;
        height: 1rem;
        background-color: aqua;
        font-size: 1rem;
      }
    </style>
  </head>
  <body>
    <div>div</div>
    <script>
      // 页面大小发生变化了就会触发的事件 resize window来绑定
      window.addEventListener('resize', function (event) {
        console.log('页面大小发生变化了');
        // 移动端屏幕适配 rem   淘宝js库,flexible.js  作用  设置html的字体大小 为当前页面的宽度的十分之一
        // 获取当前页面的宽度
        console.log(document.body.offsetWidth);
        // 设置页面html标签的字体大小为屏幕的十分之一
        document.documentElement.style.fontSize =
          document.body.offsetWidth / 10 + 'px';

        // 响应式布局的时候  发一个js文件  方便根据当前页面的宽度 告诉我们屏幕的种类和宽度
        const width = document.body.offsetWidth;

        if (width > 1200) {
          document.querySelector('title').innerText = `大屏幕 ${width}`;
        } else if (width > 992) {
          document.querySelector('title').innerText = `中等屏幕 ${width}`;
        } else if (width > 768) {
          document.querySelector('title').innerText = `小屏幕 ${width}`;
        } else {
          document.querySelector('title').innerText = `极小屏幕 ${width}`;
        }
      });
    </script>
Window对象

1BOM(浏览器对象模型)

1649940045173.png window对象下包含5个属性

​ navigator

​ location

​ document(实现DOM的基础)

​ history

​ screen

延时器:
 // 延时器 - 只会执行一次而已
      let timeid = setTimeout(function () {
        console.log('猜猜我是谁');
      }, 5000);
      // 取消延时器
      clearTimeout(timeid);
递归现象(一个函数调用自己):
	  1 一个函数调用自己  

      2 使用场景
        有一个函数,可以打印出 一个dom元素的所有祖先元素 
        不可能提前知道 这个a标签有多少个父元素 

        这个函数接收一个参数,= dom 
        如果这个dom元素有父元素,就继续调用自己函数
      let index = 0;

       function func() {
         index++;
         console.log(index);
         func();
       }
location

1.href 属性获取完整的 URL 地址,对其赋值时用于地址的跳转 2.search 属性获取地址中携带的参数,符号 ?后面部分 3.hash 属性获取地址中的啥希值,符号 # 后面部分 4.reload 方法用来刷新当前页面,传入参数 true 时表示强制刷新

//获取完整地址
console.log(location.href)

//获取地址中携带的参数,符号?后面部分
console.log(location.search)

//获取地址中哈希值,符号#后面部分
console.log(location.hash)

//用来刷新当前页面
console.log(location.reload)
navigator

navigator的数据类型是对象,该对象下记录了浏览器自身的相关信息

可以通过userAgent检测浏览器的版本及平台

histroy

history 的数据类型是对象,该对象与浏览器地址栏的操作相对应,如前进、后退、历史记录等

back( ) ----可以后退功能

forward( )-----前进功能

go( 参数 )-----前进后退功能 参数如果是1则前进1个页面,-1则后退一个页面

<a href="http://www.baidu.com">百度</a>
<button class="one">前进</button>
<button class="two">后退</button>
<script>
        let one = document.querySelector('.one')
        one.addEventListener('click',function(){
            // history.forward()
            history.go(1)//前进一个记录
        })
        two.addEventListener('click',function(){
            // history.back()
            history.go(-1)//后退一个记录
        })
</script>