BOM---元素偏移量 offset 系列

目录

一、 offset 概述

二、offset 与 style 区别

案例1:获取鼠标在盒子内的坐标

案例2:模态框拖拽


一、 offset 概述

 offset 翻译过来就是偏移量, 我们使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

  • 获得元素距离带有定位父元素的位置
  •  获得元素自身的大小(宽度高度)
  • 注意: 返回的数值都不带单位

offset 系列常用属性:

BOM---元素偏移量 offset 系列_第1张图片

BOM---元素偏移量 offset 系列_第2张图片

二、offset 与 style 区别

offset style
  • offset 可以得到任意样式表中的样式值
  • style 只能得到行内样式表中的样式值
  • offset 系列获得的数值是没有单位的
  • style.width 获得的是带有单位的字符串
  • offsetWidth 包含padding+border+width
  • style.width 获得不包含padding和border 的值
  • offsetWidth 等属性是只读属性,只能获取不能赋值
  • style.width 是可读写属性,可以获取也可以赋值
  • 所以,我们想要获取元素大小位置,用offset更合适
  • 所以,我们想要给元素更改值,则需要用style改变

案例1:获取鼠标在盒子内的坐标

  1. 我们在盒子内点击,想要得到鼠标距离盒子左右的距离。
  2. 首先得到鼠标在页面中的坐标(e.pageX, e.pageY)
  3. 其次得到盒子在页面中的距离 ( box.offsetLeft, box.offsetTop)
  4. 用鼠标距离页面的坐标减去盒子在页面中的距离,得到 鼠标在盒子内的坐标
  5. 如果想要移动一下鼠标,就要获取最新的坐标,使用鼠标移动事件 mousemove

BOM---元素偏移量 offset 系列_第3张图片

实现代码:





    
    
    
    Document
    



    

案例2:模态框拖拽

BOM---元素偏移量 offset 系列_第4张图片

 弹出框,我们也称为模态框。

  1. 点击弹出层, 会弹出模态框, 并且显示灰色半透明的遮挡层。
  2. 点击关闭按钮,可以关闭模态框,并且同时关闭灰色半透明遮挡层。
  3. 鼠标放到模态框最上面一行,可以按住鼠标拖拽模态框在页面中移动。
  4. 鼠标松开,可以停止拖动模态框移动。

案例分析:

  1. 点击弹出层, 模态框和遮挡层就会显示出来 display:block;
  2. 点击关闭按钮,模态框和遮挡层就会隐藏起来 display:none;
  3. 在页面中拖拽的原理: 鼠标按下并且移动, 之后松开鼠标
  4. 触发事件是鼠标按下 mousedown, 鼠标移动mousemove 鼠标松开 mouseup
  5. 拖拽过程:  鼠标移动过程中,获得最新的值赋值给模态框的left和top值, 这样模态框可以跟着鼠标走了
  6. 鼠标按下触发的事件源是 最上面一行,就是  id 为 title
  7. 鼠标的坐标 减去 鼠标在盒子内的坐标, 才是模态框真正的位置。
  8. 鼠标按下,我们要得到鼠标在盒子的坐标。
  9. 鼠标移动,就让模态框的坐标  设置为  : 鼠标坐标 减去盒子坐标即可,注意移动事件写到按下事件里面。
  10. 鼠标松开,就停止拖拽,就是可以让鼠标移动事件解除  

BOM---元素偏移量 offset 系列_第5张图片





    
    
    



    
    
    
    
    



参考:黑马程序员

你可能感兴趣的:(#,DOM和BOM,js,javascript,前端)