• 轮播图动态渲染


    第一步:
    安装依赖
    在app.vue终端输入
    npm i swiper@5 --save
    在package.json终端输入
    npm i vue-awesome-swiper@3 --save
     
    第二步:
    全局安装
    main.js 里面操作:
    全局安装
    1. import VueAwesomeSwiper from 'vue-awesome-swiper'
    2. /* 在node_modules里面找到swiper文件夹里面的css文件 */
    3. import 'swiper/css/swiper.css'
    4. /* 使用Vue.use来注册一个轮播图插件 */
    5. Vue.use(VueAwesomeSwiper)
    在App.vue中的HTML页面上将组件插入,并引入图片
    ★ 复制下面的代码在vscode中会出现word格式黄色空格,
    需要自己删掉,建议手敲下面的代码
    第三步:
    下载图片放在你srcde assets中,并引入图片,这一步一定要注意你的引入地址是不是正确的,一般我们都会将图片放置在src.assets
    在自己的组件文件夹中 新建一个轮播图组件 MySwiper .vue
    并复制以下代码到你的组件中:   
    1.     <swiper ref="mySwiper" :options="swiperOptions" v-if="imgList.length">
    2.      
    3.       <swiper-slide
    4.         v-for="(v, i) in imgList"
    5.         :key="i"
    6.         @click.native="goto(v.url)"
    7.       >
    8.         <img :src="v.imgurl" width="100%" height="100%" />
    9.       swiper-slide>
    10.       <div class="swiper-pagination" slot="pagination">div>
    11.     swiper>
     样式一定要加,不设置宽高就形不成轮播图
    把组件引用到 app.vue文件中去:
     
    截止到现在都是静态的轮播图,
    可以到APNIC上翻找样式添加效果,网址如下:
    如何将静态变成动态,我们需要在组件插入们父组件的动态效果
     要在data中将我们的样式写好,方便我们使用,其中el的作用点是挂载,具体挂载到元素上
    delay:2000延迟
    effect:图片轮播效果
    pagination: 分页器,clickable为true的时候点击可以切换
     loop:true无缝衔接图片轮播
    autoplay:控制轮播的时间,delay:1500可以限定时间轮播,而 stopOnLastSlide则可以在轮播到最后一个停止轮播
    disableOnInteraction:false,可以更丝滑的轮播
    1. data() {
    2.     return {
    3.       imgList: [],
    4.       swiperOptions: {
    5.         /* 设置Slide的切换效果,默认为"slide"(普通位移切换),还可设置为
    6.         "fade"(淡入)、"cube"(方块)、"coverflow"(3d流)、"flip"(3d翻转)
    7.         、"cards"(卡片式)、"creative"(创意性)。 */
    8.         effect: "flip",
    9.         pagination: {
    10.           el: ".swiper-pagination",
    11.           /*  此参数设置为true时,点击分页器的指示点分页器会控制Swiper切换 */
    12.           clickable: true,
    13.         },
    14.         loop: true,
    15.         autoplay: {
    16.           delay: 2000,
    17.           /* 如果设置为true,当切换到最后一个slide时停止自动切换。(loop模式下无效)。 */
    18.           stopOnLastSlide: false,
    19.           /* disableOnInteraction默认是true 需要改成false  */
    20.           /* 如果设置为false,用户操作swiper之后自动切换不会停止,每次都会重新启动autoplay。 */
    21.           autoplay: {
    22.             delay: 1500,
    23.             stopOnLastSlide: false,
    24.             disableOnInteraction: false,
    25.           },
    26.           disableOnInteraction: false,
    27.         },
    28.       },
    29.     };
    30.   },
    因为Vue在更新DOM是异步的,所以数据发生变化,Vue将开启一个异步更新,视图要等待数据变化完,在统一更新,我们点击事件获取的文本值就是发生变化前的,要解决这个问题就要使用 NextTick
     轮播图操作的App.vue完整代码如下:
    1. <script>
    2. import axios from "axios";
    3. export default {
    4.   name"App",
    5.   createdfunction () {
    6.     /* 数据是异步的, 数据还没有到情况下,轮播图组件已经开始加载了,
    7.     导致配置无缝轮播的时候效果出不来 怎么办?*/
    8.     /* 解决方法:使用条件判断v-if="imgList.length",当数据还没有获取到的时候不加载轮播图,
    9.     数据到了,再加载 */
    10.     axios.get("/data/imgJson.json").then((res) => {
    11.       this.imgList = res.data.imglist;
    12.       /* 使用refs的方法 必须要配置$nextTick获取到dom之后再执行slideTo方法 */
    13.       /* 在这里使用$nextTick方法 是因为组件是后来有数据的时候加载上去的,
    14.       担当于更新了dom的值,这时候想获取dom就必须借助于$nextTick方法 */
    15.       this.$nextTick(()=>{
    16.         /* 在异步操作里面slideTo第一个参数表示第几张  */
    17.         this.$refs.mySwiper.swiper.slideTo(2,1000,false)
    18.       })
    19.     });
    20.   },
    21.   methods: {
    22.     gotofunction (url) {
    23.       /* console.log(url) */
    24.       /* window.open会打开一个新的窗口 */
    25.       window.open(url);
    26.       /* location.href在当前页跳转 */
    27.       /* location.href = url; */
    28.     },
    29.   },
    30.   data() {
    31.     return {
    32.       imgList: [],
    33.       swiperOptions: {
    34.         /* 设置Slide的切换效果,默认为"slide"(普通位移切换),还可设置为
    35.         "fade"(淡入)、"cube"(方块)、"coverflow"(3d流)、"flip"(3d翻转)
    36.         、"cards"(卡片式)、"creative"(创意性)。 */
    37.         effect'fade',
    38.         pagination: {
    39.           el".swiper-pagination",
    40.           /*  此参数设置为true时,点击分页器的指示点分页器会控制Swiper切换 */
    41.           clickable :true,
    42.         },
    43.         loop:true,
    44.         autoplay: {
    45.           delay2000,
    46.           /* 如果设置为true,当切换到最后一个slide时停止自动切换。(loop模式下无效)。 */
    47.           stopOnLastSlidefalse,
    48.           /* disableOnInteraction默认是true 需要改成false  */
    49.           /* 如果设置为false,用户操作swiper之后自动切换不会停止,每次都会重新启动autoplay。 */
    50.           disableOnInteractionfalse,
    51.         },
    52.       },
    53.     };
    54.   },
    55.   mounted() {
    56.     /* console.log("Current Swiper instance object", this.$refs.mySwiper.swiper); */
    57.     /* this.swiper.slideTo(3, 1000, true); */
    58.     // console.log(this.$refs.mySwiper.swiper.slideTo(1,1000,false) )
    59.   },
    60. };
    61. script>
    62. <style>
    63. .swiper-container {
    64.   width: 700px;
    65.   height: 500px;
    66.   border: 1px solid red;
    67. }
    68. style>
    截止到目前我们都是使用本地的图片做的轮播图,接下来我们来模拟一下工作中如何从接口动态的渲染并轮播
    首先我们要使用接口就要安装axios依赖包
    我们需要在父组件引入接口,注意点是一定要将域名与url在拼接引入
    引入方法如下,我们一定要在created里获取接口信息,这样才能在页面加载前渲染数据

     

    在子组件添加父组件的props接口,方便我们获取 axios的内容
    在子组件获取父组件的 axios的内容后我们必须要在父组件 添加判断,来确保 axios获取到了在渲染组件,通过slides.length等于trun,还是false
    现在已经建立好连接,可以调用axios的数据来渲染,在子组件我们就可以使用v-for来动态的渲染
    添加导航按钮,并设置点击事件,注意点是给子组件添加添加事件
    导航按钮我们可以在如下的网站,找到样式添加
    添加配置
    添加样式的时候一定要注意权重,因为是全局作用域,我们为了提高层级,可以添加scoped让他的作用域变成局部作用域,或者添加! important提高权重
  • 相关阅读:
    XML Map 端口进阶篇——常用关键字和格式化器详解
    qsort函数详解
    常用的Visual Studio快捷键
    Python基于php+MySQL的英语学习交流平台
    USACO Training 1.3 Milking Cows
    获取当前OA地址JSP处理判断逻辑
    数字孪生关键技术及标准
    DCM 中间件家族迎来新成员
    AI智能网关在工业物联网领域有哪些应用优势
    【ES的优势和原理及分布式开发的好处与坏处】
  • 原文地址:https://blog.csdn.net/sl105105/article/details/126164320