【vue3】js + css 实现 视频框选放大:局部细节放大、放大镜效果

warning: 这篇文章距离上次修改已过201天,其中的内容可能已经有所变动。

在Vue 3中,你可以使用JavaScript和CSS来实现视频框选放大的效果,具体可以通过监听鼠标事件来实现放大镜效果。以下是一个简单的示例:




<template>
  <div class="video-container">
    <video
      ref="video"
      class="video"
      src="your-video-url.mp4"
      @mousemove="handleMouseMove"
      @mouseleave="resetVideo"
    ></video>
    <div
      v-show="isMoving"
      class="magnifier"
      :style="{ top: magnifierTop + 'px', left: magnifierLeft + 'px }"
    ></div>
  </div>
</template>
 
<script setup>
import { ref, onMounted, watch } from 'vue';
 
const video = ref(null);
const isMoving = ref(false);
const magnifier = ref(null);
const magnifierSize = 100; // 放大镜的大小
const videoRect = ref(null);
 
// 鼠标移动事件处理函数
const handleMouseMove = (event) => {
  if (!video.value) return;
  videoRect.value = video.value.getBoundingClientRect();
  const x = event.clientX - videoRect.value.left;
  const y = event.clientY - videoRect.value.top;
 
  // 设置放大镜的位置
  magnifier.value.style.top = `${y - magnifierSize / 2}px`;
  magnifier.value.style.left = `${x - magnifierSize / 2}px`;
 
  isMoving.value = true;
};
 
// 鼠标离开事件处理函数
const resetVideo = () => {
  isMoving.value = false;
};
 
onMounted(() => {
  // 创建放大镜元素
  magnifier.value = document.createElement('div');
  magnifier.value.classList.add('magnifier');
  video.value.parentNode.appendChild(magnifier.value);
});
</script>
 
<style scoped>
.video-container {
  position: relative;
  display: inline-block;
}
.video {
  width: 300px; /* 视频宽度 */
  height: 200px; /* 视频高度 */
  background-color: #000;
}
.magnifier {
  position: absolute;
  width: 100px; /* 放大镜宽度 */
  height: 100px; /* 放大镜高度 */
  background-color: rgba(255, 255, 255, 0.5);
  border: 1px solid #fff;
  cursor: none; /* 隐藏鼠标指针 */
  contain: strict; /* 确保放大镜内容不被浏览器自动缩放 */
}
</style>

在这个示例中,我们创建了一个视频播放器和一个放大镜元素。当鼠标在视频上移动时,通过监听mousemove事件来更新放大镜的位置,并显示放大镜。当鼠标离开视频区域时,通过监听mouseleave事件来隐藏放大镜。CSS 负责样式设置,包括视频容器、视频元素和放大镜的样式。

请根据你的具体需求调整视频的URL、视频尺寸和放大镜的大小。这个示例提供了一个基本的局部放大效果,你可以根据需要添加更多的视频处理逻辑,比如局部放大算法、边界检查等。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日