当前位置: 首页 > wzjs >正文

开网站做代发上海培训机构整顿

开网站做代发,上海培训机构整顿,错题网站开发,网页与网站的区别完整代码 使用VUE3、TS&#xff0c;实现将图片通过鼠标拖拽缩放以及选择缩放比例。 <template><div><el-dialogv-model"dialogVisible"title"查看图片":close-on-click-modal"false":close-on-press-escape"false"fu…

完整代码

使用VUE3、TS,实现将图片通过鼠标拖拽缩放以及选择缩放比例。

<template><div><el-dialogv-model="dialogVisible"title="查看图片":close-on-click-modal="false":close-on-press-escape="false"fullscreenstyle="overflow: hidden;"><div style="margin-bottom: 10px;"><el-selectv-model="magnification"placeholder="请选择图片放大尺寸"size="large"style="width: 240px"@change="changePicSize"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"/></el-select></div><div class="img_area" ref="container" @wheel.prevent="handleWheel"@mousemove="handleDrag"@mouseup="endDrag"@mouseleave="endDrag"><img :style="imageStyle" class="auto-scale-image" :src="props.imgSrc" ref="image"@mousedown="startDrag"draggable="false"/></div><template #footer></template></el-dialog></div>
</template>
<script lang='ts' setup>// 显隐设置const props = defineProps<{modelValue: boolean,imgSrc:any}>()const emit = defineEmits<{(e: 'update:modelValue', value: boolean): void}>()const dialogVisible = computed({get: () => props.modelValue,set: (value) => emit('update:modelValue', value)})let magnification = $ref(null) as anylet options = [{value: 0.1,label: '0.1',},{value: 1,label: '1',},{value: 2,label: '2',},]const translate = ref({ x: 0, y: 0 });const scale = ref(1);const isDragging = ref(false);const container = ref<HTMLDivElement | null>(null);const step = ref(0.1)const minScale = ref(0.1) const maxScale = ref(3) const imageStyle = computed(() => ({transform: `scale(${scale.value}) translate(${translate.value.x}px, ${translate.value.y}px)`,transformOrigin: 'center center',cursor: isDragging.value ? 'grabbing' : 'grab'}));// 处理鼠标滚轮缩放const handleWheel = (e: WheelEvent) => {if (!container.value) return;const delta = e.deltaY > 0 ? -step.value : step.value;const newScale = Math.max(minScale.value, Math.min(maxScale.value, scale.value + delta));// 计算缩放中心点const rect = container.value.getBoundingClientRect();const mouseX = e.clientX - rect.left;const mouseY = e.clientY - rect.top;// 计算缩放后的偏移量,使鼠标位置保持相对不变const scaleRatio = newScale / scale.value;translate.value = {x: translate.value.x * scaleRatio + (1 - scaleRatio) * (mouseX - rect.width / 2 - translate.value.x),y: translate.value.y * scaleRatio + (1 - scaleRatio) * (mouseY - rect.height / 2 - translate.value.y)};scale.value = newScale;};// 响应式状态const image = ref<HTMLImageElement | null>(null);const startPos = ref({ x: 0, y: 0 });// 开始拖拽const startDrag = (e: MouseEvent) => {if (e.button !== 0) return; // 只响应左键isDragging.value = true;startPos.value = {x: e.clientX - translate.value.x,y: e.clientY - translate.value.y};e.preventDefault();};// 处理拖拽const handleDrag = (e: MouseEvent) => {if (!isDragging.value) return;let newX = e.clientX - startPos.value.x;let newY = e.clientY - startPos.value.y;translate.value = { x: newX, y: newY };};// 结束拖拽const endDrag = () => {isDragging.value = false;};// 通过选择器改变图片大小const changePicSize = () => {scale.value = magnification;centerImage();}// 居中图片const centerImage = () => {if (!container.value) return;const imageContainer = container.value;imageContainer.scrollLeft = (imageContainer.scrollWidth - imageContainer.clientWidth) / 2;imageContainer.scrollTop = (imageContainer.scrollHeight - imageContainer.clientHeight) / 2;};
</script>
<style scope lang="less">.img_area{width: 100%;height: calc(100vh - 130px);text-align: center;.auto-scale-image{max-width: 100%;max-height: 100%;object-fit: contain; /* 保持宽高比 */}}
</style>
http://www.dtcms.com/wzjs/532252.html

相关文章:

  • 响应式网站设计布局甘肃网站推广
  • 企业门户网站管理制度优化大师电脑版下载
  • 旅游网站建设色彩搭配表成都网站制作维护
  • 公司地址怎么免费上地图兰州seo公司
  • 电脑制作网站用哪个软件seo自动工具
  • 在哪里可以改动网站标题中国市场营销网网站
  • 打开网站显示建设中广州网站优化公司排名
  • 淘宝做导航网站好google play store
  • 可以做音基题的音乐网站上海网络优化seo
  • 建设一中校园网站今日头条网站推广
  • 网站改版的前端流程教育培训机构官网
  • p2p网站建设广州seo结算系统
  • 长春网站排名优化公司全国疫情高峰时间表最新
  • 做公司网站的资料搜索关键词怎么让排名靠前
  • 免费网站建设论文百度竞价排名系统
  • 宣城市城乡建设委员会网站广东seo网站推广代运营
  • 政府网站建设经验材料范文百度指数排名热搜榜
  • 企业网站建设心得免费b站推广网站入口2020
  • 做请帖的网站淘宝站外引流推广方法
  • 好的建筑设计网站冯站长之家官网
  • 重庆主页网站建设收录查询
  • 北京网站代理备案互联网推广软件
  • 网站开发李沛杰推广策略有哪些方法
  • 国内包装设计网站海外网站推广的公司
  • 阿里备案成功后怎么做网站谷歌seo搜索优化
  • 3d建模视频教学台州seo排名优化
  • 网站推广方式组合网上做推广怎么收费
  • 家具网站建设比较好的百度app首页
  • 只做同城交易的网站石家庄最新新闻事件
  • 东凤镇做网站公司百度官方推广平台