利用Vue的相关特性,制作相册

目录

一、整体结构

1、设置一个div盒子

2、设置图片展示

3、页码按钮

4、翻页按钮

二、CSS样式

1、 .clear_ele::after

2、设置图片、按钮等属性的样式

三、JavaScript部分(Vue)

1、导入模块

2、创建Vue应用

①定义响应式数据

②定义事件处理函数

I、上一张照片切换

II、下一张照片切换

III、跳转指定照片

方法一

方法二

③最后将其暴露出来

四、总结


在上一篇博客中,我们了解到了Vue的响应式数据、v-on,v-bind,v-if,v-for等相关知识点,我们可以通过这些知识点制作如下视频内的效果

一、整体结构

1、设置一个div盒子

<div id="app"> 是一个 id 为 app 的 div 元素,它是Vue应用程序挂载的目标元素在这个元素内部的内容将由Vue实例来控制和渲染

2、设置图片展示

<img>标签通过v-bind:src="img.url"将图片的src属性与img.url数据进行绑定,使其能根据数据的变化动态加载不同的图片,并且设置了class="img"应用之前定义的图片样式。

3、页码按钮

通过v-for="(val, idx) in 4"指令在<ul>标签内循环生成了4个<li>标签作为页码按钮,每个按钮显示的值为循环变量val,并且绑定了@click="jump(val)"事件(不过jump函数未在提供的代码中完整定义,推测是用于跳转到指定页码的功能),同时应用了class="button"样式。

4、翻页按钮

有两个按钮,分别绑定了@click事件,@click="prev"用于点击时调用prev函数实现上一张图片的切换,@click="next"用于调用next函数实现下一张图片的切换。

    <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>

运行结果如下:

 

二、CSS样式

1、 .clear_ele::after

这是一个伪元素选择器,用于在具有clear_ele类的元素后面添加一个空的块级元素,并清除左右浮动,以确保布局的正常显示。

2、设置图片、按钮等属性的样式

代码如下:

    <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>

大家可以根据实际需要调整相应的样式。

这样一个雏形就出来了

三、JavaScript部分(Vue)

1、导入模块

从js文件中导入createApprefreactive等Vue相关的重要函数和对象,createApp用于创建Vue应用实例ref和reactive用于创建不同类型的响应式数据

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

2、创建Vue应用

①定义响应式数据

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

在createApp的setup函数内,首先使用reactive函数定义一个img的响应式对象,包含number(初始值为1)用于显示当前照片的序号url用于显示当前照片的路径

②定义事件处理函数

I、上一张照片切换
 const prev = () => {img.number--if (img.number == 0) {img.number = 4}img.url = `./img_src/logo${img.number}.png`                 } 

使用prev函数,用于实现上一张图片的切换功能。当点击“上一张”按钮时,函数先将照片序号减1,之后判断序号是否为0,如果为0则重置为4,最后更新图片路径,使其指向对应图片。

II、下一张照片切换

同理,使用next函数实现下一张照片切换的功能,当点击“下一张”按钮时,函数先将照片序号加1,之后判断序号是否为5,如果为5则重置为1,最后更新图片路径,使其指向对应图片。代码如下:

 const next = () => {img.number++if (img.number == 5) {img.number = 1}img.url = `./img_src/logo${img.number}.png`
III、跳转指定照片
方法一

使用reactive函数创建一个响应式对象,其中包含两属性:index(记录图片序号)和url(显示图片路径)

 const img = reactive({index: 1,url:  "./img_src/logo1.png",  //图片路径}   )

显示指定照片的函数,四张照片便编写四个函数,那其中一个举例:

 const show_1_img = () => {img.index = 1img.url = `./img_src/logo${img.index}.png` }

将img.index设置为对应的序号(第一张照片为1,第二张为2以此类推),使其指向对应图片路径。

 const show_1_img = () => {img.index = 1img.url = `./img_src/logo${img.index}.png` }const show_2_img = () => {img.index = 2img.url = `./img_src/logo${img.index}.png` }const show_3_img = () => {img.index = 3img.url = `./img_src/logo${img.index}.png` }const show_4_img = () => {img.index = 4img.url = `./img_src/logo${img.index}.png`}

最后将其暴露出来

 return { img, show_1_img,show_2_img,show_3_img,show_4_img,pre, next }
方法二

这种方法比较简易,而还有一种方法更加简洁、方便

const jump = (val) => {img.number = valimg.url = `./img_src/logo${img.number}.png`}

函数接受一个val参数,这个参数表示要跳转的图片序号,在函数内部将img.number的值设为val,根据新的值更新图片的路径,使其指向对应的图片路径。

③最后将其暴露出来

return {img, prev,next,jump}}

四、总结

这样就实现了一个基于Vue的相册功能,通过Vue的响应式数据和各种指令,实现了图片动态展示和通过按钮点击切换图片(上一张或下一张)。

完整代码如下:

<!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 = valimg.url = `./img_src/logo${img.number}.png`}return {img, prev,next,jump}}}).mount("#app")</script>
</body></html>

