Skip to content

Commit d42ce05

Browse files
committed
fix: Safari 3D fix for webview
fixes #7167
1 parent b67edaa commit d42ce05

File tree

5 files changed

+17
-6
lines changed

5 files changed

+17
-6
lines changed

src/modules/effect-coverflow/effect-coverflow.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export default function EffectCoverflow({ swiper, extendParams, on }) {
5757
if (Math.abs(rotateX) < 0.001) rotateX = 0;
5858
if (Math.abs(scale) < 0.001) scale = 0;
5959

60-
if (swiper.browser && swiper.browser.isSafari) {
60+
if (swiper.browser && swiper.browser.need3dFix) {
6161
if ((Math.abs(rotateY) / 90) % 2 === 1) {
6262
rotateY += 0.001;
6363
}

src/modules/effect-creative/effect-creative.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export default function EffectCreative({ swiper, extendParams, on }) {
8989
// set rotates
9090
r.forEach((value, index) => {
9191
let val = data.rotate[index] * Math.abs(progress * multiplier);
92-
if (swiper.browser && swiper.browser.isSafari && (Math.abs(val) / 90) % 2 === 1) {
92+
if (swiper.browser && swiper.browser.need3dFix && (Math.abs(val) / 90) % 2 === 1) {
9393
val += 0.001;
9494
}
9595
r[index] = val;

src/modules/effect-cube/effect-cube.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,11 @@ export default function EffectCube({ swiper, extendParams, on }) {
124124
if (progress <= 1 && progress > -1) {
125125
wrapperRotate = slideIndex * 90 + progress * 90;
126126
if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
127-
if (swiper.browser && swiper.browser.isSafari && (Math.abs(wrapperRotate) / 90) % 2 === 1) {
127+
if (
128+
swiper.browser &&
129+
swiper.browser.need3dFix &&
130+
(Math.abs(wrapperRotate) / 90) % 2 === 1
131+
) {
128132
wrapperRotate += 0.001;
129133
}
130134
}

src/modules/effect-flip/effect-flip.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export default function EffectFlip({ swiper, extendParams, on }) {
6565
rotateY = -rotateY;
6666
}
6767

68-
if (swiper.browser && swiper.browser.isSafari) {
68+
if (swiper.browser && swiper.browser.need3dFix) {
6969
if ((Math.abs(rotateY) / 90) % 2 === 1) {
7070
rotateY += 0.001;
7171
}

src/shared/get-browser.mjs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { getWindow } from 'ssr-window';
2+
import { getDevice } from './get-device.mjs';
23

34
let browser;
45

56
function calcBrowser() {
67
const window = getWindow();
8+
const device = getDevice();
79
let needPerspectiveFix = false;
810
function isSafari() {
911
const ua = window.navigator.userAgent.toLowerCase();
@@ -20,10 +22,15 @@ function calcBrowser() {
2022
needPerspectiveFix = major < 16 || (major === 16 && minor < 2);
2123
}
2224
}
25+
const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);
26+
const isSafariBrowser = isSafari();
27+
const need3dFix = isSafariBrowser || (isWebView && device.ios);
28+
2329
return {
24-
isSafari: needPerspectiveFix || isSafari(),
30+
isSafari: needPerspectiveFix || isSafariBrowser,
2531
needPerspectiveFix,
26-
isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),
32+
need3dFix,
33+
isWebView,
2734
};
2835
}
2936

0 commit comments

Comments
 (0)