首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当页面加载时,我的元素没有正确的大小?

为什么当页面加载时,我的元素没有正确的大小?
EN

Stack Overflow用户
提问于 2014-05-15 15:09:04
回答 2查看 57关注 0票数 0

如果窗口没有足够的空间,我想找个导航来隐藏。导航包含在还包含徽标的包装中,因此,为了计算是否有足够的空间,我使用以下方法:

代码语言:javascript
复制
if ($(window).width() < ($('#logo').outerWidth() + $('#nav').outerWidth())) 
    $('#nav').hide();

在文档准备就绪和窗口大小调整时,我将运行该操作。我注意到的是,如果窗户开始太小,它没有隐藏导航,所以我进一步查看了它。我发现当文档准备就绪时,正在计算的导航宽度是不正确的。

导航系统由以下部分组成

  • 而且它们都是计算出来的大约3-4 4px太小,但当调整窗口大小时,值将得到正确的计算。有人知道为什么会这样吗?
EN

回答 2

Stack Overflow用户

发布于 2014-05-15 15:16:55

可能是在调用函数时,有些映像没有完全加载。尝试将事件绑定到;

代码语言:javascript
复制
$(window).load();

而不是;

代码语言:javascript
复制
$(document).ready();

这将使函数在页面完全完成加载(包括图像)之后运行,而$(document).ready()只等待DOM加载。

代码语言:javascript
复制
$(window).load(function () {
    if ($(window).width() < ($('#logo').outerWidth() + $('#nav').outerWidth()))
        $('#nav').hide();
});

As Terry pointed out,在一个资源非常多的站点上,这将导致在隐藏导航条之前出现很大的延迟,这可能是一个问题,因此您可以检查#nav或#logo元素的加载状态。

代码语言:javascript
复制
$('#nav').load(function () {
    if ($(window).width() < ($('#logo').outerWidth() + $('#nav').outerWidth()))
        $('#nav').hide();
});
票数 1
EN

Stack Overflow用户

发布于 2014-05-15 15:17:56

这个问题通常来自于浏览器在调用代码行时仍然在计算元素的大小这一事实。试着在$(document).ready()函数中注意您正在更改的大小(最好将整个代码粘贴在这里.)。元素大小的任何更改都可能影响所有其他元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23682182

复制
相关文章

相似问题

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