Vue3.0 手写放大镜效果


Posted in Vue.js onJuly 25, 2021

需要实现的效果是: 固定放大两倍,鼠标进入到左侧图片区域的时候,遮罩层显示,离开时,遮罩层隐藏。

Vue3.0 手写放大镜效果

 

鼠标跟随效果如何实现: (子绝父相)绝对定位 +  修改top,left控制移动 

在@vueuse中,有一个工具方法:useMouseInElement

<template>
  <div ref="target">
    <h1>Hello world</h1>
  </div>
</template>
 
<script>
import { ref } from 'vue'
import { useMouseInElement } from '@vueuse/core'
 
export default {
  setup() {
    const target = ref(null)
 
    const { x, y, isOutside } = useMouseInElement(target)
 
    return { x, y, isOutside }
  }
}
</script>

这是VueUse 官网上的用法,最后,别忘了return { target } 我一开始没return target,x,y,isOutside的值是 0,0,false,并不是变化的值。

鼠标的位置和遮罩的位置之间的关系: 

Vue3.0 手写放大镜效果 

<div class="layer" :style="layerStyle"></div> //这是遮罩层
setup(){   //下面是实现鼠标跟随的代码
const layerStyle = reactive({
      top: '0px',
      left: '0px'
    })
    // 监听三个值的变化,watch第一个参数用数组
    watch([elementX, elementY, isOutside], () => {
      // layerStyle.left = elementX.value / 2 + 'px'
      // layerStyle.top = elementY.value / 2 + 'px'
      let top = elementY.value - 100
      let left = elementX.value - 100
 
      // 给遮罩元素赋值位置
      if (top < 0) top = 0
      if (top > 200) top = 200
      if (left < 0) left = 0
      if (left > 200) left = 200
      layerStyle.top = top + 'px'
      layerStyle.left = left + 'px'
    })
    return { elementX, elementY, isOutside, target, layerStyle }
 
}

遮罩区域不能超出左侧的父盒子,上面有两行是我注释掉的代码,为什么合起来写不行呢,因为后面我需要加判断时,会发现判断完之后  加px的时候,你会发现无从下手,上面这种分开写的话,top,left 只是一个数值,等计算完成后,再加单位。 

 Vue3.0 手写放大镜效果Vue3.0 手写放大镜效果

放大效果如何实现:  

css 样式里面有个 background-size属性,第一个参数指宽度,第二个参数指高度,可以放大图片

本身是 400 *400,那放大两倍就是 800*800

css 样式里面的 background-position-x, background-position-y 可以放大指定区域

关于background-position: x,y   第一个值是水平位置,第二个值是垂直位置

 这是右侧具有放大效果的div:

<div class="large" :style="{ backgroundImage:`url(${images[current]})`,...largeStyle }"></div>

Vue3.0 手写放大镜效果

这是css代码,可以参考一下: 

.large {
   position: absolute;
    top: 0;
    left: 412px;
    width: 400px;
    height: 400px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
    background-repeat: no-repeat;
    background-size: 800px 800px;
    background-color: #f8f8f8;
 }

最后: 当鼠标移出左侧盒子区域,遮罩隐藏,右侧放大的盒子也隐藏

useMouseInElement的isOutSide属性可以监测到是否超出监测元素,v-show="!isOutSide" 即可

到此这篇关于Vue3.0 手写放大镜效果的文章就介绍到这了,更多相关Vue3.0 手写放大镜效果内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue-router定义元信息meta操作
Dec 07 Vue.js
Vue实现点击当前行变色
Dec 14 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
vue-cli4.5.x快速搭建项目
May 30 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 Vue.js
vue项目多环境配置(.env)的实现
Vue Element-ui表单校验规则实现
Jul 09 #Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 #Vue.js
Vue项目打包、合并及压缩优化网页响应速度
idea编译器vue缩进报错问题场景分析
Vue实现导入Excel功能步骤详解
Vue图片裁剪组件实例代码
You might like
处理单名多值表单的详解
2013/06/08 PHP
Laravel日志用法详解
2016/10/09 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
python列表的常用操作方法小结
2016/05/21 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
django 多数据库配置教程
2018/05/30 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python画双y轴图像的示例代码
2019/07/07 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
Python如何读取文件中图片格式
2020/01/13 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
C#怎么让一个窗口居中显示?
2015/10/20 面试题
网络维护中文求职信
2014/01/03 职场文书
村委会贫困证明
2014/01/14 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
《白鹅》教学反思
2014/04/13 职场文书
毕业评语大全
2014/05/04 职场文书
个人四风问题整改措施
2014/10/24 职场文书
交流会主持词
2015/07/02 职场文书
欢迎新生标语2015
2015/07/16 职场文书
大学生军训感言
2015/08/01 职场文书
Oracle锁表解决方法的详细记录
2022/06/05 Oracle