离子幻灯片显示低于 ionic 5

Posted

技术标签:

【中文标题】离子幻灯片显示低于 ionic 5【英文标题】:ion-slides showing below the content ionic 5 【发布时间】:2021-05-06 21:08:33 【问题描述】:

我在这里使用 Ionic 5,我注意到当我在 ion-slide 1 上的幻灯片中的列表中有许多项目时,在下一个 ion-slide 中有一些项目时,当我在两者之间转换时以编程方式,项目较少的幻灯片在其实际内容下方开始。

就像幻灯片在过渡期间共享一个 Y 滚动位置。

幻灯片,其中两个,填充了一些嵌套在离子列表中的离子项(和滑动项),它们通过与离子段按钮的交互“滑动”。

有没有办法快速滚动到下一张幻灯片的顶部,以便在转换过程中不会注意到它,或者,我需要添加一些其他代码巫毒来阻止幻灯片 2 从幻灯片 1 转换的 Y 点开始来自..

编辑:运行代码的 github 存储库,滚动到长列表的底部,然后单击 Group2,下一张幻灯片从与上一张相同的 Y 点开始。

https://github.com/p4u1d34n/ionicEmpty

<ion-slides #slider class="swiper-no-swiping">

    <ion-slide>
        <ion-list>
            <ion-item-sliding *ngFor="let item of [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; let i = index">
                <ion-item (click)="doSomething(item)">
                    <ion-avatar slot="start">
                        <img src="image.png">
                    </ion-avatar>
                    <ion-label>
                        <h2>Title for item</h2>
                        <h3>Another line here</h3>
                        <p class="ion-text-wrap">
                            Some random stuff here
                        </p>
                    </ion-label>
                </ion-item>
                <ion-item-options side="end">
                    <ion-item-option color="danger" (click)="removeAction(item)">
                        Remove
                    </ion-item-option>
                </ion-item-options>
            </ion-item-sliding>
        </ion-list>
    </ion-slide>

    <ion-slide>
        <ion-list>
            <ion-item-sliding *ngFor="let item of [0,1,2,3]; let i = index">
                <ion-item (click)="doSomething(item)">
                    <ion-avatar slot="start">
                        <img src="image.png">
                    </ion-avatar>
                    <ion-label>
                        <h2>Title for different item</h2>
                        <h3>Another line here</h3>
                        <p class="ion-text-wrap">
                            Some random stuff here
                        </p>
                    </ion-label>
                </ion-item>
                <ion-item-options side="end">
                    <ion-item-option color="danger" (click)="removeAction(item)">
                        Remove
                    </ion-item-option>
                </ion-item-options>
            </ion-item-sliding>
        </ion-list>
    </ion-slide>

<ion-slides>

<ion-segment (ionChange)="changeSegment($event)" [value]="this.sliderindex">
    <ion-segment-button *ngFor="let seg of this.sliderindex" [value]="seg">
        <ion-label>seg</ion-label>
    </ion-segment-button>
</ion-segment>

declare var window;

@ViewChild('slider',static:false) slider:IonSlides;

private view: any;
public sliderindex:any = ['Group1','Group2'];

changeSegment(ev: any) 
        
    this.view = this.sliderindex.indexOf(ev.detail.value);
    this.slider.slideTo(this.view,250).then(()=>

      <!-- Trying to get experimental here...  -->
      <!--   window.scrollTo(
        top: 0,
        left: 0,
        behavior: 'smooth'
        ); -->

    );

索引.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Ionic App</title>
  <base href="/" />
  <meta name="color-scheme" content="light dark" />
  <meta name="viewport"
    content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <meta name="format-detection" content="telephone=no" />
  <meta name="msapplication-tap-highlight" content="no" />
  <link rel="icon" type="image/png" href="assets/icon/favicon.png" />
  <script type="text/javascript" src="assets/js/cdlutils.js"></script>
  <script type="text/javascript" src="assets/js/cdl-utils-ui.js"></script>
  <!-- add to homescreen for ios -->
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>
<body>
  <app-root></app-root>
</body>
</html>

【问题讨论】:

能否也发布您的 index.html 和 app.html 代码?这可能与该组件在父组件中的保存方式有关。 我添加了 index.html.. 老实说这很标准,我根本没有在项目树中遇到 app.html 那么 app.component.html 呢? :) 这是一个例子 - github.com/p4u1d34n/ionicEmpty 【参考方案1】:

我需要添加这些位..

import  IonContent  from '@ionic/angular';

@ViewChild(IonContent) content: IonContent;

把函数改成这个

changeSegment(ev: any) 
    this.view = this.sliderindex.indexOf(ev.detail.value);
    this.slider.slideTo(this.view,250).then(()=>
      this.content.scrollToTop(0)
    );

【讨论】:

以上是关于离子幻灯片显示低于 ionic 5的主要内容,如果未能解决你的问题,请参考以下文章

如何使用相同的 ionic html 来显示不同的图像?

离子滑动循环技巧 - 不更新

离子幻灯片样式宽度自动设置

幻灯片中的幻灯片内的离子视图

使用离子框架将屏幕分成两个部分?

ionic4 中不显示幻灯片