首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mudblazor css定制

Mudblazor css定制
EN

Stack Overflow用户
提问于 2022-10-14 11:11:27
回答 1查看 169关注 0票数 1

我需要自定义MubBlazor MusSelect组件的外观。基本上,我想将背景应用到输入,并让标签具有透明的背景。

原件:

自定义:

这可以通过在一些全局css文件(例如site.css)中覆盖一些mudblazor css类来实现:

代码语言:javascript
复制
.mud-input-control > .mud-input-control-input-container > div.mud-input.mud-input-text {
    background: #ffffff;
    margin-top: 15px;
}

为了能够结合原始mudSelect使用自定义类,我在mudSelect组件中添加了一个类:

代码语言:javascript
复制
<MudSelect Class="custom-select" T="string" Label="Coffee" AnchorOrigin="Origin.BottomCenter">
    <MudSelectItem Value="@("Cappuccino")" />
    <MudSelectItem Value="@("Cafe Latte")" />
    <MudSelectItem Value="@("Espresso")" />
</MudSelect>
代码语言:javascript
复制
.custom-select .mud-input-text {
    background: #ffffff;
    margin-top: 15px;
}

但是我不想每次需要使用我的自定义外观时都添加一个类,所以我决定实现一个从mudSelect继承的组件。

SelectBox.razor

代码语言:javascript
复制
    @inherits MudSelect<T>
    @typeparam T
    
    @namespace Common.Components
    
    @RenderBase()
    
    
    @code {
        public RenderFragment RenderBase() => builder => base.BuildRenderTree(builder);
    
        protected override void OnParametersSet()
        {
            base.OnParametersSet();
            Class = $".custom-select {Class}";
        }
    }

现在我们可以使用我们的自定义组件:

代码语言:javascript
复制
<SelectBox T="string" Label="Coffee" AnchorOrigin="Origin.BottomCenter">
    <MudSelectItem Value="@("Cappuccino")" />
    <MudSelectItem Value="@("Cafe Latte")" />
    <MudSelectItem Value="@("Espresso")" />
</SelectBox>

这个解决方案的目标是区分MudSelect和我的CustomSelect,也可以通过将css移到组件中来隔离css。这个解决方案是有效的,但我无法移动css规则,因为css隔离不起作用。

有更好的办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-14 11:49:01

在阅读了子组件支持核心的CSS隔离文档之后,我意识到我的问题是我没有使用父元素来应用作用域标识符。

因此,通过在我的作用域css中添加div并使用::深层伪元素。一切正常

SelectBox.razor

代码语言:javascript
复制
    @inherits MudSelect<T>
        @typeparam T
        
        @namespace Common.Components
        <div>
        @RenderBase()
        </div>
        
        @code {
            public RenderFragment RenderBase() => builder => base.BuildRenderTree(builder);
        
            protected override void OnParametersSet()
            {
                base.OnParametersSet();
                Class = $".custom-select {Class}";
            }
        }

SelctBox.razor.css

代码语言:javascript
复制
::deep .mud-input-text {
    background: #ffffff;
    margin-top: 15px;
}

::deep .custom-select input {
    padding-left: 5px !important;
}

::deep .mud-input-control {
    margin-top: 0px;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74068347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档