【问题标题】:jQuery resize only working partiallyjQuery调整大小仅部分工作
【发布时间】:2012-10-11 18:43:07
【问题描述】:

好的,首先,我对javascript不是很熟悉,所以如果这看起来是一个非常愚蠢的问题,请原谅......

这是我的代码,用于根据窗口高度(徽标、标题)和导航栏根据动态调整大小的徽标和标题的宽度动态调整标题项的大小:

function titlesize (){
  var winsize = {
    width: document.documentElement.clientWidth || window.innerWidth || document.body.offsetWidth,
    height: document.documentElement.clientHeight || window.innerHeight || document.body.offsetHeight
  };

  var titlefont = $(".title");
  var logo= $(".logo");
  var logow = winsize.height * 0.2;
  var logoh = winsize.height * 0.15;
  var titlefontsize = winsize.height * 0.03;
  var titlew = titlefontsize * 7;

  if (winsize.height > 580) {
    logo.css({width: logow, height: logoh});
    titlefont.css('font-size', function(){return (titlefontsize);});
    titlefont.css('width', function(){return (titlew);});
  }
  else {
    var logow = "150";
    var logoh = "100";
    var titlew = "122.5";
    logo.css({width: logow, height: logoh});
    titlefont.css({'font-size': "17.5px", width: titlew});
  }

  if ((winsize.width > 480) && ((winsize.width * 0.9) < (logow + titlew + 420))) {
    $("nav").css({float: "left"});
  }
}
$(document).ready(function() {titlesize(); $(window).resize(titlesize);$(window).load(titlesize);});

说明:我有一个标题标志和文本根据窗口高度而不是通常的宽度动态调整大小,这样整体标题不会占用太多屏幕(尤其是在移动设备上风景)。

然后将放置导航栏:如果有足够的空间,则位于右上角(默认),或位于标题下方(浮动:左)。

问题是:调整窗口大小确实可以很好地调整徽标和文本的大小,但不能调整导航栏。这只会对重新加载做出反应,而不会对调整大小做出反应。有什么原因吗?

我怀疑这是因为从第一个 if else 语句派生的那些动态变量的依赖性。我很确定有一个简单的解决方案,但是什么?

感谢您的帮助。

PS:试图制作一个 jsfiddle,但它给了我 POST 错误(不知道为什么,没有表单提交或类似的东西)

编辑和解决方案

找出它不起作用的原因:只是在 var 声明中犯了一个错误

我在函数 vars logowtitlewelse 部分中设置了 quotes 中的固定值,因此 js 将它们视为文字而不是数字。因此,导航的计算就搞砸了。将这些变量声明为数字 (var logow = 150;) 就成功了。

仍然感谢您的帮助和高度媒体查询的重要提示!

【问题讨论】:

  • 你不能使用媒体查询来调整大小...
  • 否,因为媒体查询取决于窗口宽度,而我的函数/元素会根据窗口高度调整大小。但是,我确实在小屏幕导航部分的 winsize.width > 480 中使用媒体查询

标签: jquery window-resize jquery-resizable


【解决方案1】:

DominicaJune 是对的。您可以使用媒体查询来获取高度:

http://trentwalton.com/2012/01/11/vertical-media-queries-wide-sites/

【讨论】:

  • 感谢您为我指明了一个非常有趣的方向!我只能重复什么Ch。 Meeks 回复了上述帖子:“我必须谦虚地承认,我什至不知道您可以使用媒体查询来获取屏幕高度。如此关注屏幕宽度,我完全忽略了这个想法。”也就是说,它仍然没有真正帮助我,因为使用媒体查询我只能设置某些固定阈值,而我想将我的元素调整为任何给定的屏幕高度和宽度。因此:我会去试试 Jish 的解决方案,看看这是否对我有用。尽管如此,我还是 +1!
【解决方案2】:

您已准备好在文档中调整大小。 如果你有:

$(document).ready(function(){
//some code
});

$(window).resize(function(){
//your resize code
});

它应该一直有效。虽然媒体查询看起来要简单得多。

【讨论】:

  • 仔细观察,这就是我在最后一行中已经拥有的内容:$(document).ready(function() {titlesize(); $(window).resize(titlesize);$(window).load(titlesize);});
  • 不,你的函数$(document).ready(function() {打开,然后在$(window).load(titlesize);之后关闭把$(window).resize放在$(document)之外。准备好了
  • 感谢您的澄清!正如最上面提到的:我是一个 js 新手。改变了它,并且通过我更正的计算,它现在就像一个魅力。干杯。
猜你喜欢
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2015-05-08
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多