Blazor должен иметь простой способ сделать это, но на данный момент его нет. Надеюсь, когда-нибудь это произойдет.
Я сделал компонент для решения этой проблемы. Он позволяет вам установить CSS класс элемента тела страницы из страницы или компонента. Вы также можете установить атрибут lang и атрибут dir, чтобы установить язык и направление текста на странице. Это были все атрибуты, которые, как я думал, вы, возможно, захотите изменить, но вы можете добавить больше, если вам нужно.
Вы можете загрузить код здесь: https://github.com/BenjaminCharlton/BlazorBody
Или вот краткое описание того, как это сделать:
- Создайте небольшой JavaScript файл для управления элементом тела в scripts / BodyElement. js
var getBodyElement = function() {
return document.getElementsByTagName("body")[0];
}
var addCssClassToBody = function (cssClass) {
var body = getBodyElement();
if (!body.classList.contains(cssClass)) {
body.classList.add(cssClass);
}
}
var setLanguageOfBody = function (language) {
var body = getBodyElement();
body.lang = language;
}
var setTextDirectionOfBody = function (direction) {
var body = getBodyElement();
body.dir = direction;
}
Разместите ссылку на свой JavaScript в разделе индекса. html
<script src="/script/bodyelement.js"></script>
Сделайте небольшой класс CSS, чтобы проверить результат.
body {
background: white;
color: black;
}
body.danger {
background: red;
color: white;
}
Создайте компонент бритвы BodyElement, который вы можете разместить на любой странице со свойствами, которые вы можете установить на этой странице.
@inject IJSRuntime JSRuntime
@code {
protected async override Task OnParametersSetAsync()
{
if (CssClass is { })
await JSRuntime.InvokeVoidAsync("addCssClassToBody", CssClass);
if (Language is { })
await JSRuntime.InvokeVoidAsync("setLanguageOfBody", Language);
if (TextDirection is { })
await JSRuntime.InvokeVoidAsync("setTextDirectionOfBody", TextDirection);
}
[Parameter]
public string? CssClass { get; set; } = null;
[Parameter]
public string? Language { get; set; } = null;
[Parameter]
public string? TextDirection { get; set; } = null;
}
Разместите компонент бритвы BodyElement на любой странице, где вы sh, чтобы управлять тегом и устанавливать свойства
@page "/danger"
<BodyElement CssClass="danger" />