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

磨床 东莞网站建设网站seo优化分析

磨床 东莞网站建设,网站seo优化分析,美妆网站建设方案,企业做网站分一般为哪几种类型文章目录 前言代码解析 Vue3使用示例 Vue3vue2 写法 前言 在前端开发中,我们常常会遇到需要检测用户是否点击了某个元素外部的场景,比如弹出框在用户点击外部时需要关闭。接下来我们来封装一个 clickOutside 自定义指令 代码解析 Vue3 import { Direc…

文章目录

      • 前言
      • 代码解析 Vue3
      • 使用示例 Vue3
      • vue2 写法

前言

在前端开发中,我们常常会遇到需要检测用户是否点击了某个元素外部的场景,比如弹出框在用户点击外部时需要关闭。接下来我们来封装一个 clickOutside 自定义指令

代码解析 Vue3

import { Directive } from 'vue';// 定义 ClickOutside 指令类型
const clickOutside: Directive<HTMLElement, () => void> = {// 当指令绑定到元素并插入到 DOM 中时调用mounted(el: HTMLElement, binding) {// 定义事件处理函数,类型注解表明它接收一个 MouseEvent 类型的参数const handler = (event: MouseEvent) => {// 判断点击的目标元素是否不在绑定指令的元素内部if (!el.contains(event.target as Node)) {// 调用绑定指令时传入的回调函数binding.value();}};// 给 document 添加 click 事件监听器document.addEventListener('click', handler);// 将事件处理函数存储在元素的自定义属性上,方便后续移除监听器el.__clickOutsideHandler = handler;},// 当指令所绑定的元素从 DOM 中移除时调用unmounted(el: HTMLElement) {// 移除之前添加到 document 上的 click 事件监听器document.removeEventListener('click', el.__clickOutsideHandler);// 删除元素上存储的事件处理函数属性delete el.__clickOutsideHandler;},
};export default clickOutside;

使用示例 Vue3

<template><div class="index"><div class="box"><div>举个例子</div><div class="more" @click="moreClick">···</div><divclass="more-box"v-if="moreShow"v-click-outside="handleClickOutside"><div>干嘛呢</div><div>干嘛呢</div><div>干嘛呢</div><div>干嘛呢</div></div></div></div>
</template><script setup lang="ts">
import { ref, Directive } from "vue";const moreShow = ref(false);function moreClick(event: any) {console.log("更多被戳了一下");moreShow.value = !moreShow.value;event.stopPropagation();
}function handleClickOutside() {moreShow.value = false;
}
</script><style scoped lang="scss">
.index {overflow: hidden;
}.box {width: 300px;height: 160px;border: 1px solid #00000055;border-radius: 10px;padding: 10px;margin: 100px;position: relative;
}.more {cursor: pointer;text-align: center;width: 30px;height: 30px;position: absolute;top: 10px;right: 10px;
}.more-box {position: absolute;right: -20px;width: 90px;border: 1px solid #00000055;border-radius: 10px;background: #ffffff;padding: 10px 0px;div {line-height: 36px;text-align: center;}
}
</style>

在这里插入图片描述

vue2 写法

const clickOutside = {// 当指令第一次绑定到元素时调用,在这里进行初始化设置bind: function (el, binding) {// 定义事件处理函数,用于处理 document 的 click 事件const handler = function (event) {// 判断点击的目标元素是否不在绑定指令的元素内部if (!el.contains(event.target)) {// 调用绑定指令时传入的回调函数binding.value();}};// 给 document 添加 click 事件监听器document.addEventListener('click', handler);// 将事件处理函数存储在元素的自定义属性上,方便后续移除监听器el.__clickOutsideHandler = handler;},// 当指令与元素解绑时调用,在这里进行清理工作unbind: function (el) {// 移除之前添加到 document 上的 click 事件监听器document.removeEventListener('click', el.__clickOutsideHandler);// 删除元素上存储的事件处理函数属性delete el.__clickOutsideHandler;}
};export default clickOutside;
http://www.dtcms.com/wzjs/66045.html

相关文章:

  • 嘉兴网站设计999 999怎么做网页宣传
  • 专业网站建设是哪家商丘关键词优化推广
  • 做网络传销网站犯法吗搜索引擎优化seo培训
  • 萝岗做网站seo技术培训岳阳
  • 连云港网站开发聚合搜索引擎接口
  • 兰州网站做的好点的公司西安百度关键词排名服务
  • 网站建设备案优化设宁波seo怎么做推广渠道
  • 网站中英文版怎么做百度网盘提取码入口
  • wordpress ip排行榜seo是指什么意思
  • xml做网站源码发布平台
  • 重庆做网站嘉兴公司关于网络营销的方法
  • 网站被模仿百度爱采购平台官网
  • 创建网站的向导和模板 信息技术教资面试电商培训机构哪家强
  • 如何登录网站备案搜索排名
  • 高校网站群建设的公司有哪些关键词优化推广排名
  • 谷歌网站的主要内容友情网
  • 天津网站制作网页搜索引擎优化举例说明
  • 上海 网站开发 工作室营销方式有哪些
  • 网站模仿算侵权吗推广营销大的公司
  • 深圳美食教学网站制作网络整合营销方案
  • 湖南省建设厅城乡建设网站seo网站关键词快速排名
  • 温江建设局网站网站seo价格
  • 黑客网站网址排行榜哪个网站最好
  • 新站seo竞价seo快速收录快速排名
  • 遂宁市住房与城乡建设厅网站谷歌seo是什么职业
  • 做网站 做手机app要学什么网站seo批量查询工具
  • 全球网站建设品牌seo入门培训班
  • .net网站开发实训代码新疆今日头条新闻
  • 做网站还是软件整站优化提升排名
  • 山西住房建设厅官方网站口碑营销5t