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

Vue实现图片点击隐藏效果

时间:2023-03-20 23:47:12浏览次数:39  
标签:Vue img show jpg 点击 属性 隐藏 图片

一   创建一个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值进行绑定。

三  实现效果分析

1.点击事件判断,给图片添加v-show属性通过@clike取反操作改变v-show的值来控制图片的展示与隐藏。v-show值默认设置为true即图片展示,当v-show属性值为false时将隐藏img节点展示背景图,由于v-show值为flase时,将隐藏我们的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 上

六.附加样式效果:

七.图片用ps切片10x10,并保存为web形式,并在vue的data属性下创建一个图片路径的数组,用excel表格下拉和记事本完成效果,效果如下:

八.最终效果如下:

九.完整代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>点击照片</title>
        <script src="js/vue.js" type="text/javascript"></script>
    </head>
    <style>
        .content{
            margin: 0 auto;
            width: 810px;
            height: 810px;
            border: 1px solid orchid;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
        }
        #item{
            height: 80px;
            width: 80px;
            background-color: goldenrod;
        }
        img{
            width: 80px;
            height: 80px;
        }
    </style>
    <body>
        <div id="app">
            <div class="content">
                <aaa v-for="im in image" v-bind:bbb = "im"></aaa>
            </div>
        </div>
    </body>
    <template id="test1">
        <div id="item" @click="change">
            <img :src="bbb" v-show="show" />
        </div>
    </template>
    <script>
        Vue.component("aaa",{template:"#test1",
        props:["bbb"],
        data:function(){
            return{
                show:true,
            }
        },
            methods:{
                change:function(){
                    this.show = !this.show
                }
            },
        });
        var vm = new Vue({
            el:"#app",
            data:{
                image:["img/_01.jpg",    "img/_02.jpg",    "img/_03.jpg",    "img/_04.jpg",    "img/_05.jpg",    "img/_06.jpg",    "img/_07.jpg",    "img/_08.jpg",    "img/_09.jpg",    "img/_10.jpg",    "img/_11.jpg",    "img/_12.jpg",    "img/_13.jpg",    "img/_14.jpg",    "img/_15.jpg",    "img/_16.jpg",    "img/_17.jpg",    "img/_18.jpg",    "img/_19.jpg",    "img/_20.jpg",    "img/_21.jpg",    "img/_22.jpg",    "img/_23.jpg",    "img/_24.jpg",    "img/_25.jpg",    "img/_26.jpg",    "img/_27.jpg",    "img/_28.jpg",    "img/_29.jpg",    "img/_30.jpg",    "img/_31.jpg",    "img/_32.jpg",    "img/_33.jpg",    "img/_34.jpg",    "img/_35.jpg",    "img/_36.jpg",    "img/_37.jpg",    "img/_38.jpg",    "img/_39.jpg",    "img/_40.jpg",    "img/_41.jpg",    "img/_42.jpg",    "img/_43.jpg",    "img/_44.jpg",    "img/_45.jpg",    "img/_46.jpg",    "img/_47.jpg",    "img/_48.jpg",    "img/_49.jpg",    "img/_50.jpg",    "img/_51.jpg",    "img/_52.jpg",    "img/_53.jpg",    "img/_54.jpg",    "img/_55.jpg",    "img/_56.jpg",    "img/_57.jpg",    "img/_58.jpg",    "img/_59.jpg",    "img/_60.jpg",    "img/_61.jpg",    "img/_62.jpg",    "img/_63.jpg",    "img/_64.jpg",    "img/_65.jpg",    "img/_66.jpg",    "img/_67.jpg",    "img/_68.jpg",    "img/_69.jpg",    "img/_70.jpg",    "img/_71.jpg",    "img/_72.jpg",    "img/_73.jpg",    "img/_74.jpg",    "img/_75.jpg",    "img/_76.jpg",    "img/_77.jpg",    "img/_78.jpg",    "img/_79.jpg",    "img/_80.jpg",    "img/_81.jpg",    "img/_82.jpg",    "img/_83.jpg",    "img/_84.jpg",    "img/_85.jpg",    "img/_86.jpg",    "img/_87.jpg",    "img/_88.jpg",    "img/_89.jpg",    "img/_90.jpg",    "img/_91.jpg",    "img/_92.jpg",    "img/_93.jpg",    "img/_94.jpg",    "img/_95.jpg",    "img/_96.jpg",    "img/_97.jpg",    "img/_98.jpg",    "img/_99.jpg",    "img/_100.jpg"]
            }
        });
    </script>
</html>    

标签:Vue,img,show,jpg,点击,属性,隐藏,图片
From: https://www.cnblogs.com/zhm99999/p/17238428.html

相关文章

  • 【vue3+ts+elementplus】 大文件分片上传,断点续传,秒传 示例
    大文件分片上传,断点续传,秒传示例一文网尽关于大文件(分片)上传你需要知道的所有前置知识点1.html代码<template> <divclass="cardcontent-box"> <el-uploadref="up......
  • Vue——vue2错误处理收集【七】
    前言在initEvents中发现的有意思的东西,就是Vue针对Error的处理,说实话之前压根没在意过Vue是如何收集处理Error的;errorHandler:https://v2.cn.vuejs.org/v2/api#er......
  • #yyds干货盘点#Vue3中的expose函数
    发现expose函数今天在看setupscript语法糖的时候发现有说到context上的​​expose​​​函数,然后就查了一下这个函数,发现是在setRef中被使用到,源码中在对ref的value赋值时......
  • vue-element-admin安装趟坑
    1、下载源码2、执行npminstall--registry=https://registry.npm.taobao.org如果遇到"gitls-remote-h-t"之类的错误,执行以下代码:gitconfig--globalurl."htt......
  • 每天上一当系列之vue修饰符.number
    今天使用number修饰符去处理el-input的内容为数字做校验原本以为省事不少,没想到,为0开头无法输入第二位以后,并且输入的比较多的时候会出现Infinity很神奇,网上查了说是eleme......
  • 定位、opacity透明度属性、visibility和display隐藏元素
    定位、opacity透明度属性、visibility和display隐藏元素1.定位position(确定的是移动的基准)static,默认值。静态的。(不让动)relative,相对。相对于自身的位置来移动......
  • Vue 2
    Vue2.0一、Vue基础入门(一)、Vue简介1、什么是Vue​ 官方给出的概念:Vue(读音/vjuː/,类似于view)是一套用于构建用户界面的前端框架。2、Vue特性​ vue框架的特性......
  • vue2 - 好用的markdown开源编辑器
    mavonEditor:https://github.com/hinesboy/mavonEditor VueQuillEditor:https://www.kancloud.cn/liuwave/quill/1434140//main.js使用markdown插件importVueQuillEd......
  • Vue3+element-plus图片上传剪裁组件
    userAvatar.vue<template><divclass="user-info-head"@click="editCropper()"><img:src="options.img"title="点击上传头像"class="img-circleimg-lg"/>......
  • vue3 v-model取代vue2 .sync(个人使用记录)
    例子:封装el-pagination组件<scriptlang="ts"setup>import{computed}from"vue";constemit=defineEmits<{(e:'update:pageSize',pageSize:number):void//p......