Vue基础入门小demo——图片切换(初阶)

举报
黛琳ghz 发表于 2023/02/11 00:49:03 2023/02/11
【摘要】 图片切换是一个很经典的Vue入门学习案例,在你学习完一些基本的v-指令后,你可以尝试去写一个简单的demo去巩固和熟悉这些指令的使用方法,那么图片切换这个小demo就是一个不错的练手案例。

📋前言

图片切换是一个很经典的Vue入门学习案例,在你学习完一些基本的v-指令后,你可以尝试去写一个简单的demo去巩固和熟悉这些指令的使用方法,那么图片切换这个小demo就是一个不错的练手案例。


涉及指令:

  • v-on
  • v-bind
  • v-if/v-show

🎯demo介绍

  • 布局结构很简单,两个按钮,分别是上一页和下一页,中间是一个图片展示的区域。
  • 其中要实现的效果就是,在第一张图片时,隐藏上一页这个按钮,在最后一张图片时,隐藏下一页这个按钮。




🎯完整代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<style>
    #app {
        position: relative;
        margin: 0 auto;
        width: 32rem;
        height: 30rem;
    }

    h1 {
        text-align: center;
    }

    .left {
        width: 4rem;
        height: 8rem;
        position: absolute;
        bottom: 8rem;
    }

    .right {
        width: 4rem;
        height: 8rem;
        position: absolute;
        right: 0;
        bottom: 8rem;
    }

    img {
        margin: 0 auto;
    }
</style>

<body>
    <div id="app">
        <h1>图片切换</h1>
        <button class="left" @click="prev" v-show="index!=0">
            上一页
        </button>
        <img :src="imglist[index]" alt="">
        <button class="right" @click="next" v-show="index<imglist.length-1">
            下一页
        </button> 
    </div>
</body>
<script>
    const {
        createApp
    } = Vue

    createApp({
        data() {
            return {
                imglist: [
                    "./images/1.jpg",
                    "./images/2.jpg",
                    "./images/3.jpg",
                    "./images/4.jpg"

                ],
                index: 0,
            }
        },
        beforeUpdate() {
            console.log(this.imglist.length);

        },
        methods: {
            prev: function () {
                this.index--;
            },
            next: function () {
                this.index++;
            }
        },
    }).mount('#app')
</script>

</html>

🎯最终效果

🎯案例解析

  1. 定义图片数组:列表数据使用数组保存。
  2. 添加图片索引:通过imglist[index],获取列表里边的索引,一开始默认设置index为0。
  3. 绑定src属性:v-bind指令可以设置元素属性。
  4. 实现图片切换逻辑:上一页和下一页按钮各自绑定两个点击事件的方法。
  5. 实现按钮显示状态切换:图片为第一张时,使用v-show="index!=0",把上一页按钮隐藏,当切换到最后一张图片时,使用 v-show="index<imglist.length-1",因为索引值是从0开始的,所以要数组长度-1。(v-show 和 v-if 都可以切换元素的显示状态,频繁切换用 v-show)
  6. 补充:使用 v-if 替代上面 v-show 也同样达到相同的效果,但是使用 v-if 是直接把元素从DOM中移除,性能消耗相对于 v-show 会大些,因为这里是频繁切换,所以不建议使用 v-if。

🎯点赞收藏,防止迷路🔥 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。