利用swiper在vue中做轮播图,并改变轮播图的原有箭头、图片等内容

目标:利用swiper在vue中做轮播图,并改变轮播图的原有箭头、图片等内容。

实现效果:1、点击左右箭头可切换图片。

                   2、点击后图片出现最左侧样式效果,只有被点击的图片有此效果,不被点击恢复默认效果。如点击”帅气偶像“图片,”帅气偶像“图片出现边框和蓝字效果,其余图片均不出现此效果。

                  3.改变了swiper原有的箭头样式,以及在单纯的轮播图中加入了文字,同时设置了各图片间距及大小等。

 实现方法:

template中:

<div class="selectDep">
             <div class="selectDepTitle">选择帅气偶像</div>
                  <swiper :options="swiperOption" ref="mySwiper">
                      <swiper-slide class="depPicture">
                        <div
                           class="picture"
                            @click="choooseDevelopment('1')"
                          :class="pictureDevelopmentState === '1' ? 'pictureChoose' : ''"
                            >
                          <span style="height:78px;line-height:95px">
                           <img src="./theme/img/pictureOne.png" />
                            </span>
                           <span>萌萌的小偶像</span>
              </div>
                   </swiper-slide>
                  <swiper-slide class="depPicture">
                        <div
                          class="picture"
                           @click="choooseDevelopment('2')"
                         :class="pictureDevelopmentState === '2' ? 'pictureChoose' : ''"
                            >
                           <span style="height:65px;line-height:95px">
                            <img src="./theme/img/pictureTwo.png" />
                                </span>
                           <span style="width:49px;margin:auto">
                                    酷酷帅帅的小偶像
                                </span>
                            </div>
                    </swiper-slide>
                    <swiper-slide class="depPicture">
                        <div
                          class="picture"
                          @click="choooseDevelopment('3')"
                        :class="pictureDevelopmentState === '3' ? 'pictureChoose' : ''"
                            >
                                <span style="height:78px;line-height:107px">
                              <img
                                  src="./theme/img/pictureThree.png"
                                   style="width:68px;height:44px"
                                    />
                               </span>
                              <span>帅气偶像</span>
                            </div>
                    </swiper-slide>
                        <swiper-slide class="depPicture">
                            <div
                           class="picture"
                             @click="choooseDevelopment('4')"
                          :class="pictureDevelopmentState === '4' ? 'pictureChoose' : ''"
                            >
                                <span style="height:78px;line-height:122px">
                               <img src="./theme/img/pictureFour.png" />
                                </span>
                                <span>漂亮偶像</span>
                            </div>
                        </swiper-slide>
                        <div class="swiper-button-prev" slot="button-prev"></div>
                        <div class="swiper-button-next" slot="button-next"></div>
                    </swiper>
 </div>

 script中:

<script>
import { swiper, swiperSlide } from 'vue-awesome-swiper';
import 'swiper/dist/css/swiper.css';
</script>

script的data中:

swiperOption: {
                loop: true,
                autoplay: false,
                // 这个是一个框内能同时显示多个slide的
                slidesPerView: 4,
                // 显示分页
                pagination: {
                    el: '.swiper-pagination',
                    clickable: true, //允许分页点击跳转
                },
                // 设置点击箭头
                navigation: {
                    nextEl: '.swiper-button-next',
                    prevEl: '.swiper-button-prev',
                },
            },
pictureDevelopmentState: '',

script的methods中:

 choooseDevelopment(val) {
            this.pictureDevelopmentState = val;
        },
   

script的computed和component中:

components: {
        swiper,
        swiperSlide,
    },
    computed: {
        swiper() {
            return this.$refs.mySwiper.swiper;
        },
    },
    mounted() {
        // current swiper instance
        // 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
        console.log('this is current swiper instance object', this.swiper);
        // this.swiper.slideTo(3, 1000, false);
    },

css样式:

 .selectDep {
                margin-bottom: 20px;
                margin-top: 7px;
                position: relative;
                .selectDepTitle {
                    flex-basis: 100px;
                    justify-content: center;
                    font-size: 12px;
                    font-family: Source Han Sans CN, Source Han Sans CN-Regular;
                    font-weight: 500;
                    text-align: left;
                    color: #b0d9ff;
                    margin-bottom: 9px;
                }
                .depPicture {
                    display: flex;
                    width: 361px;
                    .picture {
                        width: 85px;
                        height: 105px;
                        background: #697485;
                        border: 1px solid #3a4046;
                        display: flex;
                        flex-direction: column;
                        color: #ffffff;
                        font-size: 12px;
                        font-family: Source Han Sans CN, Source Han Sans CN-Regular;
                        font-weight: 400;
                        text-align: center;
                    }
                    .pictureChoose {
                        width: 85px;
                        height: 105px;
                        display: flex;
                        flex-direction: column;
                 background: radial-gradient(rgba(77, 95, 114, 0.27) 0%, undefined 100%);
                        border: 1px solid #e7f4ff;
                        box-shadow: #1a446a 0px 0px 20px inset;
                        font-size: 12px;
                        font-family: Source Han Sans CN, Source Han Sans CN-Regular;
                        font-weight: 400;
                        text-align: center;
                        color: #80c3ff;
                    }
                }
                .swiper-button-prev {
                    width: 15px;
                    height: 20px;
                    background-image: url('./theme/img/leftArrow.png');
                    background-size: cover;
                    position: absolute;
                    left: 0px;
                    top: 70%;
                }
                .swiper-button-next {
                    width: 15px;
                    height: 20px;
                    background-image: url('./theme/img/rightArrow.png');
                    background-size: cover;
                    position: absolute;
                    left: 370px;
                    top: 70%;
                }
                .swiper-container {
                    width: 336px;
                    position: static;
                    margin-left: 22px;
                }
                .swiper-slide
                    .swiper-slide-duplicate
                    .swiper-slide-active
                    .swiper-slide-duplicate-next {
                    width: 361px;
                }
            }

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值