Vue2全局与局部组件封装

ops/2024/10/31 1:14:08/

目录

一、PC兼容移动【全】

二、自定义鼠标右键【局】

一、PC兼容移动【全】

<template v-if="!$isMobile"><!-- PC端原本展示内容 -->
</template><!-- 用$isMobile部署移动端展示部分,一般是三角形按钮滑过显示全部【以查询条件为例】 -->
<el-popover placement="bottom" title="" width="270" trigger="click"><template v-if="$isMobile"><!-- H5端展示内容 --></template><el-button slot="reference" size="small" :icon="'el-icon-caret-bottom'" type="primary"> </el-button>
</el-popover>

在main.js里写入:

javascript">const initVue = () => {// 这个函数返回一个布尔值:表示当前窗口的宽度是否小于或等于1100像素const isMobile = () => window.innerWidth <= 1100// Vue.util.defineReactive:将一个对象的属性变为响应式的,当属性的值发生变化时,视图会自动更新// 在Vue的原型上定义了一个响应式属性$isMobileVue.util.defineReactive(Vue.prototype, '$isMobile', isMobile())// 将$isMobile属性的值更新为isMobile()函数的最新返回值window.addEventListener('resize', () => {Vue.prototype.$isMobile = isMobile()})new Vue({store,router,render: (h) => h(App)}).$mount('#app')
}initVue()

二、自定义鼠标右键【局】

首先要去掉鼠标原有的右键功能,再将自定义的页面赋给右击事件

<template><div @contextmenu.prevent="rightClick">右键</div><right-menu ref="rightMenu" @change="rightChange" />
</template>
<script>
import RightMenu from './rightMenu.vue'
export default {components: { RightMenu },methods: {rightClick(e) {this.$refs.rightMenu.setPosition({x: e.clientX,y: e.clientY,el: e})},rightChange(code) {//根据自己业务需求调整if (code === 'check_all') {this.selection = this.tableData.map((item) => item)} else if (code === 'copy_id') {this.copyId(this.selection)} else {this.selection = []}},}
}
</script>

自定义rightMenu.vue组件:

<template><div v-if="show" ref="right_menu" class="right_menu"><button @click="$emit('change', 'check_all')" :disabled="isSelectAll">全部选择</button><button @click="$emit('change', 'clear_check')">取消选择</button><button @click="$emit('change', 'copy_id')" v-if="isShowId">复制选中ID</button><button v-show="isImg" @click="copyImage">复制图片</button></div>
</template>
<script>
export default {data() {return {show: false,text: '',row: null,el: null,isImg: false}},props: {isSelectAll: {type: Boolean},isShowId: {type: Boolean,default: true}},methods: {close() {this.show = falsedocument.body.onclick = null},async copyImage() {if (this.el.target.nodeName === 'IMG') {const testImg = this.el.targetconst newImg = document.createElement('img')newImg.src = testImg.src.replace(/-\d+\.(png|jpg|jpeg)$/i, '.$1')document.body.appendChild(newImg)const selection = window.getSelection()//清除选中if (selection.rangeCount > 0) selection.removeAllRanges()// https://developer.mozilla.org/zh-CN/docs/Web/API/Document/queryCommandSupportedif (!document.queryCommandSupported('copy'))return alert('浏览器暂不支持复制命令')//创建range区域const range = document.createRange()range.selectNode(newImg)selection.addRange(range)document.execCommand('copy')selection.removeAllRanges()this.$message.success('复制成功')} else {this.$message.success('复制失败')}},setPosition(o) {console.log(o)this.show = truelet clientX = o.xthis.text = o.tthis.row = o.rowthis.el = o.ellet x = document.body.clientWidth - clientXlet _this = thisif (this.el.target.nodeName === 'IMG') {this.isImg = true} else {this.isImg = false}document.body.onclick = function () {_this.close()}setTimeout(() => {if (x < 150) {this.$refs.right_menu.style.cssText = `top:${o.y}px;right:${x}px`} else {this.$refs.right_menu.style.cssText = `top:${o.y}px;left:${o.x}px`}}, 1)}}
}
</script>
<style scoped>
.right_menu {position: fixed;max-width: 200px;min-height: 50px;background: #fff;box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);border-radius: 5px;overflow: hidden;z-index: 999;top: -500px;
}
.right_menu button {display: block;line-height: 30px;font-size: 14px;padding: 0 15px;text-align: left;width: 100%;cursor: pointer;
}
.right_menu button:hover {background: rgb(65, 192, 251);color: white;
}
</style>

【待更新......】


http://www.ppmy.cn/ops/129353.html

相关文章

华为原生鸿蒙操作系统:我国移动操作系统的新篇章

华为原生鸿蒙操作系统&#xff1a;我国移动操作系统的新篇章 引言 在移动操作系统领域&#xff0c;苹果iOS和安卓系统一直占据主导地位。然而&#xff0c;随着华为原生鸿蒙操作系统的正式发布&#xff0c;这一格局正在发生深刻变化。作为继苹果iOS和安卓系统后的全球第三大移动…

HTML的总结作业

作业1 参照图使用表格定位表单。 参考代码 <!DOCTYPE html> <html> <head> <meta charset"utf-8"/> <title></title> </head> <body> <form action""> …

分体式智能网关在现代电力物联网中的优势有哪些?

随着电力系统的不断数字化和智能化&#xff0c;电力物联网已经成为现代电力行业发展的重要方向。电力物联网通过各种智能设备和传感器实现电力系统的监测、数据采集和分析&#xff0c;从而优化电力资源配置&#xff0c;提高电网的安全性和稳定性。在这个背景下&#xff0c;&quo…

RHCE的练习(7)

https/443 概念解释 &#xff08;1&#xff09;https简介 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。 HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果攻击者截取了Web浏览器和网站服务器之间的传输报文&#xff…

【AI绘画】Midjourney进阶:对角线构图详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;什么是构图为什么Midjourney要使用构图 &#x1f4af;对角线构图特点应用场景提示词书写技巧测试 &#x1f4af;小结 &#x1f4af;前言 【AI绘画】Midjourney进阶&a…

计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 用到的技术: 1. python…

【SQL】SQL函数

&#x1f4e2; 前言 函数 是指一段可以直接被另一段程序调用的程序或代码。主要包括了以下4中类型的函数。 字符串函数数值函数日期函数流程函数 &#x1f384; 字符串函数 ⭐ 常用函数 函数 功能 CONCAT(S1,S2,...Sn) 字符串拼接&#xff0c;将S1&#xff0c;S2&#xff0…

大数据-193 Apache Tez - DAG 作业计算框架 核心解释 工作原理 配置集成

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…