Skip to content

Commit

Permalink
feat(core): support for Virtual Slides in CSS Mode
Browse files Browse the repository at this point in the history
  • Loading branch information
nolimits4web committed Aug 6, 2021
1 parent f40a370 commit 0e26d52
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 2 deletions.
9 changes: 9 additions & 0 deletions src/core/slide/slideTo.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,16 @@ export default function slideTo(
t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
}
if (speed === 0) {
const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
if (isVirtual) {
swiper.wrapperEl.style.scrollSnapType = 'none';
}
wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
if (isVirtual) {
requestAnimationFrame(() => {
swiper.wrapperEl.style.scrollSnapType = '';
});
}
} else {
if (!swiper.support.smoothScroll) {
animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });
Expand Down
9 changes: 7 additions & 2 deletions src/modules/virtual/virtual.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ export default function Virtual({ swiper, extendParams, on }) {

swiper.virtual = {
cache: {},
from: null,
to: null,
from: undefined,
to: undefined,
slides: [],
offset: 0,
slidesGrid: [],
Expand Down Expand Up @@ -232,6 +232,11 @@ export default function Virtual({ swiper, extendParams, on }) {
if (!swiper.params.virtual.enabled) return;
update();
});
on('init update resize', () => {
if (swiper.params.cssMode) {
swiper.wrapperEl.style.setProperty('--swiper-virtual-size', `${swiper.virtualSize}px`);
}
});

Object.assign(swiper.virtual, {
appendSlide,
Expand Down
17 changes: 17 additions & 0 deletions src/modules/virtual/virtual.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
.swiper-container-virtual.swiper-container-css-mode {
.swiper-wrapper::after {
content: '';
position: absolute;
left: 0;
top: 0;
pointer-events: none;
}
&.swiper-container-horizontal .swiper-wrapper::after {
height: 1px;
width: var(--swiper-virtual-size);
}
&.swiper-container-vertical .swiper-wrapper::after {
width: 1px;
height: var(--swiper-virtual-size);
}
}
17 changes: 17 additions & 0 deletions src/modules/virtual/virtual.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
.swiper-container-virtual.swiper-container-css-mode {
.swiper-wrapper::after {
content: '';
position: absolute;
left: 0;
top: 0;
pointer-events: none;
}
&.swiper-container-horizontal .swiper-wrapper::after {
height: 1px;
width: var(--swiper-virtual-size);
}
&.swiper-container-vertical .swiper-wrapper::after {
width: 1px;
height: var(--swiper-virtual-size);
}
}

0 comments on commit 0e26d52

Please sign in to comment.