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 utilizar o IgbCard
, você precisa registrá-lo 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 ao componente IgbCard
. O seguinte precisa 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 à Ignite UI for Blazor, leia o tópico Introdução.
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ê notará algumas coisas acima. Primeiro, quando queremos marcar um elemento como um título de cabeçalho, como o título h3
, nós o colocamos entre as tags IgbCardHeader
e definimos seu nome de slot como title
. Por outro lado, se quiséssemos fazer de outro elemento de título um subtitle
nomearíamos seu slot subtitle
.
Qualquer imagem ou vídeo que queremos mostrar no cartão, nós envolvemos dentro das tags IgbCardMedia
. O IgbCardMedia
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 de aspecto de sua caixa, então o objeto será recortado para caber.
Você pode colocar qualquer coisa dentro das tags IgbCardContent
. Geralmente, o texto vai lá.
Por fim, o IgbCardActions
é onde você colocaria quaisquer itens acionáveis, como botões.
Media, Thumbs, and Avatars
Se você quiser mostrar uma imagem ou ícone no cabeçalho do cartão ao lado do título e subtítulo, você pode fazer isso atribuindo a propriedade slot do elemento à thumbnail
.
Tomando o cartão acima como exemplo, podemos editar o conteúdo do IgbCardHeader
e adicionar um avatar com slot="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
O cartão tem um atributo outlined
que, se definido, remove quaisquer sombras do cartão, substituindo-as por uma borda fina para separar o cartão do fundo.
Horizontal Layout
Por padrão, todas as seções do cartão (cabeçalho, conteúdo, mídia, ações) são dispostas verticalmente. Isso é bom quando temos muito espaço vertical. Digamos que queremos dispor as seções do cartão horizontalmente. Podemos obter esse layout com algum CSS simples.
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" />
<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 div
adicional para agrupar o IgbCardHeader
e IgbCardContent
, mantendo-os alinhados verticalmente e aplicando a classe.card-horizontal
ao elemento div
de encapsulamento para alinhar as duas seções do cartão horizontalmente.
Os estilos que a classe.card-horizontal
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 do IgbCard
.
Abaixo está um exemplo mostrando como você pode criar um cartão semi-horizontal, onde temos cada seção do cartão disposta verticalmente, enquanto o IgbCardMedia
aparece ao lado das 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" />
</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="end">
<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
Since the card is a container that wraps different elements, styling is done by styling its building blocks - the IgbCardHeader
, IgbCardContent
, IgbCardMedia
and IgbCardActions
sub-components.
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
IgbAvatar
IgbButton
IgbCardActions
IgbCardContent
IgbCardHeader
IgbCardMedia
IgbCard
IgbIconButton
IgbIcon
Styling & Themes