123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744 |
- <template>
- <view :id="'swiper'+_uid"
- :class="['swiper',contentClass,containerClasses,options.direction === 'vertical'?'swiper-vertical':'']"
- :style="[customStyle]">
- <!-- #ifndef MP-WEIXIN || MP-QQ -->
- <view :class="['swiper-wrapper']" :style="[wrapperStyle]" @click="onClickWrapper" @touchstart="onTouchStart"
- @touchmove="onTouchMove" @touchend="onTouchEnd" @touchcancel="onTouchEnd">
- <!-- #endif -->
- <!-- #ifdef MP-WEIXIN || MP-QQ -->
- <view :class="['swiper-wrapper']" :style="[wrapperStyle]" @click="onClickWrapper"
- @touchstart="zSwiperWxs.onTouchStartWxs" @touchmove="zSwiperWxs.onTouchMoveWxs"
- @touchend="zSwiperWxs.onTouchEndWxs" @touchcancel="zSwiperWxs.onTouchEndWxs"
- :swiperTransform="wxsTransform" :change:swiperTransform="zSwiperWxs.wxsTransformObserver">
- <!-- #endif -->
- <slot></slot>
- <!-- 在loop模式下,为group填充空白slide -->
- <template v-if="loopBlankShow">
- <z-swiper-item v-for="(item,index) in loopBlankNumber" :key="index">
- </z-swiper-item>
- </template>
- <template v-if="cubeShadowShowWrapper">
- <view class="swiper-cube-shadow" :style="[cubeShadowStyle]"></view>
- </template>
- </view>
- <template v-if="cubeShadowShowRoot">
- <view class="swiper-cube-shadow" :style="[cubeShadowStyle]"></view>
- </template>
- <slot name="indicator"></slot>
- <template v-if="showIndicators">
- <view :class="['swiper-pagination',paginationClass]" :style="[paginationStyle]">
- <template v-if="paginationType == 'bullets'">
- <view v-for="(item,index) in paginationContent" :key="index"
- :class="[item.classContent.join(' ')]" :style="[item.styleContent]"
- @click="paginationItemClick(index)">
- </view>
- </template>
- <template v-if="paginationType == 'fraction'">
- <text :class="paginationContent.currentClass">{{paginationContent.text}}</text>/<text
- :class="paginationContent.totalClass">{{paginationContent.total}}</text>
- </template>
- <template v-if="paginationType == 'progressbar'">
- <text :class="paginationContent.progressbarFillClass"
- :style="[paginationContent.styleContent]"></text>
- </template>
- </view>
- </template>
- <template v-if="(showPrevButton||showPrevButtonSlot)">
- <view :class="['swiper-button-prev',prevClass]" @click="prevClick">
- <view v-if="!showPrevButtonSlot" class="zebra-icon zebra-icon-circle_chevron_left"></view>
- <slot v-else name="pre-button"></slot>
- </view>
- </template>
- <template v-if="(showNextButton||showNextButtonSlot)">
- <view :class="['swiper-button-next',nextClass]" @click="nextClick">
- <view v-if="!showNextButtonSlot" class="zebra-icon zebra-icon-circle_chevron_right"></view>
- <slot v-else name="next-button"></slot>
- </view>
- </template>
- <template v-if="scrollbarShow">
- <view :class="['swiper-scrollbar',scrollbarClass]" :style="[scrollbarStyle]"
- @click.stop="onClickScrollbar" @touchstart.stop="onTouchStartScrollbar"
- @touchmove.stop.prevent="onTouchMoveScrollbar" @touchend.stop="onTouchEndScrollbar">
- <view class="swiper-scrollbar-drag" :style="[scrollbarItemStyle]">
- </view>
- </view>
- </template>
- </view>
- </template>
- <!-- #ifdef MP-WEIXIN || MP-QQ -->
- <script src="../../wxs/z-swiper-wxs.wxs" module="zSwiperWxs" lang="wxs"></script>
- <!-- #endif -->
- <script>
- import {
- getAllRect,
- getRect
- } from '../../libs/utils/utils.js';
- // vue2
- import {
- getParams
- } from '../../libs/vue2/get-params.js';
- import {
- initSwiper,
- mountSwiper
- } from '../../libs/vue2/init-swiper.js';
- import {
- needsScrollbar,
- needsNavigation,
- needsPagination,
- uniqueClasses,
- extend,
- } from '../../libs/vue2/utils.js';
- import {
- renderLoop,
- calcLoopedSlides
- } from '../../libs/vue2/loop.js';
- import {
- getChangedParams
- } from '../../libs/vue2/get-changed-params.js';
- import {
- updateSwiper
- } from '../../libs/vue2/update-swiper.js';
- import {
- renderVirtual,
- updateOnVirtualData
- } from '../../libs/vue2/virtual.js';
- //mixin
- import {
- ParentMixin
- } from '../../libs/mixins/relation.js';
- export default {
- name: "z-swipe",
- // #ifdef MP-WEIXIN
- options: {
- virtualHost: true
- },
- // #endif
- mixins: [
- ParentMixin('zSwipe')
- ],
- // #ifdef VUE3
- emits: ['update:modelValue', 'touch-start', 'touch-move', 'touch-end', 'transitionend', 'slideClick',
- '_beforeBreakpoint',
- '_containerClasses',
- '_slideClass',
- '_slideClasses', '_swiper',
- 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause',
- 'autoplayResume', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart',
- 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick',
- 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress',
- 'lazyImageLoad', 'lazyImageReady', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow',
- 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow',
- 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll',
- 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate',
- 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd',
- 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart',
- 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove',
- 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap',
- 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart',
- 'unlock', 'update', 'zoomChange', 'beforeMount'
- ],
- // #endif
- props: {
- customStyle: {
- type: Object,
- default: () => {
- return {};
- }
- },
- options: {
- type: Object,
- default: () => {
- return {}
- }
- },
- // #ifdef VUE2
- value: {
- type: Array,
- default: () => {
- return []
- }
- },
- // #endif
- // #ifdef VUE3
- modelValue: {
- type: Array,
- default: () => {
- return []
- }
- }
- // #endif
- },
- data() {
- return {
- wxsTransform: "",
- wrapperStyle: {},
- contentClass: '',
- nextElClass: [],
- prevElClass: [],
- paginationElClass: [],
- paginationItemElClass: [],
- loopBlankShow: false,
- loopBlankNumber: 0,
- cubeShadowShowWrapper: false,
- cubeShadowShowRoot: false,
- cubeShadowStyle: {},
- eventsListeners: {},
- showPrevButton: false,
- showPrevButtonSlot: false,
- showNextButton: false,
- showNextButtonSlot: false,
- showIndicators: false,
- paginationContent: [],
- paginationType: '',
- paginationStyle: {},
- scrollbarElClass: [],
- scrollbarStyle: {},
- scrollbarItemStyle: {},
- rectInfo: null,
- // vue2
- containerClasses: 'swiper',
- virtualData: null,
- firstLoad: true,
- originalDataList: [],
- loopUpdateData: false
- };
- },
- computed: {
- // #ifdef VUE3
- value() {
- return this.modelValue
- },
- // #endif
- // #ifdef VUE3
- _uid() {
- return this._.uid
- },
- // #endif
- nextClass() {
- return this.nextElClass.join(" ");
- },
- prevClass() {
- return this.prevElClass.join(" ");
- },
- paginationClass() {
- return this.paginationElClass.join(" ");
- },
- paginationItemClass() {
- return this.paginationItemElClass.join(" ");
- },
- scrollbarClass() {
- return this.scrollbarElClass.join(" ");
- },
- scrollbarShow() {
- return needsScrollbar(this.options)
- }
- },
- created() {
- const {
- params: swiperParams,
- passedParams
- } = getParams(this.options);
- this.swiperElRef = 'swiper';
- this.swiperParams = swiperParams;
- this.oldPassedParamsRef = passedParams;
- let slidesRef = this.slidesRef;
- swiperParams.onAny = (event, ...args) => {
- // #ifdef MP
- // 字节小程序此处报错,因此无法使用v-on监听事件
- // #ifndef MP-TOUTIAO
- this.$emit(event, {}, ...args.filter((item, index) => {
- return index > 0
- }));
- // #endif
- // #endif
- // #ifndef MP
- this.$emit(event, ...args);
- // #endif
- };
- Object.assign(swiperParams.on, {
- _containerClasses(swiper, classes) {
- this.containerClasses = classes;
- },
- });
- this.$watch(() => {
- return {
- value: this.value,
- options: this.options
- }
- }, (val) => {
- // virtual模式处理
- if (this.swiperParams && this.swiperParams.virtual) {
- if (!this.virtualData && val.options.virtual.slides.length) {
- this.swiperParams.virtual.slides = val.options.virtual.slides;
- // this.swiperParams.virtual.slides = val.value;
- const extendWith = {
- cache: false,
- slides: val.options.virtual.slides,
- // slides: val.value,
- renderExternal: data => {
- console.log("最终数据", data)
- this.virtualData = data;
- this.$emit("input", data.slides);
- // updateOnVirtualData(this.swiper);
- },
- renderExternalUpdate: false
- };
- extend(this.swiperParams.virtual, extendWith);
- // this.$emit("input", [val.options.virtual.slides[0]]);
- // this.virtualData = [val.options.virtual.slides[0]];
- this.loadSwiper();
- // console.log(this.swiper)
- }
- // extend(swiperRef.originalParams.virtual, extendWith);
- }
- // loop模式处理
- if (this.swiperParams && this.swiperParams.loop) {
- if (this.originalDataList.length && (this.originalDataList.toString() == val.value
- .toString())) {
- this.loopUpdateData = true;
- // 百度小程序watch晚于子组件加载
- // #ifdef MP-BAIDU
- if (this.firstLoad) {
- this.loadSwiper();
- }
- // #endif
- } else {
- this.loopUpdateData = false;
- let slides = renderLoop(this, this.swiperParams, this.value);
- if (this.swiperParams.loop && !this.loopUpdateData && slides.data.toString() !=
- val.value.toString()) {
- this.loopUpdateData = true;
- // #ifdef VUE2
- this.$emit("input", slides.data)
- // #endif
- // #ifdef VUE3
- this.$emit("update:modelValue", slides.data)
- // #endif
- return
- }
- }
- }
- if (this.swiper && !this.firstLoad) {
- if (this.virtualData && val.options.virtual.type == "cut") {
- const style = this.swiper.isHorizontal() ? {
- [this.swiper.rtlTranslate ? 'right' :
- 'left'
- ]: `${this.virtualData.offset}px`
- } : {
- top: `${this.virtualData.offset}px`
- };
- this.children
- // .filter((slide, index) => index >= this.virtualData.from && index <= this
- // .virtualData
- // .to)
- .map(slide => {
- slide.css(style)
- // if (!slide.props) slide.props = {};
- // if (!slide.props.style) slide.props.style = {};
- // slide.props.swiperRef = swiperRef;
- // slide.props.style = style;
- // return h(slide.type, {
- // ...slide.props
- // }, slide.children);
- });
- }
- this.updateSwiper(val.value, val.options, this.children);
- }
- }, {
- deep: true,
- immediate: true
- })
- this.$watch(() => {
- return this.$data
- }, (val) => {
- if (this.swiper && this.swiper.native) {
- Object.assign(this.swiper.native, {
- val
- });
- }
- }, {
- deep: true
- })
- this.$watch(() => {
- return this.virtualData
- }, (val) => {
- if (this.swiper && this.virtualData) {
- updateOnVirtualData(this.swiper);
- }
- }, {
- deep: true
- })
- uni.$on("childrenReady" + this._uid, async (children) => {
- children.dataSwiperSlideIndex = children.index;
- if (this.children.length == this.value.length) {
- Promise.all(this.children.map((item) => {
- return item.getSize();
- })).then((res) => {
- if (this.swiperParams && this.swiperParams.loop) {
- if (this.originalDataList.length && (this.originalDataList
- .toString() == this.value
- .toString())) {
- if (this.firstLoad) {
- this.loadSwiper();
- }
- } else {
- return
- }
- } else {
- if (this.firstLoad) {
- this.loadSwiper();
- }
- }
- this.updateSwiper(this.value, this.options, this.children);
- })
- }
- })
- },
- // #ifdef VUE2
- beforeDestroy() {
- if (this.swiper && !this.swiper.destroyed) {
- this.swiper.destroy(true, false);
- }
- },
- // #endif
- // #ifdef VUE3
- beforeUnmount() {
- if (this.swiper && !this.swiper.destroyed) {
- this.swiper.destroy(true, false);
- }
- },
- // #endif
- methods: {
- loadSwiper() {
- let swiperParams = this.swiperParams;
- this.slidesRef = this.children;
- this.oldSlidesRef = this.slidesRef;
- let swiperRef = initSwiper(swiperParams, {
- ...this.$data,
- ...this.$props,
- swiperElId: 'swiper' + this._uid,
- emit: this.emit.bind(this),
- updateData: this.updateData.bind(this),
- getRect: this.getRect.bind(this),
- getRectScrollbar: this.getRectScrollbar.bind(this),
- willChange: this.willChange.bind(this),
- transform: this.transform.bind(this),
- transition: this.transition.bind(this),
- scrollbarTransform: this.scrollbarTransform.bind(this),
- scrollbarTransition: this.scrollbarTransition.bind(this),
- scrollbarItemTransform: this.scrollbarItemTransform.bind(this),
- scrollbarItemTransition: this.scrollbarItemTransition.bind(this),
- addClass: this.addClass.bind(this),
- removeClass: this.removeClass.bind(this),
- addPaginationClass: this.addPaginationClass.bind(this),
- removePaginationClass: this.removePaginationClass.bind(this),
- addScrollbarClass: this.addScrollbarClass.bind(this),
- removeScrollbarClass: this.removeScrollbarClass.bind(this),
- setCss: this.setCss.bind(this),
- css: this.setCss.bind(this),
- paginationCss: this.setPaginationCss.bind(this),
- scrollbarCss: this.scrollbarCss.bind(this),
- scrollbarItemCss: this.scrollbarItemCss.bind(this),
- addNextElClass: this.addNextElClass.bind(this),
- addPrevElClass: this.addPrevElClass.bind(this),
- removeNextElClass: this.removeNextElClass.bind(this),
- removePrevElClass: this.removePrevElClass.bind(this),
- cubeShadowCss: this.cubeShadowCss.bind(this),
- cubeShadowTransform: this.cubeShadowTransform.bind(this),
- cubeShadowTransition: this.cubeShadowTransition.bind(this),
- });
- this.swiper = swiperRef;
- swiperRef.loopCreate = () => {};
- swiperRef.loopDestroy = () => {};
- if (swiperParams.loop) {
- swiperRef.loopedSlides = calcLoopedSlides(this.slidesRef, swiperParams);
- }
- if (!this.swiper) return;
- mountSwiper({
- el: this.swiperElRef,
- nextEl: this.nextElRef,
- prevEl: this.prevElRef,
- paginationEl: this.paginationElRef,
- scrollbarEl: this.scrollbarElRef,
- swiper: this.swiper,
- },
- this.swiperParams,
- );
- this.$emit('swiper');
- this.firstLoad = false;
- },
- updateSwiper(value, options, children) {
- this.swiper.slides = children;
- this.slidesRef = children;
- let initializedRef = this.initializedRef;
- let swiperRef = this.swiper;
- let slidesRef = this.slidesRef;
- let oldPassedParamsRef = this.oldPassedParamsRef;
- let oldSlidesRef = this.oldSlidesRef;
- let breakpointChanged = this.breakpointChanged;
- let nextElRef = this.nextElRef;
- let prevElRef = this.prevElRef;
- let paginationElRef = this.paginationElRef;
- let scrollbarElRef = this.scrollbarElRef;
- // set initialized flag
- if (!initializedRef && swiperRef) {
- swiperRef.emitSlidesClasses();
- initializedRef = true;
- }
- // watch for params change
- const {
- passedParams: newPassedParams
- } = getParams(options);
- const changedParams = getChangedParams(
- newPassedParams,
- oldPassedParamsRef,
- slidesRef,
- oldSlidesRef,
- );
- this.oldPassedParamsRef = newPassedParams;
- this.oldSlidesRef = slidesRef;
- if (
- (changedParams.length || breakpointChanged) &&
- swiperRef &&
- !swiperRef.destroyed
- ) {
- updateSwiper({
- swiper: swiperRef,
- slides: slidesRef,
- passedParams: newPassedParams,
- changedParams,
- nextEl: nextElRef,
- prevEl: prevElRef,
- scrollbarEl: scrollbarElRef,
- paginationEl: paginationElRef,
- });
- }
- breakpointChanged = false;
- },
- emit(event, data) {
- this.$emit(event, ...data)
- },
- async getRect() {
- let rectInfo = await getRect(this, '.swiper');
- this.rectInfo = rectInfo;
- return rectInfo;
- },
- async getRectScrollbar() {
- let rectInfo = await getRect(this, '.swiper-scrollbar');
- return rectInfo;
- },
- updateData(value) {
- Object.keys(value).forEach((item) => {
- this.$set(this, item, value[item])
- })
- },
- willChange(value) {
- this.$set(this.wrapperStyle, 'will-change', value)
- },
- transform(value) {
- // #ifndef MP-WEIXIN || MP-QQ
- this.$set(this.wrapperStyle, 'transform', value)
- // #endif
- // #ifdef MP-WEIXIN || MP-QQ
- this.wxsTransform = value;
- // #endif
- },
- transition(value) {
- // #ifdef MP-BAIDU
- this.$set(this.wrapperStyle, 'transitionDuration', `${value}ms`)
- // #endif
- // #ifndef MP-BAIDU
- this.$set(this.wrapperStyle, 'transition-duration', `${value}ms`)
- // #endif
- },
- setCss(value) {
- Object.keys(value).forEach((item) => {
- this.$set(this.wrapperStyle, item, value[item])
- })
- },
- scrollbarTransform(value) {
- this.$set(this.scrollbarStyle, 'transform', value)
- },
- scrollbarTransition(value) {
- this.$set(this.scrollbarStyle, 'transitionDuration', `${value}ms`)
- },
- scrollbarItemTransform(value) {
- this.$set(this.scrollbarItemStyle, 'transform', value)
- },
- scrollbarItemTransition(value) {
- this.$set(this.scrollbarItemStyle, 'transitionDuration', `${value}ms`)
- },
- addClass(value) {
- // #ifdef MP-ALIPAY || MP-TOUTIAO
- this.contentClass = Array.from(new Set([...this.contentClass.split(" "), ...value.split(" ")])).join(" ");
- // #endif
- // #ifndef MP-ALIPAY || MP-TOUTIAO
- this.contentClass = Array.from(new Set([...this.contentClass, ...value.split(" ")]));
- // #endif
- },
- removeClass(value) {
- // #ifdef MP-ALIPAY || MP-TOUTIAO
- this.contentClass = this.contentClass.split(" ").filter(item => !value.split(" ").includes(item)).join(
- " ");
- // #endif
- // #ifndef MP-ALIPAY || MP-TOUTIAO
- this.contentClass = this.contentClass.filter(item => !value.split(" ").includes(item));
- // #endif
- },
- addPaginationClass(value) {
- this.paginationElClass = Array.from(new Set([...this.paginationElClass, ...value.split(" ")]));
- },
- removePaginationClass(value) {
- this.paginationElClass = this.paginationElClass.filter(item => !value.split(" ").includes(item));
- },
- addScrollbarClass(value) {
- this.scrollbarElClass = Array.from(new Set([...this.scrollbarElClass, ...value.split(" ")]));
- },
- removeScrollbarClass(value) {
- this.scrollbarElClass = this.scrollbarElClass.filter(item => !value.split(" ").includes(item));
- },
- setPaginationCss(value) {
- Object.keys(value).forEach((item) => {
- this.$set(this.paginationStyle, item, value[item])
- })
- },
- scrollbarCss(value) {
- Object.keys(value).forEach((item) => {
- this.$set(this.scrollbarStyle, item, value[item])
- })
- },
- scrollbarItemCss(value) {
- Object.keys(value).forEach((item) => {
- this.$set(this.scrollbarItemStyle, item, value[item])
- })
- },
- addNextElClass(value) {
- this.nextElClass = Array.from(new Set([...this.nextElClass, ...value.split(" ")]));
- },
- addPrevElClass(value) {
- this.prevElClass = Array.from(new Set([...this.prevElClass, ...value.split(" ")]));
- },
- removeNextElClass(value) {
- this.nextElClass = this.nextElClass.filter(item => !value.split(" ").includes(item));
- },
- removePrevElClass(value) {
- this.prevElClass = this.prevElClass.filter(item => !value.split(" ").includes(item));
- },
- setSwiperOn(event, callback) {
- if (!this.eventsListeners[event]) this.eventsListeners[event] = {};
- this.eventsListeners[event] = callback;
- },
- paginationItemClick(index) {
- this.swiper.emit("paginationItemClick", index)
- },
- prevClick() {
- this.swiper.emit("prevClick");
- },
- nextClick() {
- this.swiper.emit("nextClick");
- },
- onTouchStart(event) {
- this.swiper.onTouchStart(event);
- },
- onTouchStartSwiperWxs(event) {
- this.swiper.onTouchStart(event);
- },
- onTouchMove(event) {
- this.swiper.onTouchMove(event);
- },
- onTouchMoveSwiperWxs(event) {
- this.swiper.onTouchMove(event);
- },
- onTouchEnd(event) {
- this.swiper.onTouchEnd(event);
- },
- onTouchEndSwiperWxs(event) {
- this.swiper.onTouchEnd(event);
- },
- onClickWrapper(event) {
- this.$emit("click", event);
- },
- onClickScrollbar(event) {
- this.$emit("scrollbarClick", event);
- },
- onTouchStartScrollbar(event) {
- this.swiper.emit('touchStartScrollbar', event);
- },
- onTouchMoveScrollbar(event) {
- this.swiper.emit('touchMoveScrollbar', event);
- },
- onTouchEndScrollbar(event) {
- this.swiper.emit('touchEndScrollbar', event);
- },
- cubeShadowCss(value) {
- Object.keys(value).forEach((item) => {
- this.$set(this.cubeShadowStyle, item, value[item])
- })
- },
- cubeShadowTransform(value) {
- this.$set(this.cubeShadowStyle, 'transform', value)
- },
- cubeShadowTransition(value) {
- this.$set(this.cubeShadowStyle, 'transitionDuration', `${value}ms`)
- },
- }
- }
- </script>
- <style scoped lang="scss">
- @import '../../libs/core.scss';
- @import "../../static/css/iconfont.css";
- .swiper {
- &__prev--button {
- position: absolute;
- left: 30rpx;
- top: 50%;
- display: flex;
- color: #1989fa;
- font-size: 44rpx;
- z-index: 10;
- }
- &__prev--button--disable {
- position: absolute;
- left: 30rpx;
- top: 50%;
- display: flex;
- color: #1989fa;
- font-size: 44rpx;
- opacity: .35;
- z-index: 10;
- }
- &__next--button {
- position: absolute;
- right: 30rpx;
- top: 50%;
- display: flex;
- color: #1989fa;
- font-size: 44rpx;
- z-index: 10;
- }
- &__next--button--disable {
- position: absolute;
- right: 30rpx;
- top: 50%;
- display: flex;
- color: #1989fa;
- font-size: 44rpx;
- opacity: .35;
- z-index: 10;
- }
- }
- </style>
|