首页 > 其他分享 >Vue实现图片点击隐藏效果

Vue实现图片点击隐藏效果

时间:2023-03-18 20:33:06浏览次数:40  
标签:Vue img show gif 点击 隐藏 图片

前言:组件作为Vue.js最强大的功能之一,因其封装可复用的代码方便程序员调用和可根据需求对组件进行个性化开发而深受广大前端程序员的喜爱。组件化的开发大大提升了代码的复用性,提升了项目开发效率,本文主要制作一个简易的小组件用来实现图片的点击翻转效果。

实现效果:

界面效果分析:

1.基本框架,创建盒子盛放界面

2. 点击事件,点击图片浏览器交互产生翻转效果

3. 图片翻转,点击图片消失再次点击出现

实现流程:

一   创建一个web项目,本地导入vue.js

    创建一个包含HTML基本项目的Web项目,在js文件下下导入本地的Vue.js文件,通过<script src="js/vue.js"></script> 将Vue.js文件引入到我们的Web项目中。

 

二  实例化Vue对象 ,挂载Vue所绑定的DOM节点

    在界面中通过引入<script>标签,并在<script>标签中实例化Vue对象。实例化对象后通过el属性将我们对象所需要挂载DOM节点的id值进行绑定。注:先创建DOM节点然后进行绑定。

 

三  实现效果分析

1.点击事件判断,给图片添加v-show属性通过@clike改变v-show的值,因为v-show属性值为false时将隐藏img节点导致我们无法进行再次点击进行值转换,所以要将@clike给盛放img的盒子,用盒子进行占位来实现再次点击翻转效果。

2. 用盒子盛放图片。给图片添加v-show属性通过属性值变换用来控制图片是否显示,给盒子添加背景实现图片的隐藏,当我们点击时隐藏img展现为盒子的背景图片再次点击展现图片。

四  创建组件

 

 

 

 

 

五 组件中存在的不足之处及改进思路

1.在template中图片的路径问题。img路径为固定值,当我们再次调用组件时不能进行值传递,代码的复用性太差

2. 组件使用时。路径固定不能修改当图片较多时需要重复调用组件,代码冗余。

改进思路:

1.创建一个数组用来存放图片路径,当图片较多时在数组中添加图片路径即可

2.增添v-for属性,用for循环遍历数组中的元素即可确定创建个数

3.增添v-bind属性接收传递的值,v-for 循环遍历创建数组中的每一个元素然后将获取到的值传递给v-bind属性

4.给src添加动态绑定属性,v-bind所获取到的值通过动态绑定将拿到的每一项的 src 值绑定给 img 标签的 src 上

具体实施

 

六 完整代码展示

 

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script src="js/vue.js"></script>
 7         <style>
 8             #app {
 9                 display: flex;
