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

元素尺寸和位置,scroll事件,事件响应链,事件默认行为


元素的尺寸和位置
元素的尺寸和位置
// 通过元素对象的style属性设置的样式是行内样式,所以通过style获取也是获取的行内样式,并不能获取css设置的样式值。



// 元素对象的clientWidth属性表示元素的宽度,
// console.log(box.clientWidth);
// clientHeight高度。
// console.log(box.clientHeight);



// 带边框的宽高。
// console.log(box.offsetWidth);
// console.log(box.offsetHeight);




// 获得元素相对于浏览器窗口的坐标。
// console.log(box.offsetLeft);
// console.log(box.offsetTop);

// 使用自身相对窗口的坐标减去父元素相对窗口的坐标可以得到自己相对于父元素的坐标。


// 浏览器窗口的宽高(工作区,显示页面的区域)
console.log(window.innerWidth);
console.log(window.innerHeight);

// 整个浏览器窗口的宽高
console.log(window.outerWidth);
console.log(window.outerHeight);

scroll事件
// 元素对象的onscroll事件,当元素内容发生滚动时触发,它是一个频繁出发的事件。

box.onscroll = function (){
// console.log("div发生滚动了");
}

// scrollTop属性表示元素纵向的滚动偏移量。
console.log(box.scrollTop);


// scrollHeight属性表示元素的内容高度
console.log(box.scrollHeight);


// 元素内容高度 - 元素本身高度 = 最大偏移量。
// 元素的当前偏移量等于最大偏移量时,说明滚动到底部了。
if (box.scrollHeight-box.clientHeight==box.scrollTop){
console.log( "到底了" );
}


事件响应链
// 事件的传播分为捕获和冒泡两个阶段,通过行内属性和元素对象.onxxxx这两种方式添加的事件监听都是冒泡阶段的事件监听。


outer.onclick = function (){
console.log( "outer被点击了" );
}

inner.onclick = function (e){
console.log( "inner被点击了" );
// 事件对象的stopPropagation方法,可以阻止事件的继续传播。
e.stopPropagation();
}



第三种添加事件监听的方法

// 元素对象的addEventListener方法,为元素添加一个事件监听。第一个参数是要监听的事件类型,第二个参数是事件函数,第三个参数可选,是否在冒泡捕获阶段监听,默认为false
// 相比于前两种方法,这种方法可以为同一个元素的同一个事件添加多个事件函数。
outer.addEventListener( "click" , function (e){
console.log( "outer捕获阶段" );
}, true );

outer.addEventListener( "click" , function (e){
console.log( "outer冒泡阶段" );
}, false );



// 在事件响应链中任何阶段都可以阻止事件的传播



// removeEventListener移除已经添加过的事件监听
inner.removeEventListener( "click" ,f1, true );




事件的默认行为

// 在浏览器中,某些事件会触发浏览器的默认行为,例如,按下F5,浏览器就会刷新当前页面,点击a标签,页面就会跳转。

var link = document.getElementById( "link" );

link.onclick = function (e){
// 事件对象的preventDefault方法,可以阻止本次事件所触发的浏览器默认行为。
e.preventDefault();
}

document.body.onkeydown = function (e){
if (e.keyCode== 116 ){
e.preventDefault();
}
}


鼠标事件
var box = document.getElementById( "box" );

// 当鼠标指针进入元素时触发。
box.onmouseenter = function (){
// console.log("鼠标进入了");
}

// 当鼠标指针离开元素时触发。
box.onmouseleave = function (){
// console.log("鼠标离开了");
}

// 当鼠标指针在元素中移动时触发,属于频繁触发的事件。
box.onmousemove = function (){
// console.log("鼠标移动了");
}

box.onmousedown = function (e){
console.log(e);
}

box.onmousewheel = function (){
console.log( "滚轮滚动了" );
}

box.addEventListener( "DOMMouseScroll" , function (){
console.log( "滚轮滚动了" );
})





























相关文章:

  • 修改input type=file 默认样式
  • 3分钟读懂C语言函数:这些例子一看就懂!|一键删除账户教学
  • ubuntu壁纸1080p
  • [转]bootstrap table本地数据使用方法
  • vue系列自定义指令(三)
  • 源码安装Nginx以及用systemctl管理
  • 以实例说明微服务拆分(以SpringCloud+Gradle)
  • ELK
  • python 小数据池,is and ==,decode ,encode
  • 牛客网NOIP赛前集训营-普及组(第一场)
  • Centos 7 超简单yum源安装MongoDB
  • 这可能是把ZooKeeper概念讲的最清楚的一篇文章
  • 零基础怎样快速学习web前端?
  • 使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件
  • Elastic+logstash+filebeat做Nginx日志分析
  • css系列之关于字体的事
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Laravel Mix运行时关于es2015报错解决方案
  • python学习笔记 - ThreadLocal
  • React as a UI Runtime(五、列表)
  • VuePress 静态网站生成
  • windows下使用nginx调试简介
  • 彻底搞懂浏览器Event-loop
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 使用SAX解析XML
  • 探索 JS 中的模块化
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 应用生命周期终极 DevOps 工具包
  • 正则表达式
  • 阿里云ACE认证之理解CDN技术
  • ​2021半年盘点,不想你错过的重磅新书
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​低代码平台的核心价值与优势
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #{}和${}的区别?
  • ${ }的特别功能
  • (11)MSP430F5529 定时器B
  • (3)选择元素——(17)练习(Exercises)
  • (4)事件处理——(7)简单事件(Simple events)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (五)MySQL的备份及恢复
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Net CF下精确的计时器
  • .NET Micro Framework初体验
  • .NET Micro Framework初体验(二)
  • .NET 反射的使用
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net通用权限框架B/S (三)--MODEL层(2)
  • /var/spool/postfix/maildrop 下有大量文件