2015-09-14 66 views
1

在我的网站中,使用javascript定位了一些元素。我还使用javascript来设置其他元素的widthheightjavascript定位元素在执行javascript之前不在位置

问题是,在加载时,元素不合适几秒钟,直到执行javascript。

举个例子:

我想避免这个发生:

enter image description here

这是我打电话给我的定位功能:

$(window).load(function(){ 


      apply_javascript(); // all positioning stuff is here 

     }); 

有什么建议? 谢谢。

+0

有没有不使用'CSS'定位元素的原因? – lshettyl

+0

@lshettyl嗯,我使用js来设置容器的高度,该容器包含绝对定位的div - 这意味着它们不在正常的“流量”内,因此我无法确定它们的尺寸是 –

+0

隐藏元素,以及在页面加载和位置计算时显示它们(或淡入页面,稍微好一点) – sinisake

回答

2

如果可能的话,我会认真重新考虑尝试使用CSS进行所有定位。

在此期间,或许是这样的:

<body> 
    <script> 
     $("body").hide(); // first thing to happen in the body of your html 
    </script> 
</body> 

然后在您的负载脚本:

$(function(){ //equivalent to $(window).load(function... 
    $("body").show(); 
    //... 
}); 
+0

这不会伤害我的搜索引擎优化吗?谷歌机器人将抓取我的网页,并在第一秒内将找不到任何东西 –

+0

嗯。有很多关于googlebot运行多少javascript的猜测。我用这个对SEO没有不良影响。 – spender

1

如果你把你的功能<head>标记之间,并使用window.onpaint?

<head> 
    <script type="text/javascript" language="javascript"> 
    $(window).load(function preloadFunc(){ 


     apply_javascript(); // all positioning stuff is here 

    }); 
    window.onpaint = preloadFunc(); 
    </script> 
</head> 
+0

这对seo安全吗? –

+0

更重要的是,这是否安全? [“目前不能在基于Gecko的应用程序中工作,请参阅Notes部分!”和“不属于任何标准”](https://developer.mozilla.org/en-US/docs/Web/API/Window/onpaint ) – spender