【浏览器】document.documentElement.clientWidth/clientHeight 视口Viewport宽高(CSS像素)

博客介绍了在浏览器中通过document.documentElement.clientWidth/clientHeight获取视口Viewport高宽的方法,单位为CSS像素,这在前端页面布局等方面有重要作用。
          
<div class="image-container" @click="handelAi" @mouseenter="currentImg = hoverImg" @mouseleave="showDefaultImg" @mousedown="startDrag" :style="containerStyle" > <img :src="currentImg" alt="切换图片" class="ratio-img"> </div> handelAi(){ ticket().then(res=>{ window.open(res.url) }) } , setInitialPosition() { // 获取容器DOM元素 // 1. 获取(不含滚动条) const viewportWidth = document.documentElement.clientWidth; const viewportHeight = document.documentElement.clientHeight; // // 4. 计算初始left和top,实现右下角定位 this.containerLeft = viewportWidth - 400; this.containerTop = viewportHeight - 500; }, startDrag(e) { // 阻止默认行为(避免拖动时选中文本) e.preventDefault(); // 标记开始拖动 this.isDragging = true; // 记录鼠标按下时的坐标(相对于浏览器) this.startX = e.clientX; this.startY = e.clientY; // 记录容器当前的left和top(初始位置,后续拖动基于此计算偏移) this.initialLeft = this.containerLeft; this.initialTop = this.containerTop; // 绑定鼠标移动和松开事件(监听document,避免鼠标移出容器后失效) document.addEventListener('mousemove', this.handleDrag); document.addEventListener('mouseup', this.endDrag); }, // 2. 鼠标移动:计算拖动距离,更新容器位置 handleDrag(e) { if (!this.isDragging) return; // 未拖动时不执行 // 计算鼠标移动的偏移量(当前位置 - 初始位置) const offsetX = e.clientX - this.startX; const offsetY = e.clientY - this.startY; // 更新容器位置(初始位置 + 偏移量) this.containerLeft = this.initialLeft + offsetX; this.containerTop = this.initialTop + offsetY; }, // 3. 鼠标松开:结束拖动,移除事件监听 endDrag() { this.isDragging = false; // 移除document上的事件监听(避免内存泄漏) document.removeEventListener('mousemove', this.handleDrag); document.removeEventListener('mouseup', this.endDrag); }, 我拖动后 会触发点击事件怎么解决冲突
最新发布
10-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值