我真的很想更改 MudBlazor UI 组件的颜色。但是,我似乎无法覆盖默认样式。有人可以帮我吗?
2 回答
在我们详细介绍如何使用 CSS 来设置 MudBlazor 组件的样式之前,让我为您指出主题文档。
如果主题化对您来说还不够,您有多种选择如何使用 CSS 更改 MudBlazor 元素的样式。请注意,您可能必须申请!important
覆盖 MudBlazor 的默认样式。
一种方法是在你的主 CSS 文件中定义你自己的 CSS 类并将你的类名传递给组件,如下所示:
<MudButton Class="my-class">Button with custom class</MudButton>
第二种方法是通过Style
属性直接传递 CSS 样式,就像这里记录的一样
<MudButton Variant="Variant.Filled" EndIcon="@Icons.Material.ArrowDownward" Style="background-color: yellowgreen; color: white; width: 200px; height: 60px;">
Download Now
</MudButton>
另一种方法是在你的剃须刀中嵌入一个<style>
标签,你甚至可以使用 C# 变量来动态修改 CSS。您可以在此小提琴中尝试以下示例
<style>
button {
background-color: yellowgreen !important;
color: white !important;
height: @(height)px;
}
</style>
<MudSlider @bind-Value="height" Min="30" Max="300"/>
<MudButton Variant="Variant.Filled">
Use Slider to change my height
</MudButton>
@code {
int height=100;
}
最后但并非最不重要的一点是,如果您想使用 Blazor 的 CSS 隔离,您必须确保您的页面/组件顶级元素是 html 元素,并且::deep
按照此处的讨论使用。这会将组件或页面中所有按钮的文本更改为红色:
::deep .mud-button-text { color: red !important; }
如果您想更改整个颜色主题,但同时又想保持应用颜色组合的时间和方式的一致性(根据类),您可以为整个解决方案.mud-*
覆盖 MudBlazor 的 CSS 变量 ( )。--mud-*
例如,当您使用 时<MudButton Color="Color.Primary"> </MudButton>
,您的按钮元素将自动获取.mud-button-text.mud-button-text-primary
应用的类组合。此类组合然后应用样式:color: var(--mud-palette-primary);
. 通过覆盖--mud-palette-primary
根级别的值,您将为整个解决方案更改它;导致,例如,您的 MudButton 元素的另一种文本颜色与Color.Primary
.
在您的全局 CSS 文件中,可以按如下方式覆盖 CSS 变量:
:root {
--mud-palette-primary: violet;
--mud-palette-primary-text: yellow;
}
也可以使用 HEX 值,就像任何其他 CSS 颜色属性值一样。
如果要更改整个调色板,这可能是一项彻底的工作,但不需要自定义类或!important
s。
不利的一面是,MudBlazor 保证会使用较新的版本更改它们对 CSS 变量的使用(可能还有它们的选择);所以这个变量覆盖将需要随着时间的推移进行维护。(再说一次,我能想到的任何其他可能的解决方案也是如此。)
在这里快速试用的示例片段。
(注意:在示例代码段中,除了 之外,该属性Variant
还设置在 MudButton 元素上Color
;这设置了一组不同的类,这再次以不同的方式使用 MudBlazor CSS 变量应用样式。)