【问题标题】:How to rid of the "blinking" reloading effect of a Collapsible Menu?如何摆脱可折叠菜单的“闪烁”重新加载效果?
【发布时间】:2012-10-25 05:38:04
【问题描述】:

我的老板希望我们的网站有一个可折叠的侧边栏,我设法想出了一个。但是,她发现在导航期间(或刷新页面时)侧边栏会不断重新加载,并且因此具有这种快速折叠和展开(“闪烁”)效果的动作。是否可以在保留侧栏折叠/展开功能的同时去掉它?

链接:http://2ddige.com/temps/Services/proteomics%202d_dige.html

PS:她希望默认处于展开状态,而不是折叠状态。

Code:
// Appear/Disappear
            $('#menu4 > li > a.expanded + ul').show();
            $('#menu4 > li > a').click(function() {
                       $(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').toggle();
            });
            $('#example4 .expand_all').click(function() {
                $('#menu4 > li >   a.collapsed').addClass('expanded').removeClass('collapsed').parent().find('> ul').show();
            });
            $('#example4 .collapse_all').click(function() {
                $('#menu4 > li > a.expanded').addClass('collapsed').removeClass('expanded').parent().find('> ul').hide();
            });

【问题讨论】:

  • 给它隐藏在html中的类,以便在javascript运行之前自然折叠或展开。
  • 所以我应该添加可见性:隐藏?对不起,我对javascript不是很熟悉..
  • 不,无论什么类对折叠的东西进行样式化,都应该添加到 HTML 中,这样它就不必等待 javascript 执行来获取格式。
  • 我不确定你的意思,它已经在这里了:类“expanded”正在控制展开状态。
  • .leftmenu a.expanded { 背景: url('../Images/collapse2.png') 不重复 50%;行高:35px;颜色:#333333;字体大小:11px;宽度:243px;左边距:30px; }

标签: jquery html css sidebar


【解决方案1】:

删除包括 .show() 在内的第一行并将其添加到您的 CSS:

#menu4 > li > a.expanded + ul {
    display: block;
}

或将其添加到每个 ul 元素中:

<ul style="display: block;">

您遇到的情况称为FOUC,尽管该 wiki 没有提到在页面加载或 domcontentloaded 上使用 javascript 设置元素样式时也会发生 FOUC。

【讨论】:

  • 非常感谢凯文耐心地与像我这样的业余爱好者打交道,它奏效了! :-))) 你太棒了!
猜你喜欢
相关资源
最近更新 更多
热门标签