offset、client 、scroll

本文深入解析了DOM操作中的offset、client、scroll三大系列属性,包括它们的功能区别及应用场景,如获取元素位置、大小和处理滚动条等,并通过实际案例展示了如何利用这些属性实现元素的拖拽和对话框的突出功能。

三组和大小、位置相关的属性

offset、client、scroll

  • offset系列属性:offset为偏移量。用于获取如div的坐标(box.offsetLeft; box.offsetTop;),而获取div的大小用(box.offsetWidth;  box.offsetHeight这两属性包括盒子的边框和内边距padding)。还存在offsetParent属性:指获取距离当前元素最近的定位父元素,如果没有定位父元素则默认为body。如若存在三个盒子相互依次叠加,则box.offsetParent/Left/Top等的获取数值都是相对相邻最近的父盒子而言。
  • client 系列属性: 与offset一样有四个属性,但是在获取div盒子的大小上,clientLeft获取的是border-left的宽度;clentTop获取的是border-top的宽度;而clientWidth获取的大小包括padding但不包括边框的宽度;clientHeight获取的也同样包括padding不不包括边框的高度(有滚动条的话,也包括滚动条)   
  • scroll系列的属性: scrollLeft和scrollTop指内容中滚动出去的距离      scrollWidth和scrollHeight获取的大小包括padding,但是不包括滚动条

案例之按下鼠标拖拽盒子

var box = document.getElementById('box');
var drop = document.getElementById('drop');    //鼠标点击盒子可实现拖拽的区域

drop.onmousedown = function (e) {    //鼠标按下的事件
    //鼠标按下的时候,鼠标在盒子中的位置:鼠标在页面上的位置-盒子的位置
    var x = e.pageX - box.offsetLeft;
    var y = e.pageY - box.offsetTop;

    //鼠标在文档中移动的事件
    document.onmousemove = function (e) {    //别忘了该对象e有兼容性问题
        //当鼠标在页面上移动时,盒子的坐标 = 鼠标当前在页面中的位置 - 鼠标在盒子上的位置
        var boxX = e.pageX - x;
        var boxY = e.pageX - y;

        box.style.left = boxX + 'px';    //盒子移动的距离等于盒子的坐标,即跟着鼠标走
        box.style.top = boxY + 'px';    
    }
    
}
//当鼠标弹起的时候,移除鼠标移动事件
document.onmouseup = function () {
    document.onmousemove = null;
}
//点击关闭按钮,隐藏盒子
var box_close = document.getElementById('box_close');    //获取该关闭按钮的id
box_close.onclick = function () {
    box.style.display = 'none';    //点击按钮时,隐藏盒子
}

案例之弹出对话框可拖拽且有突出功能

该案例类似百度首页的点击按钮有会员登陆的弹出对话框,且弹出后背景为灰色并且不可操作,该对话框还可随鼠标拖拽移动

//显示登陆框和遮盖层
var login = document.getElementById('login');
var bg = document.getElementById('bg');    //遮盖层div的id,用于弹出对话框后背景不可操作
//1.点击按钮,弹出对话框和遮盖层
var link = document.getElementById('link');    //link为点击按钮弹出对话框的id
link.onclick = function () {
    login.style.display = 'block';    //弹出login
    bg.style.display = 'block';    //点击后弹出遮盖层
    return false;    //取消默认行为之跳转到href
}

//2.点击关闭按钮,隐藏登陆框和遮盖层
var closeBtn = document.getElementById('closeBtn');
close.onclick = function () {
    //隐藏登录框和遮盖层
    login.style.display = 'none';
    bg.style.display = 'none';
}

后面代码的鼠标拖拽盒子移动如上案例,此处不再复述

 

 

 

跟网型逆变器小干扰稳定性分析与控制策略优化研究(Simulink仿真实现)内容概要:本文围绕跟网型逆变器的小干扰稳定性展开分析,重点研究其在电力系统中的动态响应特性及控制策略优化问题。通过构建基于Simulink的仿真模型,对逆变器在不同工况下的小信号稳定性进行建模与分析,识别系统可能存在的振荡风险,并提出相应的控制优化方法以提升系统稳定性和动态性能。研究内容涵盖数学建模、稳定性判据分析、控制器设计与参数优化,并结合仿真验证所提策略的有效性,为新能源并网系统的稳定运行提供理论支持和技术参考。; 适合人群:具备电力电子、自动控制或电力系统相关背景,熟悉Matlab/Simulink仿真工具,从事新能源并网、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 分析跟网型逆变器在弱电网条件下的小干扰稳定性问题;② 设计并优化逆变器外环与内环控制器以提升系统阻尼特性;③ 利用Simulink搭建仿真模型验证理论分析与控制策略的有效性;④ 支持科研论文撰写、课题研究或工程项目中的稳定性评估与改进。; 阅读建议:建议读者结合文中提供的Simulink仿真模型,深入理解状态空间建模、特征值分析及控制器设计过程,重点关注控制参数变化对系统极点分布的影响,并通过动手仿真加深对小干扰稳定性机理的认识。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值