带显示的元素:无负载显示

时间:2013-07-15 12:27:52

标签: jquery css nav

对于跨浏览器确定性等,我使用了两个菜单,一个用于桌面,一个用于移动。通过媒体查询,我然后显示一个并隐藏另一个。我的问题是,当我按Ctrl + f5或导航到移动版本上的另一个页面时,桌面菜单会在加载时显示几秒钟。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这称为 FOUC (无格式内容的闪存),通常的原因是javascript在页面加载时运行。在显示之前,浏览器将暂停显示页面几秒钟(或十分之一秒)。通过webpagetest.orgzoompf.com运行您的网站,以确定导致网页加载速度变慢的问题。

为了在短期内为您提供帮助,请在生成页面时向元素添加样式属性,并动态设置值,例如:对于PHP:

<div id="desktop-menu" style="display:<?php echo $mobile ? 'none' : 'block'; ?>">

修改:我刚刚注意到您已使用jquery标记了该网页。大概那时你用这样的代码隐藏元素:

$(function(){$('desktop-menu').toggle();});

当您的网络浏览器已完成加载页面时,就会运行。在这种情况下,最好的做法是将CSS diaply:none内联为style属性,并简单地转储jQuery调用。

答案 1 :(得分:0)

你肯定需要2个菜单吗?

我知道自己在TrulyCode.com上有1个菜单,但是通过媒体查询以不同的方式设置它,它从基本的菜单栏到移动的屏幕外侧栏。

在您尝试找到2菜单方式的解决方案之前,看看您是否可以获得适合所有风格的1菜单,因为它有助于SEO,页面速度,并且通常更加一致。

正如尼古拉斯所提到的,这只是一个没有风格的内容,浏览器已经获得了该项目的HTML,但并非所有相关的CSS或JS。

虽然,我不会像尼古拉斯建议的那样使用display:none内联,好像JS没有加载/被阻止/禁用,那么你的用户根本就没有菜单!