vue实现点击某个dom元素之外的方法

news/2024/7/10 0:32:40 标签: vue

在项目开发中搜索按钮点击出现搜索框内容,这个时候点击搜索框以外的内容,搜索框隐藏掉,如下所示:
1、源码
在这里插入图片描述

2、实现点击其他区域搜索框内容隐藏,如下:
在这里插入图片描述

document.addEventListener('click', (e) => {
   if (this.$refs.showPanel) {
     let isSelf = this.$refs.showPanel.contains(e.target)
     if (!isSelf) {
       this.searchbox = false
     }
   }
 })

实现原理:
①、首先用ref来定义一个点击区域的范围
②、监听点击事件,点击的时候如果包含ref元素则返回true,否则返回false(即不包含的时候隐藏属性)


http://www.niftyadmin.cn/n/1770310.html

相关文章

vue实现回到顶部功能

废话不多说&#xff0c;先来上代码 <template><div class"backtop-wrapper" v-if"btnFlag"><p click"backTop"><img src"/assets/img/backtop.png" alt""></p></div> </template&g…

vue 多行超出显示省略号 打包后-webkit-box-orient:vertical属性被移除导致失效

1、在vue项目中有时候会有固定多少行超出显示点点的需求&#xff0c;实现代码如下&#xff1a; .info{overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 4;-webkit-box-orient: vertical;}2、测试环境正常&#xff0c;但是build打包之后就…

视频标签video属性讲解

<videoid"video" src"video.mp4" controls "true"poster"images.jpg" /*视频封面*/preload"auto" webkit-playsinline"true" /*这个属性是ios 10中设置可以让视频在小窗内播放&#xff0c;也就是不是全屏播放…

h5页面与原生ios交互

app中有的是用h5页面来实现的&#xff0c;这个时候就避免不了与原生去交互。交互的方式 ①、系统原生的方式 &#xff08;我们项目中使用的&#xff09; ②、用第三方库WebViewJavascriptBridge &#xff08;比较早了&#xff0c;一直没有更新维护&#xff09; ios使用原生的方…

什么是promise?promise的作用是什么?

什么是promise&#xff1f; 1、主要用于异步计算 2、可以将异步操作队列化&#xff0c;按照期望的顺序执行&#xff0c;返回符合预期的结果 3、可以在对象之间传递和操作promise&#xff0c;帮助我们处理队列 为什么会有promise 为了避免界面冻结&#xff08;任务&#xff0…

Promise.all和Promise.race的使用

一、Promise.all的使用 Promise.all可以将多个promise实例包装成一个新的promise实例。同时&#xff0c;成功和失败的返回值是不同的&#xff0c;成功的时候返回的是一个数组&#xff0c;失败的时候返回最先reject失败状态的值。 let p1 new Promise((resolve, reject) >…

axios是什么?为什么要进行二次封装?

一、axios Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中。 用法demo: ①、get请求 axios.get(/user?ID12345).then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});①、post请求 axios.pos…

vue-cli初始化项目

初始化项目时首先要弄清楚vue-cli的版本 一、3.0以下版本命令 1、首先安装vue-cli&#xff0c;输入命令&#xff1a; cnpm install -g vue-cli2、初始化项目&#xff0c;输入命令 vue init webpack my-project二、3.0以上版本&#xff08;推荐使用&#xff09; 1、首先安装vu…