当前位置: 首页 > news >正文

JS:页面事件

文章目录

  • 一、页面加载事件
  • 二、页面滚动事件
  • 三、页面尺寸事件
  • 总结


一、页面加载事件

有时候我们会把script的内容放在body前,这时候代码的执行在元素的加载之前,会导致页面元素未加载而报错

解决办法是调用Window的load加载事件将所有操作放在load函数中,这样程序会先加载页面元素,再执行操作内容

    window.addEventListener('load', function () {
      const btn = document.querySelector('button')
      btn.addEventListener('click', function () {
        console.log(111)

      })
    })

 类似的还有document的DOMContentLoaded事件,先加载页面的DOM元素,再执行操作

    document.addEventListener('DOMContentLoaded', function () {
      const btn = document.querySelector('button')
      btn.addEventListener('click', function () {
        console.log(111)

      })
    })

二、页面滚动事件

页面滚动事件scroll可以得到当前页面距离顶部的距离,对应的属性scrollTop这个值可读可写,因此可以修改页面滚动距离为0直接回到页面顶部

元素.addEventListener('scroll', function () {
  console.log(元素.scrollTop)
  // 获取滚动距离
})

添加scroll事件,通过scrollTop获取滚动距离。这个元素不仅可以是浏览器页面,也可以是一个盒子,文本框等其他元素

获取页面的滚动距离:

document.documentElement.scrollTop

下面这个例子是页面滚动到一定距离显示顶部栏

    // 获取页面滚动事件
    window.addEventListener('scroll', function () {
      let n = document.documentElement.scrollTop
      if (n >= 500) {
        //当滚动到500是显示
        div.style.display = 'block'
      }
      else {
        div.style.display = 'none'
      }
      if (n >= 1500) {
        document.documentElement.scrollTop = 0
        // 离顶部距离这个属性是可修改的
      }
    })

三、页面尺寸事件

元素的offsetWidth和offsetHeight属性得到元素宽高:元素内容+padding+border

元素.offsetWidth
元素.offsetHeight

这里盒子本身的尺寸是300px左右和上下都加上两border

配套的属性还有offsetLeft、offsetTop、offsetParent,分别是获取到页面左边的距离,到页面顶部的距离,获取父亲元素

元素的clientwidth和clientheight属性获取元素宽高:不含padding和border 

元素.clientWidth
元素.clientHeight

盒子的宽和高被滚动条(设置了scroll属性)占据了15padding,left为向左边第一次“碰壁”,因此为1即border,top同理 


总结

相关文章:

  • 深度学习入门--python入门2
  • 《深入理解JVM》实战笔记(二): 类加载机制与类加载器
  • 【数据库系统概论】第第12章 并发控制
  • 图匹配(分解)相关代码学习
  • 【Java 面试 八股文】并发编程篇
  • DeepSeek vs. ChatGPT:不同的诞生时间,对人工智能发展的不同影响
  • 基于 JavaWeb 的 Spring Boot 调查问卷管理系统设计和实现(源码+文档+部署讲解)
  • Java 内存区域详解
  • 测试data_management函数
  • python爬虫——爬取全年天气数据并做可视化分析
  • JAVA最新版本详细安装教程(附安装包)
  • 解决pyenv versions没有列出系统的python版本
  • ue5.2.1 quixel brideg显示asset not available in uAsset format
  • 2025年-G10-Lc84-235.二叉搜索树的最低公共祖先-java版
  • HarmonyOS NEXT 创新应用开发白皮书(api12+)
  • QML Image 圆角设置
  • SpringBoot核心框架之AOP详解
  • Linux 内核自旋锁spinlock(三)--- MCS locks
  • 区块链中的递归长度前缀(RLP)序列化详解
  • JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测
  • 四部门:到2025年底,全国行政村5G通达率超过90%
  • 观察|“双雄”格局下电池制造商如何生存:加码不同技术、抢滩新赛道
  • 联合国秘书长欢迎中美经贸高层会谈成果
  • 睡觉总做梦是睡眠质量差?梦到这些事,才要小心
  • 盖茨说对中国技术封锁起到反作用
  • 长三角议事厅·周报|从模速空间看上海街区化AI孵化模式