运行结果如下(详细效果请观看博客开头的视频):

大家可以根据前面所学内容或复制上面的代码制作这个属于自己的相册。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/475939.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…

(C语言)文件操作

目录 文件 程序文件 数据文件 文件名 ​编辑数据文件的分类 文件的打开和关闭 流 标准流 1&#xff09;stdin 2&#xff09;stdout 3&#xff09;stderr 文件指针 文件的打开和关闭 对文件内容操作的函数 1&#xff09;fgetc&#xff0c;fputc 2&#xff09;fp…

AI修改验证账号名正则表达式的案例

我有如下的一行老代码&#xff0c;今天复用的时候发现当时注释写错了&#xff0c;改好以后请AI再检查一遍。 因为这次AI的分析的思路很典范&#xff0c;所以拿出来分享一下。 提问&#xff1a; 请看一下这个正则和后面的注释是否匹配&#xff0c;现在的验证规则是否保证账号至…

SQL进阶技巧:如何进行数字范围统计?| 货场剩余货位的统计查询方法

目录 0 场景描述 1 剩余空位区间和剩余空位编号统计分析 2 查找已用货位区间 3 小结 0 场景描述 这是在做一个大型货场租赁系统时遇到的问题&#xff0c;在计算货场剩余存储空间时&#xff0c;不仅仅需要知道哪些货位是空闲的&#xff0c;还要能够判断出哪些货位之间是连…

彻底理解如何保证Redis和数据库数据一致性问题

一.背景 系统中缓存最常用的策略是&#xff1a;服务端需要同时维护 DB 和 Cache 并且是以 DB 的结果为准&#xff0c;那么就可能出现 DB 和 Cache 数据不一致的问题。 二.读数据 逻辑如下&#xff1a; 当客户端发起查询数据的请求&#xff0c;首先回去Redis中查看没有没该数据&…

后仿真中的SDF语法之关键字 IOPATH 用法详解

在后仿真中&#xff0c;SDF&#xff08;Standard Delay Format&#xff09;文件用于描述设计的时序信息&#xff0c;而IOPATH是SDF中的一个关键结构&#xff0c;用于定义单元间的路径延迟。以下是IOPATH关键字的用法及其相关内容的详细介绍&#xff1a; IOPATH结构旨在将延迟数…

Springboot 整合 Java DL4J 搭建智能问答系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“网上书城管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 用户注册界面…

测评部署和管理 WordPress 最方便的面板

新版宝塔面板快速搭建WordPress新手教程 - 倚栏听风-Morii - 博客园 初学者使用1Panel面板快速搭建WordPress网站 - 倚栏听风-Morii - 博客园 可以看到&#xff0c;无论是宝塔还是1Panel&#xff0c;部署和管理WordPress都有些繁琐&#xff0c;而且还需要额外去配置Nginx和M…

网络安全问题概述

