RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 692925
Accepted
Narnik Gamarnik
Narnik Gamarnik
Asked:2020-07-16 22:57:24 +0000 UTC2020-07-16 22:57:24 +0000 UTC 2020-07-16 22:57:24 +0000 UTC

处理页面加载默认值的正确方法是什么?

  • 772

你好。我决定做一个干净JS的,然后出现了一个我不知道如何解决的陈腐问题:

有两个功能,一个打开,一个关闭Sidebar:

function openNav() {
    document.getElementById("mySidenav").style.width = "250px";
    document.getElementById("main").style.marginLeft = "250px";
    document.getElementById("mySidenav").className += ' mySidenavOpen';
    document.getElementById("opener").style.display = "none";
}

function closeNav() {
    document.getElementById("mySidenav").style.width = "0";
    document.getElementById("main").style.marginLeft = "0";
    document.getElementById("mySidenav").classList.remove("mySidenavOpen");
    document.getElementById("opener").style.display = "block";
} 

然后我发现在我打开菜单并转到另一个页面(带有模板的常规站点,而不是 SPA)之后,当然默认情况下菜单是关闭的,为此我决定使用 cookie:

通过向其添加一组cookie来更改上述菜单打开功能:

function openNav() {
    ...
    Cookies.set('mySidenav', 'open');
}

在所有这些业务之前,我检查 cookie 中是否有值:

if (Cookies.get('mySidenav')) {
    if (Cookies.get('mySidenav') === 'open') {
        openNav();
    }
}

现在,很明显,在每次加载页面时,菜单都会打开,但只有在所有内容加载完毕后才会打开JS,并且默认情况下不会打开(呈现 HTML 时)。

告诉我如何正确实施?

如果你使用LocalStorage,那么本质不会改变,因为无论如何,你都需要等到键接收到值。

我想到了一个预加载器,但事实是页面现在加载速度非常快,因为静态权重低且缺少媒体,我不想用显眼的“加载”内容破坏整个印象。

笔记

我使用js-cookie 接收 cookie。

所有文件连接js都在结束标记之前。

为了解决这个问题,我不想改变脚本的位置。

javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    MaxWall
    2020-05-12T04:34:52Z2020-05-12T04:34:52Z

    哇,这个问题是9个月前问的,没人回答。迟到总比不到好

    我遇到了同样的问题并像这样解决了它:

    • 我们为所有内容可见性的包装器(主体)制作:隐藏;不透明度:0 过渡:不透明度.6s;
    • 在包装器的加载事件窗口上,添加 .is-loaded 类,这将使 visibility: visible; 不透明度:1

    结果,我们得到了片刻的白屏和快速流畅的内容外观,其中包含工作滑块、菜单、select2,并且没有抖动。看起来很不错。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5