Aly*_*lex 5 javascript css vue.js vuejs2 swiper.js
这可能是一个简单的问题,但我似乎找不到解决方案。
我正在使用 vue-awesome-swiper( https://github.surmon.me/vue-awesome-swiper/ )。我想要这样的东西:
示例可以在这里找到: https: //github.surmon.me/vue-awesome-swiper/。
我添加margin-left:10%;到了swiper-wrapper适合我的类作为初始边距,但这涵盖了我的最后一张幻灯片,因为内容移动了 10%。我希望在到达最后一张幻灯片时删除 margin-left,反之亦然。
我尝试查看事件(https://swiperjs.com/api/#events):reachEnd和reachBeginning。这两个,我尝试像这样申请:
<template>
<div>
<swiper
class="swiper"
:options="swiperOption"
:reach-beginning="handleTransitionStart"
:reach-end="handleTransitionEnd"
:style="transitionStarted ? { margin: '0 0 0 10%' } : { margin: '0 10% 0 0' }"
>
.....
</swiper>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator';
@Component
export default class InformationSection extends Vue {
@Prop() 'reachEnd'!: any;
@Prop() 'reachBeginning'!: any;
swiperOption = {
slidesPerView: 4,
spaceBetween: 30,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
};
transitionStarted: boolean = true;
handleTransitionStart(): any {
// eslint-disable-next-line no-console
console.log('Started');
this.transitionStarted = true;
}
handleTransitionEnd(): any {
// eslint-disable-next-line no-console
console.log('Ended');
this.transitionStarted = false;
}
}
</script>
<style scoped>
.swiper-slide {
width: 60%;
}
.swiper-slide:nth-child(2n) {
width: 40%;
}
.swiper-slide:nth-child(3n) {
width: 20%;
}
</style>
Run Code Online (Sandbox Code Playgroud)
以上并没有在末尾添加右侧边距。我怎样才能实现这个目标?
幻灯片偏移后
幻灯片偏移之前
参考:https: //swiperjs.com/swiper-api#param-slidesOffsetAfter
if($('.swiper').length !== 0){
const swiper = new Swiper('.swiper', {
loop: false,
slidesOffsetBefore: 5, // This is 5px slide offset
slidesPerView: 1.3, // second slide partial show (In this question it was probably 3.5)
centeredSlides: true // centering slides
spaceBetween: 10,
}
});}
Run Code Online (Sandbox Code Playgroud)
我记得需要类似的东西,最终构建了我自己的滚动器组件。但这并不适合所有人。
有一种很奇怪的方法可以做到这一点,我希望你能找到更干净的方法。
第一张幻灯片有边距
<swiper-slide style="margin-left:10%;">I'm Slide 1</swiper-slide>
最后一张幻灯片是不可见的
<swiper-slide style="opacity:0;"></swiper-slide>
Vue.use(VueAwesomeSwiper)
new Vue({
el: '#vueapp',
components: {
LocalSwiper: VueAwesomeSwiper.swiper,
LocalSlide: VueAwesomeSwiper.swiperSlide,
},
data: {
swiperOptionA: {
slidesPerView: 4,
spaceBetween: 30,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
}
},
},
computed: {
swiperA() {
return this.$refs.awesomeSwiperA.swiper
},
},
})Run Code Online (Sandbox Code Playgroud)
.swiper-container {
height: 300px;
width: 100%;
}
.swiper-slide {
text-align: center;
font-size: 38px;
font-weight: 700;
background-color: #eee;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}Run Code Online (Sandbox Code Playgroud)
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.0.7/css/swiper.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.0.7/js/swiper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-awesome-swiper@3.0.4/dist/vue-awesome-swiper.js"></script>
<div id="vueapp">
<swiper ref="awesomeSwiperA" :options="swiperOptionA">
<!-- slides -->
<swiper-slide style="margin-left:10%;">I'm Slide 1</swiper-slide>
<swiper-slide>I'm Slide 2</swiper-slide>
<swiper-slide>I'm Slide 3</swiper-slide>
<swiper-slide>I'm Slide 4</swiper-slide>
<swiper-slide>I'm Slide 5</swiper-slide>
<swiper-slide>I'm Slide 6</swiper-slide>
<swiper-slide>I'm Slide 7</swiper-slide>
<swiper-slide style="opacity:0;"></swiper-slide>
<!-- Optional controls -->
<div class="swiper-pagination" slot="pagination"></div>
<div class="swiper-button-prev" slot="button-prev"></div>
<div class="swiper-button-next" slot="button-next"></div>
</swiper>
<br>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16859 次 |
| 最近记录: |