首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery show-hide div与$(window).resize的相对偏差,例如+/-10px?

jquery show-hide div与$(window).resize的相对偏差,例如+/-10px?
EN

Stack Overflow用户
提问于 2014-04-28 08:02:50
回答 1查看 817关注 0票数 0

这是我使用的jquery脚本的一部分,用于根据屏幕大小自动显示和隐藏侧边栏,无论是在文档加载时还是在屏幕/浏览器调整大小时(例如横向-纵向模式)。是的,我将它与@media查询结合使用,但这不是这里的问题。需要jQuery来完成汽车部件和切换(此处未显示)。

代码语言:javascript
复制
<script>
    $(document).ready(function() {
        var sidebar = $("#sidebar");
        var advsearch = $("#advsearch");
// auto-hide function
        var resize = function() {
            if( $(window).width() > 650 ) {
                sidebar.show();
                advsearch.hide();
            } else {
                sidebar.hide();
                advsearch.show();
            }
        };
        resize();
        $(window).resize(resize);
    });
</script>

这个问题存在于一些Android2.1设备和他们的普通浏览器上。上面的脚本在屏幕大小稍有变化时自动隐藏侧边栏(函数更新并持续监控用户的屏幕大小),当我浏览页面并切换到显示侧边栏时,页面上最小的滚动会触发jquery函数,它“认为”屏幕分辨率已经改变,并重新访问刚刚切换/激活的有效隐藏侧边栏!

原因很可能是因为Android 2.1浏览器的垂直滚动条在页面垂直滚动时会以某种方式影响屏幕大小,因此用户永远无法正确到达侧边栏div的内容。这在较新的版本/设备中不会发生,但它很烦人。

解决方案:

基本的想法是去掉后面的部分jquery代码,让脚本变得不那么“智能”(我目前使用的解决方案)。

第二个想法是保留jquery自动隐藏功能,但是在$(window).resize函数中添加一些tollerance。例如,当屏幕从当前大小调整到+/-10px (无论它是什么)时,不会触发调整大小功能。

例如,假设当前屏幕尺寸是400px,那么通过上面的函数隐藏侧边栏的条件是完全填充的(同样,如果之前通过切换按钮显示或隐藏了侧边栏div,例如),它将不会被隐藏,直到设备/浏览器的窗口/屏幕尺寸不超过389px或超过411px。

我在创建逻辑时遇到了问题,该逻辑将为调整函数设置范围条件。另外,另一个问题是如何暂时固定比较变量(上面示例中的390px和410px ),因为屏幕发生变化时,用于相对比较的变量将重新计算。

对这个解决方案有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-04-28 08:27:37

我不认为这是一个好的解决方案,但是这个简单的逻辑不能解决你的问题吗?

代码语言:javascript
复制
<script>
  $(document).ready(function() {
    var sidebar = $("#sidebar");
    var advsearch = $("#advsearch");
    var currentSize = 0;
    // auto-hide function
    var resize = function() {
      currentSize = $(window).width();
      if( currentSize > 650 ) {
        sidebar.show();
        advsearch.hide();
      } else {
        sidebar.hide();
        advsearch.show();
      }
    };
    resize();
    $(window).resize(function(){
      if ( (currentSize + 10) < $(window).width()) || (currentSize - 10) > $(window).width())){
        resize();
      }
    });
});
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23330548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档