vant 图片放大预览(vue3)

最近在写移动端的时候要实现图片放大预览的功能,当时用的是vant,原本想的是直接用vant里面的组件来实现放大预览,后面仔细找了一下发现没有找到这个功能(可能是我没找到),后面想到了用遮罩层来实现放大预览。

1,了解van-overlay

        这是vant的遮罩层组件,最高层级,可以显示在最顶部,实现对页面进行遮挡。

<van-overlay :show="show" @click="show = false"><div class="wrapper" @click.stop><div class="block" /></div>
</van-overlay>

        这是官方的写法,通过插槽在遮罩里面添加自己定义的内容,我们需要的就是把官方定义的内容替换成我们自己的内容。

2,遮罩打开或关闭

        通过组件的:show属性来控制打开或者关闭,我们在vue3组件中定义好show,来控制遮罩的展示或者隐藏。

  const show= ref<Boolean>(false)

3.点击图片时修改show,控制打开

    给图片添加点击事件,事件绑定的函数里将show设置为true,以实现点击图片打开遮罩

        html代码

          <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white" :show-indicators="false"><van-swipe-item v-for="(item_img, index) in item" :key="index" @click="popup(item_img)"><img :src="item_img" class="achievement_carousel_img" /></van-swipe-item></van-swipe>

        js 

    const popup = (link) => {show.value = trueimglink.value = link  //点击图片时获取图片地址,然后将地址将遮罩里的图片替换。}

4.在遮罩里面通过插槽定义好图片

        在插槽里写入img标签,标签的src赋值图片变量,在我们点击图片时,将图片获取到,并替换成之前的图片变量。

        遮罩层代码

      <van-overlay :show="show" @click="show = false" style="z-index: 9999;" class="popbox" lock-scroll><img :src="imglink" alt="" class="popimg"></van-overlay>

        这时候就能实现点击图片时放大图片了,同时,遮罩层可以直接用css代码定义样式。

5,兼容性问题

       放大图片是完成了,这时候要考虑的就是兼容性问题了,我用的是postcss-px-to-viewport作为适配方案,将px等比例转为vw,这时候要考虑的就是,假设,我图片原本的尺寸是755x1000,这时候因为设计稿是320的宽,所以原本的图片要压缩到755的宽,然后在等比例的将高也压缩到合适的比例,这个的问题也解决了。后续看你们使用的是什么兼容方案,稍微转换下就成。

export default  {plugins: {'postcss-px-to-viewport': {unitToConvert: 'px',  // 需要转换的单位,默认为"px"viewportWidth: 320, //  设计稿的视口宽度unitPrecision: 5, // 单位转换后保留的精度propList: ['*'], // 能转化为vw的属性列表viewportUnit: 'vw', //  希望使用的视口单位fontViewportUnit: 'vw', // 字体使用的视口单位selectorBlackList: [], // 需要忽略的CSS选择器 '.el','el'minPixelValue: 0.01, // 最小的转换数值,如果为1的话,只有大于1的值会被转换mediaQuery: false, // 媒体查询里的单位是否需要转换单位replace: true, // 是否直接更换属性值,而不添加备用属性exclude: [/node_modules/,/\/pages\/mobile\//], // 忽略某些文件夹下的文件或特定文件include: undefined,  // 如果设置了include,那将只有匹配到的文件才会被转换,例如只转换 'src/mobile' 下的文件 (include: /\/src\/mobile\//)landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)landscapeUnit: 'vw' // 横屏时使用的单位}}}

7.效果

中间的图片通过flex布局来实现上下居中,其他的就不用管了,思路是这样,算是简单的实现图片预览了吧,对于移动端来说,图片位置转换没有啥意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

捕获野生的登录页,暴改Vue3

1.实现效果 2.Vue组件 <script setup> import {onMounted} from "vue";onMounted(()>{// getAllData() }) </script><template><div class"login"><div class"form-cont"><div class"form-top"&…

全面解析自然语言处理(NLP):基础、挑战及应用前景

自然语言处理 (NLP) 简介与应用前景 自然语言处理&#xff08;NLP&#xff09;是人工智能和计算语言学的一个分支&#xff0c;致力于使计算机能够理解、解释和生成人类语言。这篇博文将深入探讨自然语言处理的基础知识、挑战、典型任务及其广泛的应用前景。 一、自然语言处理的…

Linux服务器上安装CUDA11.2和对应的cuDNN 8.4.0

一、检查 检查本机是否有CUDA工具包&#xff0c;输入nvcc -V: 如图所示&#xff0c;服务器上有CUDA&#xff0c;但版本为9.1.85&#xff0c;版本过低&#xff0c;因此博主要重装一个新的。 二、安装CUDA 1.查看服务器最高支持的CUDA版本 在命令行输入nvidia-smi查看显卡驱动…

秋招季的策略与行动指南:提前布局,高效备战,精准出击

6月即将进入尾声&#xff0c;一年一度的秋季招聘季正在热火进行中。对于即将毕业的学生和寻求职业发展的职场人士来说&#xff0c;秋招是一个不容错过的黄金时期。 秋招的序幕通常在6月至9月间拉开&#xff0c;名企们纷纷开启网申的大门。在此期间&#xff0c;求职备战是一个系…

【ai】 梳理一下yolov4及 trition部署的心路历程

yolov4是darknetv5开始逐渐采用pytorchjetson上部署darknet比较直接因此这里采用的是yolov4 版本。isarsoft/yolov4-triton-tensorrt1. 2024-06-20 : 2.17.0 在jetson4.6 上可以跑 2.17版本server 在 jetson 运行 ./tritonserver --model-repository=…/docs/examples/model_r…

2.linux操作系统CPU使用率和平均负载区别

目录 概述cpu使用率区别 结束 概述 linux操作系统CPU 使用率 和 平均负载 区别 负载高并不一定使用率高&#xff0c;有可能 cpu 被占用&#xff0c;但不干活。 cpu使用率 cpu使用率&#xff1a;cpu非空闲态运行的时间占比&#xff0c;反映cpu的繁忙程度&#xff0c;和平均负载…

使用Vue3和Tailwind CSS快速搭建响应式布局

### 第一部分&#xff1a;初始化Vue3项目并安装Tailwind CSS 首先&#xff0c;在你的开发环境中打开终端&#xff0c;然后通过Vue CLI来创建一个新的Vue3项目。输入如下命令&#xff1a; vue create my-vue-app 按照提示选择Vue3的相关选项&#xff0c;创建完毕后&#xff0…

Flask模板和wtforms

Flask模板和wtforms 一、模板 在 Jinja2 模板引擎中&#xff0c;可以使用各种功能来渲染变量、进行循环和逻辑判断&#xff0c;这与 Django 的模板系统有很多相似之处&#xff0c;但也存在一些差异。 1.渲染变量 在 Jinja2 中&#xff0c;可以通过使用双大括号 {{ }} 来渲染…

python编程题2

1. 编写函数isodd(x)&#xff0c;若x不是整数&#xff0c;给出提示后退出程序&#xff1b;如果x为奇数&#xff0c;返回True&#xff0c;如果x为偶数&#xff0c;返回False。 def isodd(x):if int(x)!x:print("x不是整数&#xff0c;程序退出")returnelif x//2 ! x/…

如何使用VScode创建和上传Arduino项目

Visual Studio Code &#xff08;VS Code&#xff09; 是一种非常流行的通用集成开发环境 &#xff08;IDE&#xff09;。IDE 是一种将文本编辑器、编程界面、调试视图和项目管理集成在一个地方的软件。这个开源项目由微软领导&#xff0c;可以在所有操作系统上运行。使 VS Cod…

如何在CSS中设置px值

在CSS中设置px&#xff08;像素&#xff09;值非常简单。px是CSS中最常用的长度单位之一&#xff0c;用于指定元素的大小、位置、间距等。 以下是一些示例&#xff0c;展示如何在CSS中使用px值&#xff1a; 设置元素宽度和高度 css复制代码 .box { width: 200px; /* 设置元素…

8-Pandas iteration遍历

Pandas iteration遍历 遍历是众多编程语言中必备的一种操作&#xff0c;比如 Python 语言通过 for 循环来遍历列表结构。那么 Pandas 是如何遍历 Series 和 DataFrame 结构呢&#xff1f;我们应该明确&#xff0c;它们的数据结构类型不同的&#xff0c;遍历的方法必然会存在差…

介绍两个压测工具pgbench\sysbench,可视化监控工具NMON

性能评估做不好&#xff0c;开会又领导点名叼了。/(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~ 挨叼了&#xff0c;也要写文章&#xff0c;记录下我的笔记。 写篇文章 对数据库、OS性能的性能评估&#xff0c;需要选择合适的压测工具&#xff0c;给找出数据库的运行瓶颈 pgbench 这是…

AI音乐的何去何从

引言 在过去的一个月里&#xff0c;多个先进的音乐生成大模型相继上线。这些AI模型不仅降低了普通人创作音乐的门槛&#xff0c;还在音乐圈内引发了关于AI是否会彻底颠覆传统音乐创作的广泛讨论。在短暂的兴奋过后&#xff0c;人们开始理性地审视这些AI产品的版权归属问题&…

【图像超分辨率】一个简单的总结

文章目录 图像超分辨率(Image Super-Resolution, ISR)1 什么是图像超分辨率&#xff1f;2 图像超分辨率通常有哪些方法&#xff1f;&#xff08;1&#xff09;基于插值的方法&#xff08;2&#xff09;基于重建的方法&#xff08;3&#xff09;基于学习的方法&#xff08;LR im…

Leetcode 78 数组子集

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1…

docker拉取Redis

拉取Redis redis的读写分离&#xff1a;https://blog.csdn.net/qq_51076413/article/details/123462448 Java整合Jedis&#xff1a;https://blog.csdn.net/qq_51076413/article/details/123462857 Java整合Redis&#xff1a;https://blog.csdn.net/qq_51076413/article/details…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-46语义分割和数据集

46语义分割和数据集 # 图像分割和实例分割 """ 图像分割将图像划分为若干组成区域&#xff0c;这类问题的方法通常利用图像中像素之间的相关性。 它在训练时不需要有关图像像素的标签信息&#xff0c;在预测时也无法保证分割出的区域具有我们希望得到的语义。 图…

企业im(即时通讯)作为安全专属的移动数字化平台的重要工具

企业IM即时通讯作为安全专属的移动数字化平台的重要工具&#xff0c;正在越来越多的企业中发挥着重要的作用。随着移动技术和数字化转型的发展&#xff0c;企业对于安全、高效的内部沟通和协作工具的需求也越来越迫切。本文将探讨企业IM即时通讯作为安全专属的移动数字化平台的…

JAVA学习笔记-JAVA基础语法-DAY19-File类、递归

第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示&#xff0c;主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) &#xff1a;通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(St…