Bootstrap

vue--制作随意滑动的相册

✍ 如何做成这种效果呢🤔?

㊀首先😐

没有任何装饰的源代码:

  <style>

        .box{
            margin-bottom: 20px;
            padding: 0;
        }

        .img{
            width: 480px;  
            height: 240px;
            border: 1px bisque solid;
        }
    </style>
</head>

<body>
    <div id="app">

        <h2>基于Vue3实现的相册:展示第xx张相片</h2>
        
        <img src = "./img_src/logo1.png" class="img" alt="图片加载失败"> 

        <ul type="none" class="box"></ul>
   
        
        <button>上一张</button>   <button>下一张</button>

    </div>

    <script type="module">
        import { createApp, ref } from './vue.esm-browser.js'

        // 【实现思路】
        // 1. 利用v-on为切换相片的按钮绑定上一个函数,这个函数负责更改图片路径
        // 2. 利用v-bind绑定图片的路径,使得图片路径可以自动更新

    </script>
</body>

</html>

【实现思路】😍

     1. 利用v-on为切换相片的按钮绑定上一个函数,这个函数负责更改图片路径

      2. 利用v-bind绑定图片的路径,使得图片路径可以自动更新

  <div id="app">
        <h2>基于Vue3实现的相册:展示第{{ img.number }}张相片</h2>
        
        <img v-bind:src="img.url"   class="img"> <br>
        <button v-on:click="prev">上一张</button> 
        <button v-on:click="next">下一张</button>
    </div>

㊁ 定义数据😉:

  const img = reactive(
                    {
                      
                        number: 1,
                        url: "./img_src/logo1.png"
                    }
                )

㊂ 定义函数😊:

 //控制上一张
                const prev = () => {
                    img.number=img.number-1
                    if (img.number == 0) {
                        img.number = 8
                    }
                    img.url = `./img_src/logo${img.number}.png`                 
                }                
                //控制下一张
                const next = () => {
                    img.number=img.number+1
                    if (img.number > 8) {
                        img.number = 1
                    }
                    img.url = `./img_src/logo${img.number}.png`
                }

🚨注:改变照片的路径,实现照片的转换

 img.url = `./img_src/logo${img.number}.png`

㊃ 实现照片跳转并返回函数😮:

 const jump = (val) => {
                    img.number = val
                    img.url = `./img_src/logo${img.number}.png`
                }
                return {img, prev,next,jump}
            }
        }).mount("#app")
    </script>

🚨注:一定要记得返回函数哦负责将无法显示

😇完整代码

<title>相册-参考实现</title>

    <style>
        .clear_ele::after{
            content: "";  /* 这个伪元素的内容属性必须有 */
            display: block;
            clear: both;
        }

        .button{
            background-color: bisque;
            width: 20px;
            float: left;  
            text-align: center;
            margin-right: 10px;
            border-radius: 8px;
            cursor: pointer;  
        }

        .img{
            width: 480px;  
            height: 240px;
            border: 1px bisque solid;
        }

        .box{
            margin-bottom: 20px;
            padding: 0;
        }
    </style>
</head>

<body>
    <div id="app">
        <h2>基于Vue3实现的相册:展示第{{ img.number }}张相片</h2>
        
        <img v-bind:src="img.url"   class="img"> <br>
        <button v-on:click="prev">上一张</button> 
        <button v-on:click="next">下一张</button>
    </div>

    <script type="module">
        import { createApp,  ref,  reactive } from './vue.esm-browser.js'

        createApp({
            setup() {

                // 【定义数据】
                const img = reactive(
                    {
                      
                        number: 1,
                        url: "./img_src/logo1.png"
                    }
                )

                // 【定义函数】
                //上一张
                const prev = () => {
                    img.number=img.number-1
                    if (img.number == 0) {
                        img.number = 8
                    }
                    img.url = `./img_src/logo${img.number}.png`                 
                }                
                //下一张
                const next = () => {
                    img.number=img.number+1
                    if (img.number > 8) {
                        img.number = 1
                    }
                    img.url = `./img_src/logo${img.number}.png`
                }
                //跳转
                const jump = (val) => {
                    img.number = val
                    img.url = `./img_src/logo${img.number}.png`
                }
                return {img, prev,next,jump}
            }
        }).mount("#app")
    </script>
</body>

</html>

;