@@ -15,6 +15,8 @@ export default function Virtual({ swiper, extendParams, on }) {
15
15
} ,
16
16
} ) ;
17
17
18
+ let cssModeTimeout ;
19
+
18
20
swiper . virtual = {
19
21
cache : { } ,
20
22
from : undefined ,
@@ -49,7 +51,10 @@ export default function Virtual({ swiper, extendParams, on }) {
49
51
slidesGrid : previousSlidesGrid ,
50
52
offset : previousOffset ,
51
53
} = swiper . virtual ;
52
- swiper . updateActiveIndex ( ) ;
54
+ if ( ! swiper . params . cssMode ) {
55
+ swiper . updateActiveIndex ( ) ;
56
+ }
57
+
53
58
const activeIndex = swiper . activeIndex || 0 ;
54
59
55
60
let offsetProp ;
@@ -176,7 +181,10 @@ export default function Virtual({ swiper, extendParams, on }) {
176
181
const $cachedEl = cache [ cachedIndex ] ;
177
182
const cachedElIndex = $cachedEl . attr ( 'data-swiper-slide-index' ) ;
178
183
if ( cachedElIndex ) {
179
- $cachedEl . attr ( 'data-swiper-slide-index' , parseInt ( cachedElIndex , 10 ) + 1 ) ;
184
+ $cachedEl . attr (
185
+ 'data-swiper-slide-index' ,
186
+ parseInt ( cachedElIndex , 10 ) + numberOfNewSlides ,
187
+ ) ;
180
188
}
181
189
newCache [ parseInt ( cachedIndex , 10 ) + numberOfNewSlides ] = $cachedEl ;
182
190
} ) ;
@@ -231,7 +239,14 @@ export default function Virtual({ swiper, extendParams, on }) {
231
239
} ) ;
232
240
on ( 'setTranslate' , ( ) => {
233
241
if ( ! swiper . params . virtual . enabled ) return ;
234
- update ( ) ;
242
+ if ( swiper . params . cssMode && ! swiper . _immediateVirtual ) {
243
+ clearTimeout ( cssModeTimeout ) ;
244
+ cssModeTimeout = setTimeout ( ( ) => {
245
+ update ( ) ;
246
+ } , 100 ) ;
247
+ } else {
248
+ update ( ) ;
249
+ }
235
250
} ) ;
236
251
on ( 'init update resize' , ( ) => {
237
252
if ( ! swiper . params . virtual . enabled ) return ;
0 commit comments