10                 flex-wrap: wrap;
11                 justify-content: space-around;
12                 width: 1010px;
13                 height: 610px;
14                 margin: 0 auto;
15             }
16 
17             .item {
18                 width: 100px;
19                 height: 60px;
20                 background-color: #ccc;
21             }
22 
23             img {
24                 width: 100px;
25                 height: 60px;
26             }
27         </style>
28         <noscript></noscript>
29     </head>
30     <body>
31         <div id="app">
32             <long v-for="img in arrayimg" v-bind:im="img"></long>
33 
34         </div>
35 
36     </body>
37 
38     <template id="around">
39         <div class="item" @click="change">
40             <img :src="im" v-show="show" />
41         </div>
42 
43 
44     </template>
45 
46     <script type="text/javascript">
47         Vue.component("long", {
48             template: "#around",
49             props: ["im"],
50             data: function() {
51                 return {
52                     show: true,
53 
54                 }
55             },
56             methods: {
57                 change: function() {
58                     this.show = !this.show
59                 }
60             }
61 
62         });
63 
64         var vm = new Vue({
65             el: "#app",
66             data: {
67                 arrayimg: ["img/1 (1).gif", "img/1 (2).gif", "img/1 (3).gif", "img/1 (4).gif", "img/1 (5).gif",
68                     "img/1 (6).gif", "img/1 (7).gif", "img/1 (8).gif", "img/1 (9).gif", "img/1 (10).gif",
69                     "img/1 (11).gif", "img/1 (12).gif", "img/1 (13).gif", "img/1 (14).gif", "img/1 (15).gif",
70                     "img/1 (16).gif", "img/1 (17).gif", "img/1 (18).gif", "img/1 (19).gif", "img/1 (20).gif",
71                     "img/1 (21).gif", "img/1 (22).gif", "img/1 (23).gif", "img/1 (24).gif", "img/1 (25).gif",
72                     "img/1 (26).gif", "img/1 (27).gif", "img/1 (28).gif", "img/1 (29).gif", "img/1 (30).gif",
73                     "img/1 (31).gif", "img/1 (32).gif", "img/1 (33).gif", "img/1 (34).gif", "img/1 (35).gif",
74                     "img/1 (36).gif", "img/1 (37).gif", "img/1 (38).gif", "img/1 (39).gif", "img/1 (40).gif",
75                     "img/1 (41).gif", "img/1 (42).gif", "img/1 (43).gif", "img/1 (44).gif", "img/1 (45).gif",
76                     "img/1 (46).gif", "img/1 (47).gif", "img/1 (48).gif", "img/1 (49).gif", "img/1 (50).gif",
77                     "img/1 (51).gif", "img/1 (52).gif", "img/1 (53).gif", "img/1 (54).gif", "img/1 (55).gif",
78                     "img/1 (56).gif", "img/1 (57).gif", "img/1 (58).gif", "img/1 (59).gif", "img/1 (60).gif",
79                     "img/1 (61).gif", "img/1 (62).gif", "img/1 (63).gif", "img/1 (64).gif", "img/1 (65).gif",
80                     "img/1 (66).gif", "img/1 (67).gif", "img/1 (68).gif", "img/1 (69).gif", "img/1 (70).gif",
81                     "img/1 (71).gif", "img/1 (72).gif", "img/1 (73).gif", "img/1 (74).gif", "img/1 (75).gif",
82                     "img/1 (76).gif", "img/1 (77).gif", "img/1 (78).gif", "img/1 (79).gif", "img/1 (80).gif",
83                     "img/1 (81).gif", "img/1 (82).gif", "img/1 (83).gif", "img/1 (84).gif", "img/1 (85).gif",
84                     "img/1 (86).gif", "img/1 (87).gif", "img/1 (88).gif", "img/1 (89).gif", "img/1 (90).gif",
85                     "img/1 (91).gif", "img/1 (92).gif", "img/1 (93).gif", "img/1 (94).gif", "img/1 (95).gif",
86                     "img/1 (96).gif", "img/1 (97).gif", "img/1 (98).gif", "img/1 (99).gif", "img/1 (100).gif"
87                 ]
88             }
89         });
90     </script>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

标签:Vue,img,show,gif,点击,隐藏,图片
From: https://www.cnblogs.com/d1102/p/17231643.html

相关文章

  • ## react和vue的区别
     react和vue对比,选型问题:1.(切入点dom操作)都有一个特点,不进行dom操作就能操作页面了,原生开发中dom操作是昂贵的,改变页面就必须操作dom,vue和react都使用虚拟dom实......
  • Vue2入门之超详细教程三-初识模板语法
    1、简介模板语法就是按照固定的模板去书写代码,分为插值语法和指令语法。差值语法:功能:用于解析标签体内容写法:{{xxxx}},xxx是js表达式,且可以读取......
  • vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度
    vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度Author:zhoulujun Date:2023-03-06 Hits:5解决文本溢出,鼠标悬浮展示tooltips,要解决2大难题。第一个是解决文本宽......
  • vue2升级vue3:vue-i18n国际化异步按需加载
    vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage但是本文还是详细说一遍:为什么需要异步加载语言包主要还是缩......
  • vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度
    vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度Author:zhoulujun Date:2023-03-06 Hits:5解决文本溢出,鼠标悬浮展示tooltips,要解决2大难题。第一个是解决文......
  • Vue组件翻转照片
    使用Vue及自定义组件完成10x10图片表格的点击效果TOP:实现这样翻转照片的效果......
  • 使用Vue自定义组件完成10×10图片表格的点击效果
    1.创建一个web项目,使用<script>引入Vue.js代码如下:<scripttype="text/javascript"src="js/vue.js"></script> 2.创建vue实例<divid="app"></div><scrip......
  • Vue.js 插件
    视频插件功能:用于增强Vue本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。定义插件:对象.install=function......
  • Vue.js mixin混入
    视频mixin(混入)功能:可以把多个组件共用的配置提取成一个混入对象使用方式:第一步定义混合:{data(){....},methods:{....}....}第二步使用混入:......
  • Vue.js props配置(微信收款确认流程)
    视频直接修改外来数据props会产生警告props配置项1.功能:让组件接收外部传过来的数据2.传递数据:```<Demoname="xxx"/>```3.接收数据:1.第一种方式(只接收......