vue使用swiper(swiper6)中遇到的坑
使用的swiper版本swiper组件在html中使用,只需直接引用先关的js文件以及css文件即可,但在vue中使用却截然不同。声明:博主先用的swiper的版本(6.7.0)import Swiper from "swiper"导入swiper坑一:css导包错误在使用过程中,如果使用低版本的方式在mounted中挂载,即可触发隐藏彩蛋,发现无法出现上一个和下一个的按钮,如图所示引入的css样
使用的swiper版本
swiper组件在html中使用,只需直接引用先关的js文件以及css文件即可,但在vue中使用却截然不同。
声明:博主先用的swiper的版本(6.7.0)
坑一:css导包错误
在使用过程中,如果使用低版本的方式在mounted中挂载,即可触发隐藏彩蛋,发现无法出现上一个和下一个的按钮,如图所示
引入的css样式包为
@import url("…/…/…/…/node_modules/swiper/swiper-min.css");
切换导包为
@import url("…/…/…/…/node_modules/swiper/swiper-bundle.css");
按钮出现
但是即使按钮出现,点击按钮却无法实现达到切换效果并且,只支持鼠标滑动切换,不能自动切换轮播,这里就涉及到swiper的第二个坑。
坑二:需导入多个方法才能实现按钮及其他功能的功能
第一更改导入,不但导入swiper这个包
import { Swiper, Navigation } from ‘swiper’//导入两个方法
并在创建swiper对象时加入这一句话
Swiper.use([Navigation]);//实现按钮点击切换的效果
完美实现,按钮的小功能。创建对象代码如下
<script>
import { Swiper, Navigation } from 'swiper'//导入两个方法
export default {
mounted () {
Swiper.use([Navigation]);//实现按钮点击切换的效果
new Swiper('#rotation', {
autoplay: {
delay: 2000,
disableOnInteraction: false
},
navigation: {
nextEl: '#rotation_next',
prevEl: '#rotation_prev',
},
});
},
}
</script>
即便如此,在呈现出的效果,发现swiper自带的轮播功能却都无法正常运行。及轮播代码的模块无法正常运行。
autoplay: {
delay: 2000,
disableOnInteraction: false
},
查阅了很多资料才发现,要实现这一功能,仅仅需要导入一个小小的模块,并且在创建swiper对象时使用,即可实现,原本的轮播功能。
import { Swiper, Navigation, Pagination, Autoplay } from 'swiper'
Swiper.use([Autoplay, Navigation, Pagination]);
//实现按钮点击切换以及轮播的效果
完整代码如下:
可自行复制粘贴使用,查看效果
<template>
<div
class="swiper-container"
id="rotation"
>
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
<div class="swiper-slide">Slide 4</div>
<div class="swiper-slide">Slide 5</div>
<div class="swiper-slide">Slide 6</div>
<div class="swiper-slide">Slide 7</div>
<div class="swiper-slide">Slide 8</div>
<div class="swiper-slide">Slide 9</div>
<div class="swiper-slide">Slide 10</div>
</div>
<!-- Add Arrows -->
<div
class="swiper-button-next"
id="rotation_next"
></div>
<div
class="swiper-button-prev"
id="rotation_prev"
></div>
</div>
</template>
<script>
import { Swiper, Navigation, Pagination, Autoplay } from 'swiper'
export default {
mounted () {
Swiper.use([Autoplay, Navigation, Pagination]);
//实现按钮点击切换以及轮播的效果
new Swiper('#rotation', {
autoplay: {
delay: 2000,
disableOnInteraction: false
},
navigation: {
nextEl: '#rotation_next',
prevEl: '#rotation_prev',
},
});
},
}
</script>
<style lang="scss" scoped>
@import url("../../../../node_modules/swiper/swiper-bundle.css");
.swiper-container {
width: 100%;
height: 100%;
}
.swiper-slide {
text-align: center;
font-size: 18px;
background-color: rgb(128, 134, 132);
/* Center slide text vertically */
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
transition: 300ms;
transform: scale(0.8);
}
.swiper-slide-active,
.swiper-slide-duplicate-active {
transform: scale(1);
}
.text {
background-color: aquamarine;
width: 400px;
height: 400px;
}
</style>
vue的新手小白,若有哪里不对请留言指正!!!
更多推荐
所有评论(0)