Skip to content

Commit 18b49cc

Browse files
committed
feat(fade-effect): support cssMode
1 parent 82859a1 commit 18b49cc

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/modules/effect-fade/effect-fade.js

+11-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ export default function Fade({ swiper, extendParams, on }) {
22
extendParams({
33
fadeEffect: {
44
crossFade: false,
5+
transformEl: null,
56
},
67
});
78

89
const setTranslate = () => {
910
const { slides } = swiper;
11+
const params = swiper.params.fadeEffect;
1012
for (let i = 0; i < slides.length; i += 1) {
1113
const $slideEl = swiper.slides.eq(i);
1214
const offset = $slideEl[0].swiperSlideOffset;
@@ -20,7 +22,9 @@ export default function Fade({ swiper, extendParams, on }) {
2022
const slideOpacity = swiper.params.fadeEffect.crossFade
2123
? Math.max(1 - Math.abs($slideEl[0].progress), 0)
2224
: 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
23-
$slideEl
25+
26+
const $translateTarget = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;
27+
$translateTarget
2428
.css({
2529
opacity: slideOpacity,
2630
})
@@ -29,10 +33,13 @@ export default function Fade({ swiper, extendParams, on }) {
2933
};
3034
const setTransition = (duration) => {
3135
const { slides, $wrapperEl } = swiper;
32-
slides.transition(duration);
36+
const { transformEl } = swiper.params.fadeEffect;
37+
const $transitionElements = transformEl ? slides.find(transformEl) : slides;
38+
$transitionElements.transition(duration);
3339
if (swiper.params.virtualTranslate && duration !== 0) {
3440
let eventTriggered = false;
35-
slides.transitionEnd(() => {
41+
const $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;
42+
$transitionEndTarget.transitionEnd(() => {
3643
if (eventTriggered) return;
3744
if (!swiper || swiper.destroyed) return;
3845
eventTriggered = true;
@@ -53,7 +60,7 @@ export default function Fade({ swiper, extendParams, on }) {
5360
slidesPerGroup: 1,
5461
watchSlidesProgress: true,
5562
spaceBetween: 0,
56-
virtualTranslate: true,
63+
virtualTranslate: !swiper.params.cssMode,
5764
};
5865
Object.assign(swiper.params, overwriteParams);
5966
Object.assign(swiper.originalParams, overwriteParams);

src/types/modules/effect-fade.d.ts

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { CSSSelector } from '../shared';
2+
13
export interface FadeEffectMethods {}
24

35
export interface FadeEffectEvents {}
@@ -9,4 +11,10 @@ export interface FadeEffectOptions {
911
* @default false
1012
*/
1113
crossFade?: boolean;
14+
/**
15+
* CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode
16+
*
17+
* @default null
18+
*/
19+
transformEl?: CSSSelector;
1220
}

0 commit comments

Comments
 (0)