首先安装swiper跟vue-awesome-swiper 要注意安装版本
npm install vue-awesome-swiper@4.1.1 --save
npm install swiper@4.5.1 --save
实际效果展示
胡子先生 2021-03-03 17.20.39.gif
具体的代码我封装成一个组件了,直接上代码
<template>
<div class="DetailsContent">
<div class="poster_dv">
<swiper ref="mySwiper" :options="swiperOption" v-if="posterObj.length > 0">
<swiper-slide class="poster_item" v-for="(item, index) in posterObj" :key="index">
<img :src="item.imgUrl" alt="" />
</swiper-slide>
</swiper>
<!--以下看需要添加-->
<div class="swiper-pagination"></div>
<!-- 下一页 -->
<div class="swiper-button-next"></div>
<!-- 上一页 -->
<div class="swiper-button-prev"></div>
</div>
</div>
</template>
<script type="text/ecmascript-6">
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
import "swiper/dist/css/swiper.css";
export default {
components: {
Swiper,
SwiperSlide,
},
data() {
let that = this;
return {
posterObj: [
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
{imgUrl:"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618477927&t=30da8b4a371f6d0aafb7e3f61a926f62"},
],
swiperOption: {
effect: "coverflow",
coverflowEffect: {
rotate:80,
stretch: 10,
depth: 60,
modifier: 2,
slideShadows : true
},
loop: true, // 无限循环
observer: false, //修改swiper自己或子元素时,自动初始化swiper
observeParents: false, //修改swiper的父元素时,自动初始化swiper
slidesPerView: "auto", // 设置可视区一共显示几张图片,设置auto,设置auto为自适应;
centeredSlides: true, // 设置为true时,带有active-slide类名的图片会居中
loopAdditionalSlides: 0, //loop模式下会在slides前后复制若干个slide,,前后复制的个数不会大于原总个数。默认为0,前后各复制1个。0,1,2 --> 2,0,1,2,0
// 页码
pagination: {
el: '.swiper-pagination',
type: 'bullets',
dynamicMainBullets: 2, //动态分页器的主指示点的数ss量
clickable: true, //此参数设置为true时,点击分页器的指示点分页器会控制Swiper切换。
},
// 点击上一页 下一页
navigation: {
nextEl: '.swiper-button-next', //前进按钮的css选择器或HTML元素。
prevEl: '.swiper-button-prev', //后退按钮的css选择器或HTML元素。
hideOnClick: true, //点击slide时显示/隐藏按钮
disabledClass: 'my-button-disabled', //前进后退按钮不可用时的类名。
hiddenClass: 'my-button-hidden', //按钮隐藏时的Class
},
on: {
slideChangeTransitionEnd: function() {
console.log('当前index+',this.realIndex)
that.realIndex = this.realIndex
}
},
},
realIndex: 0,
};
},
methods: {
// 跳转到指定页面
swiperSlideTo(index){
this.$refs.mySwiper.$swiper.slideTo(index, 0, true);
}
},
};
</script>
<style lang="less" scoped>
.DetailsContent {
width: 100%;
height: 100%;
}
/deep/ .swiper-container-3d {
perspective: 600px;
height: 269px;
padding-top: 18px;
}
.swiper-slide-prev {
transform: translate3d(78px, 0px, 138px) rotateX(0deg) rotateY(65deg) scale(1) !important;
}
.swiper-slide-next {
transform: translate3d(-78px, 0px, 138px) rotateX(0deg) rotateY(-65deg) scale(1) !important;
}
.poster_dv {
width: 100%;
height: 269px;
position: relative;
.poster_item {
width: 295px;
height: 215px;
img {
width: 100%;
height: 100%;
display: block;
}
}
}
.swiper-pagination {
padding: 0 12px 0 7px;
height: 13px;
background: rgba(0, 0, 0, 0.5);
border-radius: 7px;
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
box-sizing: border-box;
display: flex;
align-items: center;
}
/deep/ .swiper-pagination-bullet-active {
background: #fff !important;
}
/deep/ .swiper-pagination-bullet {
width: 8px;
height: 8px;
opacity: 1;
background: #d3b987;
border-radius: 50%;
display: block;
margin-left: 5px;
}
.swiper-button-next {
width: 32px;
height: 269px;
top: 0;
right: 0;
background: rgba(0, 0, 0, 0);
color: rgba(0, 0, 0, 0);
}
.swiper-button-prev {
width: 32px;
height: 269px;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0);
color: rgba(0, 0, 0, 0);
}
</style>
如果需要改变两边的图片角度,在css中找到 swiper-slide-prev,swiper-slide-next 类名修改下图的参数即可调整角度
swiper参数详解 可以点击查看
网友评论