jQuery仅部分调整大小



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

这是我的代码,可以根据窗口高度(徽标、标题)动态调整标题项的大小,并根据动态大小徽标的宽度动态调整导航栏的大小;title:

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声明中犯了一个错误

我在函数varslogowtitlewelse部分设置为引号中的固定值,因此js将它们作为文本而不是数字。因此,导航的计算就搞砸了。将这些变量声明为数字(var logow = 150;)起到了作用。

尽管如此,还是感谢您的帮助和对媒体提问的高度提示!

多米尼克六月是对的。您可以使用媒体查询高度:

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

您正在准备文档中进行调整大小。如果您有:

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

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

最新更新