- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Ionic 3 中制作一个“连续” slider 。
我使用 3 张幻灯片并更新每张幻灯片的内容。这是有效的,尽管当滑动最后一张幻灯片并循环回到第一张幻灯片时,新显示的幻灯片的内容不正确:显示所有静态数据,但未显示所有动态(绑定(bind))数据。您需要启动一个新的滑动操作(只需稍微拖动页面)才能显示数据。
将此 plunker 视为问题的示例:
https://plnkr.co/edit/YC9xiwH9hVtAmhUTO2Oc?p=preview
这是 View :
<ion-content padding>
slides:
<ion-slides loop="true" (ionSlideDidChange)="slideChanged($event)">
<ion-slide>
0 {{data[0]?.title}}
</ion-slide>
<ion-slide>
1 {{data[1]?.title}}
</ion-slide>
<ion-slide>
2 {{data[2]?.title}}
</ion-slide>
</ion-slides>
</ion-content>
这是 Controller :
从'@angular/core'导入{组件};从 'ionic-angular' 导入 { NavController };
@Component({
selector: 'page-home',
templateUrl: 'app/home.page.html'
})
export class HomePage {
appName = 'Ionic App';
slides: Slides;
public data: MonthViewData[] = [];
public date = new Date(Date.now());
monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
constructor() {
this.data.push({title:'t0'});
this.data.push({title:'t1'});
this.data.push({title:'t2'});
}
slideChanged(slides: Slides) {
this.slides = slides;
return new Promise((resolve, reject) => {
let scrollToNext = this.slides.getActiveIndex() > this.slides.getPreviousIndex();
console.log(this.slides.getActiveIndex(), this.slides.getPreviousIndex());
let currentSlideIndex: number = this.slides.getActiveIndex() - 1;
if (currentSlideIndex > 2) {
currentSlideIndex = 0;
}
if (currentSlideIndex < 0) {
currentSlideIndex = 2;
}
let previousSlideIndex = currentSlideIndex - 1;
let nextSlideIndex = currentSlideIndex + 1;
if (previousSlideIndex < 0) {
previousSlideIndex = 2;
}
if (nextSlideIndex > 2) {
nextSlideIndex = 0;
}
if (this.slides.getActiveIndex() == 1 && this.slides.getPreviousIndex() == 0) {
this.date = new Date(Date.now());
} else {
if (scrollToNext) {
this.date.setMonth(this.date.getMonth() + 1);
} else {
this.date.setMonth(this.date.getMonth() - 1);
}
}
console.log('active month', this.date);
console.log('indexes', previousSlideIndex, '->', currentSlideIndex, '->', nextSlideIndex);
this.data[currentSlideIndex].title = this.monthNames[this.date.getMonth()] + ' ' + this.date.getFullYear();
this.data[previousSlideIndex].title = this.monthNames[this.date.getMonth() - 1] + ' ' + this.date.getFullYear();
this.data[nextSlideIndex].title = this.monthNames[this.date.getMonth() + 1] + ' ' + this.date.getFullYear();
})
}
}
我怎样才能做到这一点?
谢谢!
最佳答案
如果您查看浏览器检查器,您会发现不起作用的是从最后一张幻灯片循环后的第一张幻灯片,或者从第一张幻灯片循环后的最后一张幻灯片(反向) ), 并且它们都有 swiper-slide-duplicate
类,也就是说,它们是重复的,而起作用的不是重复的。
有时,当您更改幻灯片时,您可以在一瞬间看到正确的值,因为副本已与原始幻灯片一起更改。
ionic
似乎试图复制幻灯片,但复制会在使用角度绑定(bind)和变化检测时产生意外错误,使其根本无法工作。
起初,(在我的例子中,不是 plunker 中的那个),我认为是变化检测没有在我的组件中触发,并尝试了各种东西,比如 ngZone.run()
、cd.markForChanges()
、cd.detectChanges()
等等...
在我看来,当前的“修复”是当您需要动态变化检测(项目可以变化)时不使用 loop
,而检测必须在幻灯片内部进行。
在我的例子中,我禁用了 loop
并使用了 autoPlay
,然后我只是在幻灯片发生变化时调用 slides.startAutoplay()
。
在你的情况下,它会在 slideChanged(slides: Slides) { ... slides.startAutoplay(); }
这不会解决您的问题,很难,因为在您的代码中,您希望在每张幻灯片中显示下个月,并使其看起来像有无限张幻灯片(在循环时始终更改下一张幻灯片)。此外,您似乎希望更改是手动的(由用户进行)。
我建议你寻找其他方法,因为我不知道什么时候可以解决。
打开的有几个问题:
https://github.com/ionic-team/ionic-v1/issues/129 (它在 v1 中,但问题是一样的。原始问题是 https://github.com/ionic-team/ionic/issues/6602,创建于 2016-05-21,差不多 2 年前)
https://github.com/ionic-team/ionic/issues/6515
https://github.com/ionic-team/ionic/issues/6843
https://github.com/ionic-team/ionic/issues/10890
https://github.com/ionic-team/ionic/issues/13582
(可能还有更多...)
也许在 Ionic4
中会得到解决,但我认为不会(至少现在不会),所以我建议尝试另一种方法(而不是 ion-slides
) 在你的情况下。
关于ionic-framework - 从最后到第一或从第一到最后时,Ionic 3 幻灯片循环无法正确刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46932325/
我制作了一个 jquery 幻灯片,代码如下: HTML previous Next CSS #slideshow { width: 700px; h
我正在用 Javascript 制作幻灯片,带有播放/暂停和下一个/上一个按钮。我已经设法使用播放/暂停按钮进行幻灯片放映,但现在我想向其中添加“下一个”和“上一个”按钮。有人可以帮我吗?我该怎么做?
我是 Java 脚本新手,我正在尝试为我的页面构建幻灯片。这是我的 html 代码: 和我的 Js 脚本: var numar_ima
我可以修改此现有代码以自动滚动列表项以显示内容吗? 抱歉,:ul li a {} 链接。 也许使用“间隔”方法? $(document).ready(function(){ $('ul.tab
我正在尝试熟悉 jQuery 工具 - Flowplayer 中的幻灯片 ( http://flowplayer.org/tools/tabs/slideshow.html )。有没有人提示我如何选择
这个问题在这里已经有了答案: Return to 1st image on slideshow (2 个答案) 关闭 3 年前。 有谁知道如何在此幻灯片中添加另一个按钮,使用户在幻灯片放映期间的任何
我知道这听起来很傻,我可以使用一些现成的解决方案,但我真的很想构建自己的简单图像幻灯片。我在 Silverlight/WPF 中进行应用程序开发已经有一段时间了,但无论出于何种原因,我都无法解决这个问
我正在尝试设置此幻灯片脚本,以便显示的第一张图片是随机的(每次我们访问该网站时,我都需要第一张图片是不同/随机的幻灯片),其余图片可以显示在正确的顺序,没关系。 我正在使用 Jon Raasch 的简
我们的 flexslider 上最后一张图片的一小部分在幻灯片加载后立即闪烁整个页面。第一个图像设置为可见,所有其他图像设置为隐藏。插件设置为在页面加载后运行。我认为可能是页面上的其他原因导致了此问题
我有一个自动幻灯片放映效果很好。但是,我希望能够改变某些幻灯片的速度这是代码: var slideIndex = 0; showSlides(); function showSlides() {
如有任何帮助,我们将不胜感激! 我正在尝试从以下位置实现脚本: www.switchonthecode.com/tutorials/jquery-creating-a-slideshow 但我希望它连
我用 javascript 创建了以下幻灯片。但是由于某种原因,在第一张图片滑过时,第一张图片刚好移开,而第二张图片进行了“滑动”。任何帮助,将不胜感激。我添加了注释以帮助提高代码的可读性。
我正在使用在以下网站在线找到的带缩略图的图像幻灯片。有谁知道我将如何更改此幻灯片,以便将缩略图列在幻灯片的右侧,而不是列在其下方。如果您转到下面的链接,然后单击查看演示,您可以看到我的幻灯片目前是如何
我希望在悬停链接时有过渡效果。我希望在链接后顺利显示文本。 这就是我目前所拥有的: p { border-radius: 1em; padding: 0.5em; backgr
我喜欢jQuery的幻灯片效果,当你move a cursor on some of products 我正在尝试使用类似的功能实现相同的效果,但有一个区别 - 当我在框上移动光标时,我想显示带有信息
我正在尝试创建自己的幻灯片。以下代码从一张图像淡入另一张图像。我想从 img1.jpg 循环到 img4.jpg,但我不确定如何在每次更改后暂停。 i++;
jquery 中的代码是什么,可以让幻灯片放映在最后一张照片上单击“下一步”后显示第一张照片。我知道我只需要写一次文档准备好,但我还没有这样做,但我会的。这是我的代码
如何添加指向这些图像的链接。我尝试过多种幻灯片放映方式,但发现当我添加链接时,它开始不显示所有其他图像。在我下面的代码中,我将链接注释掉了。如果我删除链接,图像显示正常。 我已经重复了两次图像只是为了
我似乎无法制作完全可用的 CSS 幻灯片,其中幻灯片的显示时间各不相同。我需要使用多个关键帧还是有其他方法可以做到这一点?如果是,将不胜感激 :^) 最佳答案 您可以使用单个关键帧设置和 CSS3 的
我用 HTML/CSS/JS 制作了这个小幻灯片。 大部分都在工作,但有一件事我想不通。 当自动滑动打开时,如何使每个图像上方的文本适合 img 本身? 现在它只在我手动点击时显示每个 img 的正确
我是一名优秀的程序员,十分优秀!