首先,本人在项目动态加载图片是根据点击图片名称来获取图片所在地址,从而使其打开一个新的窗口显示图片的。这里根据每个人的也许需求进行更改(要么就是在本页面底下打开要么就是新建一个窗口打开),不做探讨。

这里先介绍一下HTML界面,只有两个<div>标签,如下:

<div class="preview-scene" data-dojo-attach-point="previewScene" id="previewScene">
<div class="preview-scene-data" data-dojo-attach-point="previewSceneData" id="previewSceneData"> </div>
</div>
previewScene指的是预览的总界面;previewSceneData指的是具体的预览照片放的位置。
接下来就是创建预览功能了。如下:_createPreview: function(fileRoute){ var container = this.previewSceneData;
    var imgContainer;
html.empty(container);
var fileType = fileRoute.split(".");
var hzm = fileType[fileType.length - 1];
//根据传过来的类型判定是图片还是文件创建
if(hzm === "jpg" || hzm === "jpeg" || hzm === "png" || hzm === "gif" || hzm === "bmp"|| hzm === "tiff"|| hzm === "JPG"|| hzm === "JPEG"|| hzm === "PNG"|| hzm === "BMP" || hzm === "TIFF"){
imgContainer = domCon.create('img',{src: fileRoute, style:'width: 560px; height:420px;position: absolute;left: 0; top: 0; right: 0; bottom: 0; margin:auto; display: block;cursor:pointer;'}, container);
} else if(hzm === "docx" || hzm === "doc" || hzm === "pdf" || hzm === "xls" || hzm === "xlsx" || hzm === "txt" || hzm === "DOCX" || hzm === "DOC" || hzm === "PDF" ) {
domCon.create('iframe',{src: fileRoute, style:'width: 560px; height:420px; margin: 0 auto; display: block'}, container);
} else {
alert("您的文件类型不支持预览!");
}
on(imgContainer,'mousewheel', lang.hitch(this, function(e){
this._change(e, imgContainer);
}));
}, _change: function (e, imgContainer) {
var e = window.event || e;
var oper = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));//wheelDelta和detail
imgContainer.style.width = Math.max(80, Math.min(imgContainer.width*3, imgContainer.width + (80 * oper))) + "px";
imgContainer.style.height = Math.max(60, Math.min(imgContainer.height*3, imgContainer.height + (60 * oper))) + "px";
return false;
}, 解释:fileRoute指图片所在的具体地址,用于放在创建的img标签中的src;container 指的是这个HTML中的data-dojo-attach-point;
那么实现放大缩小功能靠的是_change方法,这个方法监听着动态创建的imgContainer的‘mousewheel’事件。当鼠标滚轮发生滚动的时候,触发_change事件,然后再_change事件里定义
imgContainer的新的宽度和高度,并设置最小宽度和高度。
图片由中心进行缩小和放大,主要是要将图片置于外边框的中心,使其垂直和水平都居中,如设置它的
style:'width: 560px; height:420px;position: absolute;left: 0; top: 0; right: 0; bottom: 0; margin:auto;
首先设置其高宽,再把position设为absolute,top、left、right、bottom均设为0,margin改为auto即可。

dojo动态生成图片并按中心缩放的更多相关文章

  1. 在WPF里面实现以鼠标位置为中心缩放移动图片

    原文:在WPF里面实现以鼠标位置为中心缩放移动图片 在以前的文章使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果里面,介绍了如何在WPF里面移动和放大缩小图片, ...

  2. HttpHandler动态生成图片

    1.向服务器请求返回图片,浏览器是不知道服务上有这个图片的存在的,只是发出请求,接收请求,显示图片 string path = context.Server.MapPath("~/1.jpg ...

  3. 动态生成图片 保存到OutputStream

    #region 把图片Copy到输出流 //获得图片全路径 string path = context.Server.MapPath("~/img/158_003.jpg"); / ...

  4. CSS3图片以中心缩放,放大超出隐藏实现

    首页,重点是有一个包裹img标签的容器,这里我们给该容器设置一个class为selfScale <div class="selfScale"> <img sr=& ...

  5. wp8.1 学习笔记 001 动态生成图片 并更改图片位置

    1.在xaml中划分表格 <Grid Name="gr"> <Grid.ColumnDefinitions> <ColumnDefinition> ...

  6. java 根据图片文字动态生成图片

    今天在做热敏打印机打印二维码,并有文字描述,想到的简单的方法就是根据热敏打印机的纸张宽度和高度,生成对应的图片,如下: package com.orisdom.utils; import lombok ...

  7. ASP.NET动态生成图片样式的验证码

    我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑客软件的恶意破解. 在此我就直接放置一个网页链接,以后用的时候可以当做备忘! 此连接中有多种验证码图片的样式可供参考. http://www ...

  8. laya 下以光标为中心缩放对象

    private MouseWheel(e: Laya.Event) { console.log("event"); let currentSp = e.target as Laya ...

  9. ThinkPHP5 动态生成图片缩略图

    需求场景 不同终端(PC端.手机端.平板),不同界面(列表页.详情页),对图片大小的要求不一样, 如果所有场景下都使用同一尺寸的图片,势必对会网络带宽及服务器性能造成一定的影响,由此需要服务器端能够根 ...

随机推荐

  1. 基于Linux-3.9.4内核的GDB跟踪系统调用实验

    382 + 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 一.实验环境 win10 -> VMware -> Ubuntu1 ...

  2. Python_day_01

    python                                                       (1024程序员节) 语言分为很多种,但是如果要想和计算机交流,就必须知道计算 ...

  3. keepalived.conf配置说明

    vim /etc/keepalived/keepalived.conf配置信息如下! Configuration File for keepalived global_defs { notificat ...

  4. axios delete

  5. js/php判断移动端还是PC端

    if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobi ...

  6. maven 项目pom文件引入lib下的jar包

    <dependency> <groupId>abc</groupId> <artifactId>abc</artifactId> <v ...

  7. 18.21 关键字extern

    用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字? 1.头文件 其实头文件对计算机而言没什么作用,只是在预编译时在#include的地方展开一下,没别的意义了.将头 ...

  8. log4j-over-slf4j和slf4j-log4j12冲突问题解决

    解决办法: 两个jar包会循环引用导致内存溢出.解决的办法就是将两个jar包其中一个的依赖移除掉

  9. truffle init 从零开始创建简单DApp项目

    下面的部分软件需要FQ.这里默认你已经会***,不懂的可以自己搜索解决. 软件安装 chrome浏览器 下载地址 metamask插件 在谷歌应用商店中搜索metamask ganche(图形版) 下 ...

  10. Jquery Mobile 让错误提示可在后台控制显示内容

    在jquery.mobile-1.4.5.min.js的5254行找到下面代码 return $.proxy(function( xhr, textStatus, errorThrown ) { 然后 ...