首页 > 其他分享 >一个基础的vue图片放大镜自定义指令

一个基础的vue图片放大镜自定义指令

时间:2023-05-22 19:14:24浏览次数:35  
标签:el style vue const 自定义 放大镜 px magnifier event

<template>   <div>     <div v-magnify ref="content" class="content">       <img src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg" alt="">     </div>   </div> </template>
<script> export default {   directives: {     magnify: {       bind(el, bindings, vnode) {         let magnifier         function handleMouseMove(event) {           magnifier.style.left = `${event.offsetX}px`           magnifier.style.top = `${event.offsetY}px`           const backgroundPositionX = -event.offsetX + 'px'           const backgroundPositionY = -event.offsetY / 2 + 'px'           magnifier.style.transform = 'scale(1.4)'           magnifier.style.backgroundPosition = `${backgroundPositionX} ${backgroundPositionY}`         }
        vnode.context.$nextTick(() => {           magnifier = document.createElement('div')           magnifier.className = 'magnifier'           el.appendChild(magnifier)           magnifier.style.display = 'none'         })
        el.addEventListener('mousemove', handleMouseMove)
        el.addEventListener('mouseenter', () => {           const imgTag = el.querySelector('img')           magnifier.style.backgroundImage = `url(${imgTag.src})`           magnifier.style.display = 'block'         })
        el.addEventListener('mouseleave', () => {           magnifier.style.display = 'none'         })       }     }   } } </script>
<style>
.magnifier {   position: absolute;   width: 200px;   height: 200px;   border: 1px solid #ccc;   z-index: 999;   background-color: rgba(255, 255, 255, 0.5); } .content{     height:800px;   width: 800px; } img{   width: 100%;   height: 100%; } </style>

标签:el,style,vue,const,自定义,放大镜,px,magnifier,event
From: https://www.cnblogs.com/truegrit/p/17421468.html

相关文章

  • VUE入门
    什么是Vue?Vue(发音为/vjuː/,类似 view)是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue都可以胜任。vue的两大核心声明式渲染:Vue......
  • vue3遇到的问题集合
    1.vue3打包设置 2.vue3路由配置history 3.vue3屏蔽eslint ......
  • 记Perfeye自定义项实现对比需求
    记Perfeye自定义项实现对比需求背景Perfyeye平台很早就支持对比功能了,但是支持的模块不全,需求方现在想要支持自定义列的需求对比功能,用来显示多份报告之间的差异以及性能趋势。刚接到这个需求的时候,我想,这不就是简简单单CV复制一下老代码的逻辑,改改相应字段就可以了,30分钟也......
  • vue3 左侧菜单栏默认展开关闭
    <el-menuclass="mainMenu"routerbackground-color="transparent"active-text-color="#fff":unique-opened="true":collapse-transition="false"......
  • vue中实现文件上传下载的三种解决方案(推荐)
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • Vue3+Vite部署到Netlify
    前言本项目的前端是使用Vue3技术。因为用到了Vite做代理解决跨域问题,所以部署到Netlify需要多做一些步骤。使用Vite代理后,如果前端是在本地部署,需要添加VITE_PROXY环境变量。例如在.env.development文件中添加VITE_PROXY=[["/api/v1","https://xx.naihe.me/api/v1"],["/ws",......
  • 【vue流程编辑器框架】Vue-Flowchart-Editor
    前言:不管是OA系统常见的审批流程图还是业务流程图,前端经常会遇到一些流程编辑器的业务场景,分享一个我举得好用的vue组件:Vue-Flowchart-Editor:一个基于Vue的流程图编辑器组件,支持创建、编辑和展示流程图,具有可拖拽节点、连接线、自动布局等功能。 官网地址:https://git......
  • 在Windows Server 2022中使用Microsoft Deployment Toolkit(MDT)时,可使用Rules(规则)文件
    在WindowsServer2022中使用MicrosoftDeploymentToolkit(MDT)时,可使用Rules(规则)文件来配置和自定义部署过程。以下是常见的Rules参数及其描述:UserDomain:指定要加入的域的名称。UserID和UserPassword:指定加入域所需的管理员帐户凭据。TimeZoneName:指定安装期间使用的时区。Jo......
  • Vue 单组件入门
    Vue基础入门一、Vue脚手架1.简介Vue的脚手架(VueCLI:CommandLineInterface)是Vue官方提供的标准化开发平台。它可以将我们.vue的代码进行编译生成htmlcssjs代码,并且可以将这些代码自动发布到它自带的服务器上,为我们Vue的开发提供了一条龙服务。脚手架官网地址:ht......
  • vue用qrcodejs2生成二维码,解决多个二维码追加的问题
    vue使用qrcodejs2生成二维码1、安装qrcodejs2npminstallqrcodejs2 2、代码//这个div用来展现二维码<divid="twoImageId"></div>//生成二维码的方法generateQRCode(classId,value){ newQRCode(document.querySelector(classId),{ text:value, width:......