隐藏所有内容,直到页面加载完毕
我希望隐藏页面上的所有内容,直到页面加载完毕。 我看过很多post,尝试过不同的东西。 最常用的解决方案是
然后运行jQuery在窗口加载时再次显示它
$(window).load(function() { $("body").fadeIn("slow"); });
我有一个问题,因为页面依赖于JS来显示任何内容。 我很欣赏这是一件罕见的事情,但感觉不对。
理想情况下,我想使用jQuery添加display:none css
然而…
问题是我添加的时候
$(document).ready(function { $(body).css('display', 'none'); });
即使这需要一段时间才能运行,并且页面会在手边闪烁内容。
有没有更好的办法?
我可以在没有document.ready的情况下使用上面的脚本(试过,但没有工作)
谢谢。
要使用javascript隐藏它,请在BODY标记声明后设置脚本:
这样,如果禁用了javascript,仍会显示BODY
我使用它的方法有一个js
类和一个hidden-until-ready
类。 我的隐藏直到准备好的样式仅在有js
类时才应用。
例如
.js .hidden-until-ready { visibility: hidden; }
如果启用JavaScript,则在开始时应用js
类。
document.documentElement.className = document.documentElement.className + ' js';
然后在jQuery中,我删除了一旦页面加载后hidden-until-ready
了。
jQuery(document).ready(function () { jQuery('.hidden-until-ready').removeClass('hidden-until-ready'); });
这样,如果启用JavaScript,则页面元素仅在开始时隐藏,一旦页面加载,元素再次可见。
试试这个例子。 http://jsfiddle.net/iashu/AaDeF/
container content....
jQuery的
$(window).load(function() { //show(); }); function show() { $('#loading').hide(); $('#container').fadeIn(); }; setTimeout(show, 3000);
如果我必须这样做,那么我会这样做:
在CSS中我会隐藏身体:
body{ display:none; }
然后使用jQuery:
$(window).load(function() { $("body").fadeIn("slow"); });
虽然你发布了这个:
$(document).ready(function() { $(body).css('display', 'none'); // $(body) is missing the quotes });
你可以试试这个:
$(document).ready(function() { $('body').hide(); });
试试这个
$('#domelement').css('opacity', 0); $(window).load(function() { $('#domelement').css('opacity', 1); });
将“domelement”替换为要隐藏的DOM元素的选择器,直到加载为止
我会做以下事情
this is the body...
因此,将其隐藏在标题中的内联CSS中(因此它将立即生效并且不会遭受获取外部文件的延迟),然后在Javascript中将其重新调整。 注意:这不是内联CSS和JS的最佳实践,但应该为您提供最低的延迟,因此没有可见性的闪光。
将类赋予body并将其css设置为“display:none”; 然后将代码放在“body”标记之前
$(document).ready(function { $('#bodyOuter').show(); });
因此,它将被隐藏并在页面加载后将显示
你提到的闪烁即将到来,因为当jquery隐藏身体时,浏览器会开始绘制dom。 更好的解决方案是用css隐藏它,这应该避免在加载页面时显示任何内容,然后你可以取消隐藏jquery.load()中的body