iOSのsafariでSwiperのeffect: fadeで画像が重なる

スライダーライブラリSwiperのフェードエフェクトで透過PNGなどで構成されたスライドを切り替える際、iPhoneやiPadなどiOSのsafariだと、fadeEffect: { crossFade: true }をオプションで指定しても画像が重なってしまう現象が起きてしまいます。

解決方法

fadeEffectオプションのtransformElにフェードさせたい要素を指定します。これを指定することにより、スライド自体がフェードするのではなく、その中に含まれる指定した要素がフェードするようになります。具体的にはimgタグやその囲んでいるブロックなどを指定します。

この3つの透過PNGを使ったSwiperのサンプルです。

transformElなし(iOSのsafariでみると、ループ2週目で画像が重なります)

fadeEffect: {
    crossFade: true
}

transformElあり(iOSのsafariでみても画像が重なりません)

fadeEffect: { 
    crossFade: true,
    transformEl: 'img',
}
この記事を書いた人

PHPが好物な個人開発プログラマ。フリーランスエンジニアとしてWebサービス作ったりしてます。15年の経験を生かしてMENTAでメンターもやってます。WordPressやPHPでお困りのことがあればご相談に乗りますのでDMください。

Follow on SNS
Javascript
SOHO MIND

Comments

タイトルとURLをコピーしました