博客
关于我
2020最新用swiper制作轮播图?
阅读量:295 次
发布时间:2019-03-01

本文共 4895 字,大约阅读时间需要 16 分钟。

/*
轮播图插件:
下载轮播图插件(不要下载最高版本的,因为高版本的使用的是swiper4文档)
npm install vue-awesome-swiper@2.5.4
vue-awesome-swiper文档:https://github.com/surmon-china/vue-awesome-swiper
https://blog.csdn.net/qq_41108402/article/details/80546626

项目中:
1,先在入口文件(main.js)引入
顺序是先引入,再调用css
import VueAwesomeSwiper from ‘vue-awesome-swiper’
import ‘swiper/dist/css/swiper.css’
(这个css路径根据node_modules中的swiper里面的css路径,如果报错,查看node_modules中的swiper路径)
Vue.use(VueAwesomeSwiper);
(使用Vue.use注册一下VueAwesomeSwiper,目的是供全局使用)

2,创建Swiper.vue

3,在首页引入Swiper.vue
import Swiper from ‘…/base/Swiper’;路径自己定
(注意:Swiper.vue中导入的是Swiper)
在首页中components注册一下Swiper组件,最后使用

*/

/----------------------------------------------------------------------------------------/
用具体详细步骤来操作如下:
1.npm install vue-awesome-swiper@2.5.4
2.npm install axios

3.min.js文件引入

// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue'import App from './App'import router from './router/index.js'import 'swiper/dist/css/swiper.css'import VueAwesomeSwiper from 'vue-awesome-swiper'Vue.use(VueAwesomeSwiper) //vue的第三方插件专门供vue使用Vue.config.productionTip = false/* eslint-disable no-new */new Vue({  el: '#app',  router,  components: { App },  template: '<App/>'})

4.创建一个swiper.vue

<template>  <swiper :options="swiperOption">    <swiper-slide v-for="(slide, index) in swiperImgs" :key="index">        <!-- :动态获取图片 -->      <img :src="slide.src"/>     </swiper-slide>    <div class="swiper-pagination" slot="pagination"></div>  </swiper></template><script>  export default {    name: 'carousel',    props:['swiperImgs'],//子组件接收父组件的值    data() {      return {        swiperOption:{                // 参数选项,显示小点                pagination:'.swiper-pagination',                  //循环                loop:true,                //每张播放时长2秒,自动播放                autoplay:2000,                    }      }    }  }</script><style lang="less" scoped> img{   width: 100%;   display: block; }</style>

5.放入你要引入的主文件 我写入的是home.vue

<template>  <div class="home">    <!-- 头部 -->  <Top>    <h3>首页</h3>  </Top>  <!-- 轮播图 -->  <div class="swp">    <!-- 传入图片定义swiperimgs -->      <Swiper :swiperImgs="bannerlist"></Swiper>  </div>    </div></template><script>  import Top from '../base/Top';  import Swiper from '../base/Swiper';  // 因为用变量导出,所以引入的时候必须用对象来引入{导出的}地址  import {getBanner} from '../api'   export default {  name: 'Home',  data () {    return {      bannerlist:[]//接收数据    }  },  components:{   Swiper,Top  },  //初始化之后  created(){//函数   this.getb();    },  methods:{//methods自定义方法    getb(){//定义的方法      return  getBanner().then((res)=>{//必须用return 返回那个方法getbanner.成功或失败then方法,在使用箭头函数来获取拿到参数res      this.bannerlist=res.data.banner;   })    }  }}</script><!-- Add "scoped" attribute to limit CSS to this component only --><style scoped lang='less'>.home{  width: 100%;  .swp{    margin: 60px 10px 10px 10px;    font-size: 16px;  }}h1, h2 {  font-weight: normal;}ul {  list-style-type: none;  padding: 0;}li {  display: inline-block;  margin: 0 10px;}a {  color: #42b983;}</style>

6.在src下创建一个(放入json文件)的api->index.js

index.js

import axios from 'axios'//导出一个axios有很多,所以必须分开用变量来接收,不用default是导出全部export let getBanner=function (){//用get接收json数据 return axios.get('/static/mock/banner.json');}

7.在static静态文件下创建一个mock文件->banner.json

banner.json

{    "banner":[        {"src":"https://img11.360buyimg.com/n2/s372x372_jfs/t1/59714/19/15384/96258/5dcd8916Ec8adb87c/19eb1d2ab0baf01c.jpg!q70.dpg.webp"},        {"src":"https://m.360buyimg.com/mobilecms/s750x750_jfs/t22045/307/929094700/422408/3bc9906d/5b1be210Nf5b61f6c.jpg!q80.dpg.webp"},        {"src":"https://img12.360buyimg.com/mobilecms/s519x519_jfs/t1/119364/38/3338/552423/5ea7e439Ef85df0e7/3759b12c3c3d84bf.png.webp"}    ]}

8.效果图如下:
在这里插入图片描述

//扩展当有很多接口图片时,使用方法如下:

index.js

import axios from 'axios'// 创建公共的接口名axios.defaults.baseURL="/static/mock/";//请求的拦截(接口)axios.interceptors.request.use((config)=>{//一般是加请求头参数    //当你有共同的参数时可以用此参数来用    config.headers.a="1234"   console.log(config);//可以找到a的值1234    return config})//每次数据拿到的值都是data,也可以创建一个公共的//data已经拿到数据的响应axios.interceptors.response.use((res)=>{//数据响应的拦截 //return 啥就返回啥 return res.data;})//axios是封装的promise//导出一个axios有很多,所以必须分开用变量来接收,不用default是导出全部export let getBanner=function (){//用get接收json数据   return axios.get('banner.json');}export let getBanners=function (){//用get接收json数据    return axios.get('banner.json');   }

2.请求拦截接口参数:参考图片
在这里插入图片描述
3.methods方法那里可以省略data部分
//当你在公共方法index.js定义后才可以省略data

methods:{//方法    getb(){      return  getBanner().then((res)=>{    this.bannerlist=res.banner;   })    }  }

4.在index.js中创建公共的接口名之后:
index.js中这一步可以省略前面的static/moke/

//导出一个axios有很多,所以必须分开用变量来接收,不用default是导出全部export let getBanner=function (){//用get接收json数据   return axios.get('banner.json');//省略后的}export let getBanners=function (){//用get接收json数据    return axios.get('banner.json');//省略后的   }   ...   export可以抛出很多数据...   
你可能感兴趣的文章
3、条件查询
查看>>
cordova打包apk更改图标
查看>>
GitHub上传时,项目在已有文档时直接push出现错误解决方案
查看>>
页面置换算法
查看>>
文件系统的层次结构
查看>>
减少磁盘延迟时间的方法
查看>>
vue(渐进式前端框架)
查看>>
权值初始化和与损失函数
查看>>
vscode设置eslint保存文件时自动修复eslint错误
查看>>
Remove Extra one 维护前缀最大最小值
查看>>
Gradle实战四:Jenkins持续集成
查看>>
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
查看>>
iOS 开发官方文档链接收集
查看>>
HDU - 4109 Instrction Arrangement
查看>>
JQuery--手风琴,留言板
查看>>
MFC 自定义消息发送字符串
查看>>
Linux操作系统的安装与使用
查看>>
C++ 继承 详解
查看>>
OSPF多区域
查看>>
Docker入门之-镜像(二)
查看>>