Visão geral do cartão Blazor

    O Ignite UI for Blazor Card exibe texto, imagens, ícones e botões em uma apresentação visualmente rica que pode servir como um ponto de entrada para informações mais detalhadas. Os cards podem ser usados para criar um painel multimídia.

    Blazor Card Example

    Usage

    Os cartões permitem que você exiba facilmente conteúdo composto de diferentes tipos de objetos ou objetos semelhantes cujo tamanho e ações suportadas podem variar.

    Getting Started

    Antes de usá-losIgbCard, você precisa registrá-los da seguinte forma:

    // in Program.cs file
    
    builder.Services.AddIgniteUIBlazor(typeof(IgbCardModule));
    

    Você também precisará vincular um arquivo CSS adicional para aplicar o estilo aoIgbCard componente. O seguinte deve ser colocado no arquivo wwwroot/index.html em um projeto Blazor Web Assembly ou no arquivo Pages/_Host.cshtml em um projeto Blazor Server:

    <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
    

    Para uma introdução completa ao Ignite UI for Blazor, leia o tópico Comecando.

    Então, para representar o modelo do cartão de demonstração, podemos adicionar o seguinte código:

    <IgbCard>
        <IgbCardMedia>
            <img src="https://images.unsplash.com/photo-1518235506717-e1ed3306a89b?ixlib=rb-1.2.1&auto=format&fit=crop&w=640&q=50">
        </IgbCardMedia>
        <IgbCardHeader>
            <h3 slot="title">New York City</h3>
            <h5 slot="subtitle">City in New York</h5>
        </IgbCardHeader>
    
        <IgbCardContent>
           <p>New York City comprises 5 boroughs sitting where the
               Hudson River meets the Atlantic Ocean. At its core is Manhattan,
               a densely populated borough that's among the world's major commercial,
               financial and cultural centers.</p>
        </IgbCardContent>
        <IgbCardActions>
            <IgbButton slot="start">
                <IgbRipple />
                Read more
            </IgbButton>
            <div slot="end">
                <IgbIconButton name="twitter" >
                    <IgbRipple />
                </IgbIconButton>
                <IgbIconButton name="facebook" >
                    <IgbRipple />
                </IgbIconButton>
            </div>
        </IgbCardActions>
    </IgbCard>
    

    Você vai notar algumas coisas acima. Primeiro, quando queremos marcar um elemento como título de cabeçalho, como oh3 cabeçalho, colocamos entre asIgbCardHeader tags e definimos o nome do slot paratitle. Por outro lado, se quiséssemos fazer outro elemento de cabeçalho asubtitle, nomearíamos seu slotsubtitle.

    Qualquer imagem ou vídeo que quisermos mostrar no cartão, envolvemos dentro dasIgbCardMedia tags. IssoIgbCardMedia nos permite dimensionar o conteúdo colocado dentro para que ele mantenha sua proporção de aspecto enquanto preenche toda a caixa de conteúdo do elemento. Se a proporção de aspecto do objeto não corresponder à proporção da caixa, então o objeto será cortado para se encaixar.

    Você pode colocar qualquer coisa dentro dasIgbCardContent etiquetas. Normalmente o texto vai para lá.

    Por fim, éIgbCardActions onde você coloca qualquer item de ação, como botões.

    Media, Thumbs, and Avatars

    Se quiser mostrar uma imagem ou ícone no cabeçalho do cartão ao lado do título e da legenda, pode fazer isso atribuindo a propriedade de slot do elemento a.thumbnail

    Pegando o cartão acima como exemplo, podemos editar o conteúdo doIgbCardHeader e adicionar um avatar comslot="thumbnail":

    <IgbCardHeader>
        <IgbAvatar slot="thumbnail" Src="path/to/image" Initials="TS" />
    
        <h3 slot="title">Title</h5>
        <h5 slot="subtitle">Subtitle</h5>
    </IgbCardHeader>
    

    O exemplo acima mostrará o avatar junto com o título e o subtítulo no cabeçalho do cartão.

    Outlined cards

    A carta possui umoutlined atributo que, se ativado, remove quaisquer sombras da carta, substituindo-as por uma borda fina para separar a carta do fundo.

    Horizontal Layout

    Por padrão, todas as seções do cartão (cabeçalho, conteúdo, mídia, ações) estão dispostas verticalmente. Isso é bom quando temos muito espaço vertical. Digamos que quisermos dispor as seções do cartão horizontalmente. Podemos alcançar esse layout com um simples CSS.

    Aqui está um exemplo de um cartão horizontal contornado:

    <IgbCard>
        <div class="card-horizontal">
            <div>
                <IgbCardHeader>
                    <img slot="thumbnail" src="ROZES-Under-the-Grave.jpg" alt="ROZES-Under-the-Grave" />
                    <h5 slot="title">Rozes</h5>
                    <h5 slot="subtitle">Under the Grave (2016)</h5>
                </IgbCardHeader>
                <IgbCardContent>
                    <p>
                        As I have always said: I write what's real and what's true,
                        even if it means throwing myself under the bus.
                    </p>
                </IgbCardContent>
            </div>
            <div class="divider"></div>
            <IgbCardActions>
                <IgbIconButton Name="previous" />
                <IgbIconButton Name="play" />
                <IgbIconButton Name="next" />
            </IgbCardActions>
        </div>
    </IgbCard>
    

    Estamos usando um elemento adicionaldiv para agrupar osIgbCardHeader eIgbCardContent juntos, mantendo-os alinhados verticalmente e aplicando a.card-horizontal classe ao elemento dediv enrolamento para alinhar as duas seções da carta horizontalmente.

    Os estilos que essa.card-horizontal classe aplica são:

    .card-horizontal {
        display: flex;
        flex-direction: row;
        flex: 1 1 0%;
    }
    
    .card-horizontal img {
        width: 64px;
        height: 64px;
    }
    
    .card-horizontal igc-card-actions {
        justify-content: center;
    }
    

    Se tudo correr bem, nosso cartão deverá ficar assim:

    Alternative layouts

    Você pode ser ainda mais criativo com o layout doIgbCard.

    Abaixo está um exemplo mostrando como você pode criar uma carta semi-horizontal, onde todas as seções da carta estão dispostas verticalmente, enquanto aIgbCardMedia carta aparece junto com as seções verticais.

    <IgbCard>
        <div class="semi-horizontal">
            <div>
                <IgbCardHeader>
                    <IgbAvatar slot="thumbnail" src/>
                    <h5 slot="title">HERE</h5>
                    <h5 slot="subtitle">by Mellow D</h5>
                </IgbCardHeader>
                <IgbCardContent>
                  <p>Far far away, behind the word mountains,
                  far from the countries Vokalia and Consonantia,
                  there live the blind texts.</p>
                </IgbCardContent>
                <IgbCardActions>
                    <IgbButton>Play Album</IgbButton>
                </IgbCardActions>
            </div>
            <IgbCardMedia class="card-media">
                <img src="here_media.jpg" alt="here_media" />
            </IgbCardMedia>
        </div>
    </IgbCard>
    
    .semi-horizontal {
        display: flex;
        flex-direction: row;
        flex-grow: 1;
    }
    
    .card-media {
        width: 96px;
        min-width: 96px;
    }
    

    Card Actions

    A área de ações do cartão permite configurações adicionais ao que já mencionamos.

    Você pode inverter a ordem do botão de texto e dos botões de ícone trocando os nomes dos slots.

    <IgbCardActions>
        <IgbButton slot="start">
            <IgbRipple />
            Read more
        </IgbButton>
        <div slot="start">
            <IgbIconButton name="twitter">
                <IgbRipple />
            </IgbIconButton>
            <IgbIconButton name="facebook" >
                <IgbRipple />
            </IgbIconButton>
        </div>
    </IgbCardActions>
    

    Agora os botões de ícones aparecerão antes do botão de texto.

    Você também pode adicionar mais conteúdo no meio, simplesmente omitindo a propriedade slot e deixando os elementos irem para o slot padrão.

    Styling

    Como o cartão é um recipiente que envolve diferentes elementos, o estilo é feito estilizando seus blocos de construção - osIgbCardHeaderIgbCardContentIgbCardMedia subcomponentes eIgbCardActions os componentes.

    igc-card {
      background-color: var(--ig-secondary-900);
    }
    
    igc-card-content,
    igc-card-header::part(title) {
      color: var(--ig-primary-500-contrast);
    }
    
    igc-card-header > *[slot="subtitle"] {
      color: var(--ig-warn-500);
      opacity: 0.9;
    }
    
    igc-icon-button::part(base) {
      background-color: var(--ig-primary-300);
    }
    

    Summary

    Neste artigo, cobrimos muito terreno com o componente de cartão. Criamos um cartão simples e adicionamos algumas imagens para torná-lo um pouco mais atraente. Usamos alguns Blazor adicionais dentro do nosso cartão, como avatares, botões e ícones, para enriquecer a experiência e adicionar alguma funcionalidade. E, finalmente, mudamos a aparência do cartão alterando as cores principais dos blocos de construção.

    API References

    Additional Resources