【问题标题】:Responsive website not showing menu until page loads响应式网站在页面加载之前不显示菜单
【发布时间】:2013-05-14 21:45:51
【问题描述】:

我正在制作一个响应式网站,目的是使其在平板电脑(ipad 纵向和波纹管)和移动设备上更加“类似应用”。这(曾经)使用 CSS 媒体查询进展顺利。

问题是页面加载。用户可以搜索产品。但是响应式菜单和其他 Accordian 选项卡在页面完全加载之前无法工作。响应式菜单是http://www.meanthemes.com/plugins/meanmenu/,而 Accordian 就是 Jquery。不工作是指响应式菜单根本没有显示,并且手风琴选项卡一直保持打开状态,直到页面完全加载。

我已经在页面上隐藏了从桌面数据库填充的其他菜单....并尝试完全删除代码......这确实加快了速度,但仍然是同样的问题。

我知道答案是使用 jquery mobile 之类的东西(我建议)然后重新开始....但是客户希望网站能够响应

任何建议将不胜感激

【问题讨论】:

  • 也许你可以放出像图像这样沉重的东西并使用 Ajax 加载它们?

标签: jquery css mobile responsive-design


【解决方案1】:

Accordion 和其他菜单元素是可视组件,在执行它们的 JavaScript 之前不会初始化。

jQuery UI 可以大到 100k,并且依赖于另一个 80k 的 jQuery。

标准做法是在 $(document).ready() 回调中执行 jQuery 代码,但在移动设备上可能需要一段时间才能被触发。由于通过无线下载页面时存在延迟时间。

你有几个选择。

  • 通过仅使用您需要的功能构建 JS 来减小 jQuery UI 的大小。
  • <script> 包含标签从页面底部移动到页眉。通常建议将脚本放在底部,因为它们会阻止下载直到完成。但如果菜单与页面一起显示很重要,您可能必须将它们移动到标题。
  • 您不必总是将 JavaScript 代码放在 $(document).ready() 中。如果您知道 Javascript 位于您需要的 DOM 元素下方,那么这些元素已经准备好并可以转换为 Accordion,但 jQuery 必须已经加载。

【讨论】:

  • 继续你最后的建议,我把调用放在它下面的响应菜单上,没有 $(document).ready() 并且有效。手风琴位于两个地方……页面的顶部和底部,结果位于它们之间。我做了与上面相同的操作,并将 jquery 代码放在顶部手风琴下方,这有效....但不适用于脚下的手风琴。所以我取消了之前用于两组手风琴的 $(document).ready() 的注释……这允许底部的手风琴工作,但是当我点击顶部的手风琴时,它会立即打开和关闭…… .任何想法
  • 将你所有的内联<script>标签移动到页面底部。
  • 内联 ...这可行,但顶部手风琴的打开时间更长
  • 是的。将其放在底部以确保已加载文档元素。
  • 因为有两个手风琴菜单,任一站点都从数据库中提取大量数据,将内嵌脚本放在页面底部使顶部手风琴保持打开状态。我通过重命名顶级手风琴类并将必要的内联脚本直接放在下面解决了这个问题....看起来有点乱...但是诀窍
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
相关资源
最近更新 更多