EonerCMS——做一个仿桌面系统的CMS(七)

智能修改窗口的位置

  在测试的时候,我发现调整浏览器尺寸后,原先靠近浏览器边缘的窗口就直接被隐藏掉了,如下图:

  出现这问题的原因也很简单,因为窗口的top、left的值是写死的,当浏览器的宽高小于窗口top、left时,必然会被隐藏掉。解决办法就是在调整浏览器尺寸的同时,把窗口的top、left也一起修改,但是具体要修改成多少呢?

  经过自己的考虑和他人的指点,最终的解决办法就是按比例修改,也就是按当时窗口离左/右、上/下的距离与整个窗口大小的比例进行缩放,说的可能有点迷糊,不如看下修改公式吧:

  top = 浏览器缩放前窗口上边距 / ( 浏览器缩放前高度 - 浏览器缩放前窗口高度 ) * ( 浏览器缩放后高度 - 浏览器缩放后窗口高度 );

  left = 浏览器缩放前窗口左边距 / ( 浏览器缩放前宽度 - 浏览器缩放前窗口宽度 ) * ( 浏览器缩放后宽度 - 浏览器缩放后窗口宽度 );

  公式里我对浏览器的宽高都减去了窗口的宽高,原因就是不管浏览器怎么缩放,窗口的宽高是始终不会变化的,如果不减去窗口的宽高,是无法按比例缩放的。

  最终效果如下图:

  demo大家应该看到了,试试缩放下浏览器看下效果吧。

我是演示,看完文章后再看我

  demo源码,js

$().ready(function(){
    var dfw = $(window).width() - $("#div1").width();
    var dfh = $(window).height() - $("#div1").height();
    var dl = $("#div1").offset().left;
    var dt = $("#div1").offset().top;
    $(window).bind("resize",function(){
        var ctw = $(window).width() - $("#div1").width();
        var cth = $(window).height() - $("#div1").height();
        $("#div1").css({"left":(dl/dfw*ctw)+"px","top":(dt/dfh*cth)+"px"});
    });
});

  html

<div id="div1" style="width:300px;height:30px;line-height:30px;text-align:center;padding:5px;background:red;position:absolute;top:100px;left:100px">我是演示,看完文章后再看我</div>


 

posted @   胡尐睿丶  阅读(3960)  评论(7编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示