首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置带参数的背景色

设置带参数的背景色
EN

Stack Overflow用户
提问于 2022-02-13 10:02:45
回答 2查看 1.5K关注 0票数 0

我有一个带有css样式的卡片blazor组件,我尝试以以下方式将背景色作为参数传递给样式:

代码语言:javascript
复制
@inject NavigationManager UriHelper

<SfCard @onclick=@Navigate CssClass="@NavigateUri">
    <CardHeader Title="@Title">
        <span class="fa fa-@CardIcon test-icon" aria-hidden="true"></span>
    </CardHeader>
    <CardContent Content="@Content" />
</SfCard>

<style>
    .e-card .e-card-header {
        background: @CardColor;
        height: 60px;
        align-self: flex-start;
    }

</style>


@code {
    [Parameter]
    public string Title { get; set; } = string.Empty;

    [Parameter]
    public string Content { get; set; } = string.Empty;

    [Parameter]
    public string NavigateUri { get; set; } = string.Empty;

    [Parameter]
    public string CardColor { get; set; } = string.Empty;

    [Parameter]
    public string CardIcon { get; set; } = string.Empty;

    void Navigate()
    {
        UriHelper.NavigateTo(NavigateUri);
    }
}

它适用于1张卡,但当尝试创建多个卡片实例时,例如:

代码语言:javascript
复制
    <Card Title="test1" NavigateUri="test1" CardIcon="random"
        Content="test1 content" CardColor="red">
    </Card>

    <Card Title="test2" NavigateUri="test2" CardIcon="random"
        Content="test2 content" CardColor="blue">
    </Card>

它们都是用第一种颜色(红色)着色的,而不是每种颜色都有自己的颜色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-13 10:30:12

修正后的答案

像这样的东西应该管用。我使用Guids在组件的每个实例中创建唯一性。它是组件隔离CSS的手动版本。

代码语言:javascript
复制
<div id="@UID" class="card text-white e-card mb-3" style="max-width: 18rem;">
  <div class="card-header e-card-header">Header</div>
  <div class="card-body">
    <h5 class="card-title">Primary card title</h5>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
  </div>
</div>

<style>
    @css  {
        background: @CardColor;
    }

</style>

@code {
    public string UID = $"xx-{Guid.NewGuid().ToString()}";

    private string css => $"#{UID} .e-card-header";

    [Parameter] public string CardColor { get; set; } = "#004";
}

这是我的测试页面:

代码语言:javascript
复制
@page "/"

<PageTitle>Index</PageTitle>

<h1>Hello, world!</h1>

Welcome to your new app.

<SurveyPrompt Title="How is Blazor working for you?" />
<MyCard CardColor="#004" />
<MyCard CardColor="#040" />
<MyCard CardColor="#800" />

@code {
}

其结果是:

SyncFusion版本:

这是一个“工作的”同步版本-我厌倦了跳箍,让它完全安装!

代码语言:javascript
复制
@using Syncfusion.Blazor.Cards
<SfCard id="@UID" CssClass="@NavigateUri">
    <CardHeader Title="@Title">
        <span class="fa fa-@CardIcon test-icon" aria-hidden="true"></span>
    </CardHeader>
    <CardContent Content="@Content" />
</SfCard>

<style>
    @css {
        background: @CardColor;
    }

</style>

@code {
    [Parameter]
    public string Title { get; set; } = "Hello";

    [Parameter]
    public string Content { get; set; } = "Hello Blazor";

    [Parameter]
    public string NavigateUri { get; set; } = string.Empty;

    [Parameter]
    public string CardColor { get; set; } = string.Empty;

    [Parameter]
    public string CardIcon { get; set; } = string.Empty;

    public string UID = $"xx-{Guid.NewGuid().ToString()}";

    private string css => $"#{UID} .e-card-header";
}

以及显示背景色变化的运行:

票数 2
EN

Stack Overflow用户

发布于 2022-02-13 11:05:47

如果您想为整个SfCard (而不仅仅是CardHeader )设置背景色,您可以利用SfCard的属性HtmlAttributes (文档),并直接在Card实现中的SfCard组件上设置与参数相关的style值。

代码语言:javascript
复制
<SfCard style="background-color: @CardColor">
    <!--Content-->
</SfCard>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71099593

复制
相关文章

相似问题

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