Это MudCarousel, у которого есть 2 MudCarouselItem, а внутри каждого MudCarouselItem есть 4 MudCard. Моя проблема в том, что когда я просматриваю это в мобильном представлении, первая MudCard MudCarouselItem становится видимой, другие скрываются и не могут получить доступ или увидеть.
<MudCarousel Class = "mud-width-full" Style = "height:220px;" ShowArrows = "true" ShowBullets = "false" EnableSwipeGesture = "true" AutoCycle = "false" TData = "object">
<MudCarouselItem Transition = "@Transition.Slide">
<div class = "d-flex justify-content-center" style = "height:100%;">
<div class = "carousel-container">
<MudGrid>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper1" Style = "height: 210px;width:270px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px; background-color:#FFF176; text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 1
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;font-size:small;" >
</MudCardContent>
<MudCardActions></MudCardActions>
</MudCard>
</MudItem>
<MudItem xs = "12" sm = "3">
<MudCard Class = "hover-paper paper2" Style = "height: 210px;width:270px;margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px; background-color:#F8BBD0;;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 2
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;font-size:small;">
</MudCardContent>
</MudCard>
</MudItem>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper3" Style = "height: 210px;width:270px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px; background-color:#B3E5FC;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 3
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;font-size:small;">
</MudCardContent>
</MudCard>
</MudItem>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper4" Style = "height: 210px;width:270px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px; background-color:#AED581 ;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 4
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;font-size:small;">
</MudCardContent>
</MudCard>
</MudItem>
</MudGrid>
</div>
</div>
</MudCarouselItem>
<MudCarouselItem Transition = "@Transition.Slide">
<div class = "d-flex justify-content-center" style = "height:100%;">
<div class = "carousel-container">
<MudGrid>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper1" Style = "height: 210px;width:250px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px;background-color:#FFF176;;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 5
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;">
</MudCardContent>
</MudCard>
</MudItem>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper2" Style = "height: 210px;width:250px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px;background-color:#F8BBD0;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 6
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;">
</MudCardContent>
</MudCard> </MudItem>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper3" Style = "height: 210px;width:250px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px;background-color:#B3E5FC;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 7
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;">
</MudCardContent>
</MudCard>
</MudItem>
<MudItem xs = "12" sm = "3" >
<MudCard Class = "hover-paper paper4" Style = "height: 210px;width:250px; margin-right:5px;" Elevation = "4">
<MudCardHeader style = "height: 75px;background-color:#AED581 ;text-align:center;">
<CardHeaderContent>
<div style = "display: flex; justify-content: center; align-items: center;">
<div style = "flex-grow: 1;">
<MudText Typo = "Typo.caption" Color = "Color.Dark" style = "word-wrap: break-word;">
Application Name 8
</MudText>
</div>
<MudTooltip Text = "Name of IT Owners/Business" Arrow = "true" Placement = "Placement.Top">
<MudIconButton Icon = "@Icons.Material.Filled.Help" Size = "Size.Small" />
</MudTooltip>
</div>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent style = "margin-bottom: 0; padding-bottom: 0;word-wrap: break-word;">
</MudCardContent>
</MudCard>
</MudItem></MudGrid>
</div>
</div>
</MudCarouselItem>
</MudCarousel>
В мобильном представлении я хочу, чтобы моя карусель вела себя так, что она показывает одну карточку и щелкает стрелку влево/вправо, она должна отображать предыдущую/следующую карточку соответственно (по одной карточке за раз). То есть в мобильном представлении я хочу видеть только одну карту Mudcard, которая должна действовать как MudCarouselItem и разрешать доступ к другим картам Mudcard с помощью стрелок «Назад» и «Далее».
Вид рабочего стола:
Мобильная версия:
Вы можете использовать IBrowserViewportService
, чтобы определить, как должны отображаться элементы карусели. В этом полном примере кода я добавил три различных варианта рендеринга в зависимости от размера экрана (вы можете изменить их по мере необходимости). Основная логика показана ниже:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (!firstRender) return;
_initialized = true;
var breakpoint = await BrowserViewportService.GetCurrentBreakpointAsync();
switch (breakpoint)
{
case Breakpoint.Xs:
case Breakpoint.Sm:
_itemGroups = ChunkList<TData>(Items, 1);
break;
case Breakpoint.Md:
_itemGroups = ChunkList<TData>(Items, PerRow / 2);
break;
default:
_itemGroups = ChunkList<TData>(Items, PerRow);
break;
}
StateHasChanged();
}
Параметр PerRow
используется для определения того, сколько вы хотите отобразить (в вашем случае 4).IBrowserViewportService
проверяет текущий размер экрана, а switch
определяет, сколько элементов должно быть включено в каждый просмотр карусели.
Примечание. Изменение размера экрана уже отрисованной карусели не приведет к обновлению количества элементов, отображаемых в строке. Количество элементов определяется исходным размером экрана (размером экрана при загрузке страницы).
Можем ли мы установить собственный вид (рабочий стол), например, для рабочего стола с большим экраном, такого как xl и xxl, установив 'switch (breakpoint) {case Breakpoint.xl: _itemGroups = ChunkList<TData>(Items, 5); перерыв; случай Breakpoint.xxl: _itemGroups = ChunkList<TData>(Items, 6); перерыв; } '
Да, ты можешь. Вы можете определить сумму, отображаемую для каждой точки останова, по вашему желанию.