vue中使用swiper插件

本文介绍了在Vue项目中使用Swiper插件的步骤,包括查看swiper文档,引入swiper到项目,以及解决在main.js和.vue文件中使用时遇到的`Uncaught TypeError`问题。错误产生原因是webpack 2不支持import和module.exports混用,解决方法是删除.babelrc文件中'plugins': ['transform-runtime']这一项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.看swiper文档,如何使用swiper (版本swiper-3.4.2完整压缩包

例子:

swiper文档地址:https://3.swiper.com.cn/demo/index.html 

在官网上找到了一个例子。如何看其对应代码

 

 

将swiper引入到vue项目中

在vue相中使用:

main.js文件中

某一个.vue文件中使用该插件:

<template>
    <div>
        <!-- 查询部分 -->
        <div>
            <search-panel>
                <el-form :model="form" ref="formFiled" class="form" inline label-position="right">
                    <el-row>
                        <el-col :span="6" :offset="7">
                            <el-form-item class="card-search search-input">
                                <el-input placeholder="请输入相应证件号" v-model="form.cardNo" suffix-icon="el-icon-search">
                                    <el-select v-model="searchSelect" slot="prepend">
                                        <el-option v-for="item in searchSelectData" 
                                            :key="item.value"
                                            :label="item.label" 
                                            :value="item.value">
                                        </el-option>
                                    </el-select>
                                </el-input>

                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                            <el-form-item class="search-input search-for-noSelect">
                                <el-input clearable v-model="form.name" 
                                    placeholder="请输入客户姓名"
                                    prefix-icon="el-icon-user"
                                    suffix-icon="el-icon-search">
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                            <el-button v-if="disabledQuery" type="success" class="search-btn" 
                                size="medium" style="margin-right: 16px;">查询
                            </el-button>

                            <el-button v-if="!disabledQuery" :loading="true" type="success" size="medium" style="margin-right: 16px;"
                                        disabled>查询中
                            </el-button>
                            <el-button type="success" size="medium" class="search-reset" 
                                style="margin-right: 26px;">重置
                            </el-button>
                        </el-col>
                    </el-row>
                </el-form>
            </search-panel>
        </div>
        <!-- 内容展示部分 -->
        <div class="content-con content-height">
            <div class="real-content">
               
                <!-- swiper -->
                <div class="swiper-container">
                    <div class="swiper-wrapper">
                        <div class="swiper-slide" v-for="(item,index) in 9" :key="index">
                            <!-- 标题 -->
                            <div class="title-card" :class="swiperClass[index%4]">
                                <span class="line-shu">|</span>Slide {{index}}
                            </div>
                            <!-- 内容 -->
                            <div class="content-card" :class="swiperClass[index%4]">
                                <p>
                                    <span class="left-span">保单号:</span><span class="left-right">231004****09220***</span>
                                </p>
                                <p>
                                    <span class="left-span">保单状态:</span><span class="left-right">有效</span>
                                </p>
                                <p>
                                    <span class="left-span">生效期:</span><span class="left-right">2019.08.22</span>
                                </p>
                                <!-- <p>
                                    <span class="left-span">保单号:</span><span>22222222222</span>
                                </p> -->
                            </div>
                        </div>
                    </div>
                    <!-- Add Arrows -->
                    <div class="swiper-button-next"></div>
                    <div class="swiper-button-prev"></div>
                </div>
              
               
                <!-- 表格 -->
                <div class="custom-table-con">
                    
                </div>
            </div>
        </div>
    </div>
</template>
<script>
import searchPanel from "@/components/searchPanel";
export default {
    data(){
        return {
            form:{
                name:'',
                cardNo:''
            },
            searchSelect:'选项1',
            searchSelectData:[{
                value: '选项1',
                label: '身份证'
            }, {
                value: '选项2',
                label: '护照'
            }, {
                value: '选项3',
                label: '军官证'
            }, {
                value: '选项4',
                label: '驾照'
            }, {
                value: '选项5',
                label: '户口本'
            }],
            swiperClass:["swiper0","swiper1","swiper2","swiper3"],
            disabledQuery: true
        }
    },
    components:{
        searchPanel
    },
    mounted(){
        this.initSwiper();
    },
    methods:{
        initSwiper(){
            var swiper = new Swiper('.swiper-container', {
                nextButton: '.swiper-button-next',
                prevButton: '.swiper-button-prev',
                slidesPerView: 4,
                spaceBetween: 20
            });
        }
    }
}
</script>

<style lang="less" scoped>
    @import "../../style/basicStyle.less";
    @pWidth: 12px;
    .content-height{
        height: calc(100% - 116px);
        padding-top: 22px;
        padding-left: 28px; 
        padding-right: 28px; 
        .real-content{
            height: 100%;
            // background: pink;
            .swiper-container{
                height: 245px;
            }
            
            
        }
        .swiper-button-next,.swiper-button-prev{
            background-image:url("../../assets/image/insurancePolicySearch/right.png");
            background-size: 100% 100%;
            width: 44px !important;
        }
        .swiper-button-prev{
            transform: rotate(-180deg);
        }
            
        .swiper-slide{
            font-size: 16px;
            border-radius: 4px;
            box-shadow: 2px 2px 10px #dad9d9;
            height: 240px;
            cursor: pointer;
            .title-card{
                height: 48px;
                line-height: 48px;
                padding-left: 14px;
                border-top-left-radius: 5px;
                border-top-right-radius: 5px;
            }
            .line-shu{
                display: inline-block;
                font-weight: bold;
                margin-right: 10px; 
            }
            .content-card{
                font-size: 14px;
                background: #ffffff;
                height: calc(100% - 48px);
                border-bottom-left-radius: 5px;
                border-bottom-right-radius: 5px;

目录结构:

遇到的问题:

Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

这个错误查文档说是:

在webpack打包的时候,可以在js文件中混用require和export。但是不能混用import 以及module.exports。

因为webpack 2中不允许混用import和module.exports

我们只需要吧.babelrc文件里的第11行代码插件项"plugins": ["transform-runtime"],中的transform-runtime删掉即可;

参考地址:

https://www.bbsmax.com/A/xl56rmE15r/

 

### Vue使用 Swiper 实现滚动效果 #### 安装依赖 在 Vue 项目中集成 Swiper 插件前,需先安装 `swiper` 和其样式文件。通过 npm 或 yarn 进行安装: ```bash npm install swiper vue-awesome-swiper --save ``` 或者 ```bash yarn add swiper vue-awesome-swiper ``` 完成安装后,在项目的入口文件(如 main.js)引入 Swiper 的 CSS 文件。 ```javascript import &#39;swiper/swiper-bundle.css&#39;; ``` --- #### 配置组件 创建一个自定义组件来封装 Swiper 功能。以下是基于 Vue 2.x 版本的示例代码[^2]。 ```vue <template> <div class="swiper-container"> <swiper :options="swiperOptions" ref="mySwiper"> <!-- 轮播项 --> <swiper-slide>Slide 1</swiper-slide> <swiper-slide>Slide 2</swiper-slide> <swiper-slide>Slide 3</swiper-slide> <!-- 分页器 --> <div class="swiper-pagination" slot="pagination"></div> <!-- 滚动条 --> <div class="swiper-scrollbar" slot="scrollbar"></div> </swiper> </div> </template> <script> import { swiper, swiperSlide } from "vue-awesome-swiper"; export default { name: "MySwiper", components: { swiper, swiperSlide, }, data() { return { swiperOptions: { slidesPerView: 1, spaceBetween: 30, loop: true, // 分页器配置 pagination: { el: ".swiper-pagination", clickable: true, // 启用点击分页功能[^1] }, // 滚动条配置 scrollbar: { el: ".swiper-scrollbar", draggable: true, // 启用拖拽滚动条功能 }, }, }; }, }; </script> <style scoped> .swiper-container { width: 100%; height: 100%; } </style> ``` 上述代码实现了基本的轮播图功能,并启用了分页器和滚动条的功能。 --- #### 样式调整 如果需要进一步优化样式,可以在 `<style>` 块中添加自定义样式。例如修改分页器的颜色或大小: ```css /* 修改分页器颜色 */ .swiper-pagination-bullet-active { background-color: red; } /* 修改滚动条高度 */ .swiper-scrollbar { height: 5px; bottom: 10px; /* 控制距离底部的距离 */ } ``` --- #### 切换到指定索引 为了实现手动切换到特定索引的功能,可以利用 `$refs.mySwiper.$swiper.slideTo(index)` 方法[^3]。以下是一个按钮触发切换的例子: ```vue <template> <div> <button @click="goToSlide(1)">跳转到第2张</button> <swiper :options="swiperOptions" ref="mySwiper"> <swiper-slide>Slide 1</swiper-slide> <swiper-slide>Slide 2</swiper-slide> <swiper-slide>Slide 3</swiper-slide> </swiper> </div> </template> <script> export default { methods: { goToSlide(index) { this.$refs.mySwiper.$swiper.slideTo(index); }, }, }; </script> ``` 此方法允许开发者灵活控制当前显示的内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值