今天做页面兼容的时候突然遇到这个问题,就简单写写;

监听页面大小改变主要注意两方面,一个是初始化的时候,另一个是页面大小改变的时候重新设置;

一、页面初始化

// 初始化加载数据
window.onload = function () {
  // 监听窗口变化
  windowHiegh();
}

二、页面大小改变时

// 监听页面窗口变化
window.onresize = function () {
  windowHiegh();
}

下面是计算的方法:

// 页面窗口高度计算
function windowHiegh() {
  // 初始化加载高度
  let InitRightHeight = parseFloat($(".right").height());

  // margin区域高度
  let logMarginHeight = parseFloat($(".logical").css("marginBottom"));  // 逻辑门外边距
  let algMarginHeight = parseFloat($(".alg-rules").css("marginBottom"));  // 运算法则外边距
  // 实际高度
  let rightHeight = InitRightHeight - logMarginHeight - algMarginHeight;

  // 逻辑门高度
  let logicalInHeight = rightHeight * 0.12;
  $(".logical").css("height", "" + logicalInHeight + "px");
  let iconsHeight = $(".logical").height() - $(".logical-title").outerHeight(true);
  $(".icons").css("height", "" + iconsHeight + "px")

  // 运算法则高度
  let alg_rulesHeight = rightHeight * 0.25;
  $(".alg-rules").css("height", "" + alg_rulesHeight + "px");
  let rules_boxeHeight = $(".alg-rules").height() - $(".rules-title").height() - $(".alg-rules-search").height();
  $("#rules-box").css("height", "" + rules_boxeHeight + "px")

  // 参数高度
  let argumentsHeight = rightHeight * 0.63;
  $(".arguments").css("height", "" + argumentsHeight + "px");
  let agruments_contentHeight = $(".arguments").height() - $(".arguments-titile").height();
  $(".agruments-content").css("height", "" + agruments_contentHeight + "px")

  let dataHeight = agruments_contentHeight;
  let data_boxHeight = $(".data").height() - $(".data-search").height()
  $(".data-box").css("height", "" + data_boxHeight + "px")

}

大致思路:

一、页面分为三个部分,上中下
二、先获取页面总高度,然后每个部分按照百分比进行计算
三、盒子设置 box-sizing属性,用来计算的实际高度 = 页面总高度 - 盒子外部总 margin;
四、单个区域的高度 = 实际高度 * 百分比
五、单个区域内部变化高度 = 单个区域高度 - 单个区域内部固定高度

大致思路是这样的,有问题的地方欢迎大佬们指正,代码是自己实际的项目,就没有写简单的例子了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