有几种方法可以摆脱“blazor 方式”做事并完成元素的 css 修改。
Simplest: 就像可以使用class属性一样,使用style属性
<element style=@myStyle></element>
@code {
string myStyle;
void MyMethod() {
myStyle="overflow-y: hidden;"
}
}
Advanced: 使用JS互操作
A。在主视图中(index.html
or Pages/_Host.cshtml
取决于项目类型),为您的组件创建一个 js 端点
<script>
window.applyStyleForElement = function(styleOp) {
document.getElementById(styleOp.id).style[styleOp.attrib] = styleOp.value;
}
</script>
b.在剃刀文件中:
@Inject IJRRuntime JSRuntime
<element id=@myId></element>
@code {
string myId = Guid.NewGuid().ToString("n");
async Task MyMethod() {
await JSRuntime.InvokeAsync("applyStyleForElement",
new { id = myId, attrib = "overflowY", value = "hidden" });
}
}
最后,使用 body 元素应用于您的特殊情况(上面的“高级”方法)。
A。在主视图中(index.html
or Pages/_Host.cshtml
取决于项目类型),创建一个js端点
<script>
window.applyStyleForBody = function(style) {
document.body.style[style.attrib] = style.value;
}
</script>
b.在剃刀文件中:
@Inject IJRRuntime JSRuntime
(...)
@code {
async Task MyMethod() {
await JSRuntime.InvokeAsync("applyStyleForBody",
new { attrib = "overflowY", value = "hidden" });
}
}