当前位置: 首页 > article >正文

Vue项目练习之简单的小相册

使用前面学过的vue3框架的知识来制作一个简单的相册

知识点:https://blog.csdn.net/DZ_OP/article/details/144009207?spm=1001.2014.3001.5501

首先我们来看一下完整的代码,通过剖析这些代码一步步学会如何运用所学知识

注意:四张图片的路径为:

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

<head>
    <meta charset="UTF-8">
    <title>相册</title>

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

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

        .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;
        }
    </style>
</head>

<body>
    <div id="app">
        <h2>基于Vue3实现的相册:展示第{{ img.number }}张相片</h2>
        
        <img v-bind:src="img.url"   class="img"> 
        <ul type="none" class="clear_ele box">
            <li v-for="(val, idx) in 4"  @click="jump(val)" class="button"> {{val}} </li>
        </ul>
        <button @click="prev">上一张</button>     <button @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--
                    if (img.number == 0) {
                        img.number = 4
                    }
                    img.url = `./img_src/logo${img.number}.png`                 
                }                
                //下一张
                const next = () => {
                    img.number++
                    if (img.number == 5) {
                        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>

示例效果:

首先我们需要写好一个基本的html框架,css里必须写进防止高度塌陷的代码,才不会导致块与块之间展现出”丑陋“的样子。

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

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

        .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;
        }
    </style>

接着vue框架部分,我们需要先导入模块

  import { createApp,  ref,  reactive } from './vue.esm-browser.js'

使用响应式数据reactive来定义数据

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

过v-bind来绑定数据,使得”上一张“按钮做出了事件行为(里面写了一个if函数来实现图片路径的自减)

<button @click="prev">上一张</button>
const prev = () => {
                    img.number--
                    if (img.number == 0) {
                        img.number = 4
                    }
                    img.url = `./img_src/logo${img.number}.png`                 
                }        

同样的做法,为”下一张“按钮做出用样的操作(会做一个按钮就会做第二个第n个按钮)

​
<button @click="next">下一张</button>

 const next = () => {
                    img.number++
                    if (img.number == 5) {
                        img.number = 1
                    }
                    img.url = `./img_src/logo${img.number}.png`
                }

​

接着我们需要使用反引号来实现控制这个字符,v-for做一个遍历来实现跳转功能

  const jump = (val) => {
                    img.number = val
                    img.url = `./img_src/logo${img.number}.png`
                }
   <ul type="none" class="clear_ele box">
            <li v-for="(val, idx) in 4"  @click="jump(val)" class="button"> {{val}} </li>
        </ul>

最后将其暴露出来

 return {img, prev,next,jump}

这样我们一个简单的相册就制作完成了


http://www.kler.cn/a/411909.html

相关文章:

  • 4.STM32之通信接口《精讲》之IIC通信---软件实现IIC《深入浅出》面试必备!
  • 计算机毕业设计Python+大模型美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
  • 嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点
  • 高标准农田智慧农业系统建设方案
  • Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序
  • ThingsBoard规则链节点:Azure IoT Hub 节点详解
  • 三、计算机视觉_07YOLO图像分类
  • 《气味传感器:嗅觉科技的新前沿》
  • LeetCode题练习与总结:替换后的最长重复字符--424
  • 使用 Jina Embeddings v2 在 Elasticsearch 中进行后期分块
  • React Native 应用程序测试指南
  • 网络安全:攻击和防御练习(全战课), DDos压力测试
  • shodan(7)
  • upload-labs-master第12关详细教程
  • 使用Go 语言连接并操作 MySQL 数据库
  • python+django5.1+docker实现CICD自动化部署springboot 项目前后端分离vue-element
  • Jackson、Gson、FastJSON三款JSON利器比拼
  • 用web前端写出一个高校官网
  • iOS 19 重大更新泄露,将带来更“聪明”的 Siri 挑战 ChatGPT
  • sqlite3自动删除数据的两种设置方式记录
  • 【单点知识】基于PyTorch进行模型部署
  • Java基础夯实——2.7 线程上下文切换
  • IDEA实现Oracle连接以及基本的增删改查操作步骤详解
  • 网易游戏用户流失预测实践
  • 【公益接口】不定时新增接口,仅供学习
  • 高校宿舍节能用电现状及智慧监管平台构建