大家好,我有一个问题......我在主窗口上创建了一个带有两个窗口(主页和设置)的Electron 应用程序我有一个按钮,我可以在其中更改主题(暗/亮),我使用 css 变量执行此操作和一些 Javascript 脚本(在 html 文件中,类定义了主题)。我的问题是如何在我的设置窗口中应用我的主题?(我需要在两个文件之间建立链接吗?)我尝试了很多方法但没有成功:/我发布了主要代码以帮助您理解我的问题:网址:<html class="theme-dark" id="fortheme">css:.theme-light { --color-primary: #dedad4; --color-secondary: #d7d3cb; --color-border: #c1beb9; --color-accent1: #d52015; --color-accent2: #2196f3; --color-accent3: #4caf50; --font-color: #070b0b;}.theme-dark { --color-primary: #21252b; --color-secondary: #282c34; --color-border: #3e4146; --color-accent1: #d52015; --color-accent2: #2196f3; --color-accent3: #4caf50; --font-color: #f8f4f4;}Javascript://Change pictures (picture of the button) and theme$('#light-btn').on({ 'click': function () { image = $("#light-image") if (image.attr("src") == "Images/Sun.png") { image.attr("src", "Images/Dark.png") setTheme('theme-light'); $("img").css({ filter: "invert(100%)" }) } else { image.attr("src", "Images/Sun.png") setTheme('theme-dark'); $("img").css({ filter: "invert(0%)" }) } }});帮助您理解的应用截图:灯光模式:(设置窗口没有应用主题)黑暗模式:
1 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
处理这个问题的方法可能不止几种。我个人会在main上下文中处理它,以便可以在后续启动时保存和恢复用户首选项。
所以模式将是这样的:
在
main内容知道目前的“主题”是什么(因为默认或存储的用户偏好)用户单击任一窗口中的“主题”按钮,窗口将
main使用IPC 通信发送消息的
main上下文接收消息并基于当前的主题,发送用消息发送给所有打开的窗口BrowserWindow.getAllWindows()和contents.send(信道,...参数),通过了“主题”切换到作为参数。每个窗口接收消息(带参数)并使用此处描述的方法之一处理更改“主题”:动态替换 css 文件(并将新样式应用到页面)
虽然窗口可以直接相互通信,但如果您决定在未来添加更多窗口或其他“主题”,此架构将为您提供更大的灵活性。这需要更多的工作,但让窗口“哑”,控件驻留在main.
. . . 但我也可能做错了。;-)
添加回答
举报
0/150
提交
取消