1.1.计算机网络面临的安全性威胁 计算机网络上的通信面临以下的四种威胁&#xff1a; (1) 截获——从网络上窃听他人的通信内容。 (2) 中断——有意中断他人在网络上的通信。 (3) 篡改——故意篡改网络上传送的报文。可应用于域名重定向&#xff0c;即钓鱼网站。 (4) 伪造——伪…

视觉顶会论文 | 基于Swin Transformer的轴承故障诊断

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

Altenergy电力系统控制软件 status_zigbee SQL注入漏洞复现(CVE-2024-11305)

0x01 产品简介 Altenergy电力系统控制软件是Altenergy Power System推出的一款专业软件。旨在为用户提供全面、高效、安全的电力系统控制解决方案。广泛应用于各类电力系统领域,如电力调度中心、发电厂、变电站、工业园区等。通过该软件的应用,用户可以实现对电力系统的全面…

java: spire.pdf.free 9.12.3 create pdf

可以用windows 系统中文字体&#xff0c;也可以从文件夹的字体文件 /*** encoding: utf-8* 版权所有 2024 ©涂聚文有限公司* 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎* 描述&#xff1a;* # Author : geovindu,Geovin Du 涂…

AUTOSAR网络管理中的主动唤醒与被动唤醒

文章目录 1、主动/被动唤醒源、主动/被动唤醒节点2、网络拓扑说明 1、主动/被动唤醒源、主动/被动唤醒节点 休眠唤醒需要有一个触发源来进行触发&#xff0c;我们常用的NM报文是其中的载体之一。休眠唤醒的触发源又分为主动唤醒源和被动唤醒源。 主动唤醒源&#xff0c;就是能…

索贝融媒体 Sc-TaskMonitoring/rest/task/search SQL注入漏洞复现

0x01 产品简介 索贝融媒体产品是成都索贝数码科技股份有限公司(简称索贝)为各级电视台和媒体机构打造的一套集互联网和电视融合生产的解决方案。其代表产品为MCH2.0融合媒体生产业务系统,该系统带来了媒体领域一种全新的融合生产流程和工作机制,具有全方位的资源汇聚能力、…

【PyTorch】Pytorch中torch.nn.Conv1d函数详解

1. 函数定义 torch.nn.Conv1d 是 PyTorch 中用于一维卷积操作的类。定义如下&#xff1a; 官方文档&#xff1a;https://pytorch.ac.cn/docs/stable/generated/torch.nn.Conv1d.html#torch.nn.Conv1d torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride1,paddi…

[大数据]Trino

Trino安装部署-CSDN博客 Central Repository: io/trino/trino-server 下载地址: repo1.maven.org/maven2/io/trino/Central Repository: io/trino/trino-serverhttps://repo1.maven.org/maven2/io/trino/trino-server/ vim /etc/security/limits.conf * soft nofile 131072…

三种复制只有阅读权限的飞书网络文档的方法

大家都知道&#xff0c;飞书是一款功能强大的在线协作工具&#xff0c;可以帮助团队更高效地协作和沟通。越来越多的资料都在使用飞书文档&#xff0c;在使用飞书的过程中&#xff0c;发现很多文档没有复制权限&#xff0c;如果想要摘抄笔记&#xff0c;只能一个字一个字地敲出…

HTML5拖拽API学习 托拽排序和可托拽课程表

文章目录 前言拖拽API核心概念拖拽式使用流程例子注意事项综合例子&#x1f330; 可拖拽课程表拖拽排序 前言 前端拖拽功能让网页元素可以通过鼠标或触摸操作移动。HTML5 提供了标准的拖拽API&#xff0c;简化了拖放操作的实现。以下是拖拽API的基本使用指南&#xff1a; 拖拽…

缓冲区的奥秘:解析数据交错的魔法

目录 一、理解缓存区的好处 &#xff08;一&#xff09;直观性的理解 &#xff08;二&#xff09;缓存区的好处 二、经典案例分析体会 &#xff08;一&#xff09;文件读写流&#xff08;File I/O Buffering&#xff09; BufferedOutputStream 和 BufferedWriter 可以加快…