You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在元素占满屏幕宽高时禁用其调整大小脚本?

解决方案

别改script标签的type属性了——把type设成application/JSON只会让浏览器直接跳过脚本执行,完全不是实现条件执行的正确方式。直接在脚本里加判断逻辑就行:只有当id为window的元素没占满屏幕时,才调用makeResizable函数。

具体实现步骤

  • 先拿到目标元素
  • 对比元素的实际尺寸和浏览器视口的宽高
  • 根据判断结果决定是否执行resize逻辑

代码示例

// 获取目标元素
const targetEl = document.getElementById('window');

// 判断元素是否占满整个屏幕
function isFullScreen(el) {
  const viewportW = window.innerWidth;
  const viewportH = window.innerHeight;
  // offsetWidth/offsetHeight包含元素的边框和内边距,刚好对应实际显示尺寸
  const elW = el.offsetWidth;
  const elH = el.offsetHeight;
  
  // 严格匹配宽高,也可以根据需求加个1px的误差容错
  return elW === viewportW && elH === viewportH;
}

// 条件执行resize函数
if (!isFullScreen(targetEl)) {
  makeResizable();
}

动态场景处理(可选)

如果元素尺寸或窗口大小会动态变化,比如用户手动调整窗口大小,你可以把判断逻辑挂到窗口的resize事件上,实时控制resize功能的开关:

window.addEventListener('resize', () => {
  const isFull = isFullScreen(targetEl);
  // 这里可以根据状态添加/移除resize相关的事件监听
  // 举个例子:如果之前makeResizable绑定了鼠标事件,占满屏幕时就解绑
  if (isFull) {
    // 假设你有清理resize事件的函数,比如cleanupResizable()
    // cleanupResizable();
  } else {
    // 未占满时确保resize功能生效
    makeResizable();
  }
});

小提示

  • 如果你的元素设置了box-sizing: content-box,记得把padding和border的宽度加到元素尺寸里再和视口对比,不然会判断不准。

内容的提问来源于stack exchange,提问作者Yohann DCz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:15:55