我目前正在制作一个“更改主题”按钮,以便我可以在“深色模式”和“浅色模式”之间切换整个页面。但是我找不到改变整个页面背景颜色的方法。
基本上,我需要更改 <body>
的样式(这是我唯一能想到的方法)。我的想法是,当您单击“更改主题”按钮时, <body>
元素将添加一个类“dark-theme”。然后我只是简单地在 CSS 中定义“深色主题”,如下所示:
body {
background-color: #FFFFFF;
color: #000000;
}
body.dark-theme {
background-color: #5A5A5A;
color: #F2F2F2;
}
我认为这很有道理,但正如您在下面看到的,我无法访问 <body>
元素,因此我无法添加类或更改它的 CSS。
主布局.razor
@inherits LayoutComponentBase
@using System.Web;
<div class="sidebar">
<NavMenu />
</div>
<div>
<LoginDisplay />
<button id="change-theme-btn" @onclick="ThemeChanged">Change Theme</button>
@Body
</div>
@code {
bool isDark = false;
private void ThemeChanged()
{
isDark = !isDark;
}
}
那么如何更改 <body>
元素的类或 CSS?或者,如果您有任何替代解决方案,请告诉我。谢谢!
原文由 Stephen Z. 发布,翻译遵循 CC BY-SA 4.0 许可协议
或者,如果您想要没有 blazor 的纯 C# 代码:
或者,我使用 Nuget 包 BlazorStyled:
https://github.com/chanan/BlazorStyled
这是一个示例:
如果您想观看,这是我为 BlazorStyled 制作的视频:
https://youtu.be/frtetHgfdIo