dojo动态生成图片并按中心缩放
首先,本人在项目动态加载图片是根据点击图片名称来获取图片所在地址,从而使其打开一个新的窗口显示图片的。这里根据每个人的也许需求进行更改(要么就是在本页面底下打开要么就是新建一个窗口打开),不做探讨。
这里先介绍一下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动态生成图片并按中心缩放的更多相关文章
- 在WPF里面实现以鼠标位置为中心缩放移动图片
原文:在WPF里面实现以鼠标位置为中心缩放移动图片 在以前的文章使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果里面,介绍了如何在WPF里面移动和放大缩小图片, ...
- HttpHandler动态生成图片
1.向服务器请求返回图片,浏览器是不知道服务上有这个图片的存在的,只是发出请求,接收请求,显示图片 string path = context.Server.MapPath("~/1.jpg ...
- 动态生成图片 保存到OutputStream
#region 把图片Copy到输出流 //获得图片全路径 string path = context.Server.MapPath("~/img/158_003.jpg"); / ...
- CSS3图片以中心缩放,放大超出隐藏实现
首页,重点是有一个包裹img标签的容器,这里我们给该容器设置一个class为selfScale <div class="selfScale"> <img sr=& ...
- wp8.1 学习笔记 001 动态生成图片 并更改图片位置
1.在xaml中划分表格 <Grid Name="gr"> <Grid.ColumnDefinitions> <ColumnDefinition> ...
- java 根据图片文字动态生成图片
今天在做热敏打印机打印二维码,并有文字描述,想到的简单的方法就是根据热敏打印机的纸张宽度和高度,生成对应的图片,如下: package com.orisdom.utils; import lombok ...
- ASP.NET动态生成图片样式的验证码
我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑客软件的恶意破解. 在此我就直接放置一个网页链接,以后用的时候可以当做备忘! 此连接中有多种验证码图片的样式可供参考. http://www ...
- laya 下以光标为中心缩放对象
private MouseWheel(e: Laya.Event) { console.log("event"); let currentSp = e.target as Laya ...
- ThinkPHP5 动态生成图片缩略图
需求场景 不同终端(PC端.手机端.平板),不同界面(列表页.详情页),对图片大小的要求不一样, 如果所有场景下都使用同一尺寸的图片,势必对会网络带宽及服务器性能造成一定的影响,由此需要服务器端能够根 ...
随机推荐
- 发送ajax步骤
1.创建异步对象 一般命名为xhr var xhr = new XMLHttpRequest(); 2. 设置请求行 open(请求方式,请求url) 1.get 需要在url后 ...
- 在Ubuntu15.10中,使用wxPython的webview和JS进行交互
在Ubuntu下进行wxPython开发,因为需求,所以使用了wxPython的webview和JS的交互. 在Windows下,下图显示的代码可以正常的运行,但是在Ubuntu下进行开发,以下的代码 ...
- C语言题库----指针
1.如果f是一个函数,请说明 f() 和f的意思. f是函数的地址,f()是函数 2.怎样理解数组的下标运算? 先偏移,后取址. 3.int *p,*q; int a[]={10,20,30,40}; ...
- C++中的内部类
1.内部类的概念 如果一个类定义在另一个类的内部,这个内部类就叫做内部类.注意此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去调用内部类.外部类对内部类没有任何优越的访问权限. ...
- Yii2 设计模式——Yii2 中用到哪些设计模式?
Yii 2 设计模式“包含了两个方面的内容:1. 设计模式,2. Yii 2 框架. <设计模式>一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在 ...
- 1.1.27 word表格里的文字不显示
1.问题: 下载其他人做的表格后,在表格内打字,字不显示. 2.解决方案: 产生这种问题的原因是,该表格设置的字体,你的电脑未安装. a.将隐藏文字选中,设为[宋体]或其他已经安装字体. b.下载[方 ...
- OpenStack搭建Q版只属于计算节点上的环境准备(step6)
配置NTP服务 1.安装chronyd yum install chrony -y 2.修改配置文件,使计算节点与控制节点同步时间 vim /etc/chrony.conf 注释掉下面四行: #ser ...
- ningx.conf location
server { listen ; server_name localhost; location /dirName { alias "C:/Users/VALEB/Downloads/in ...
- 前端学习之jquery(二)
操作元素(属性,css,文档处理) 1.1 属性操作 --------------------------属性 $("").attr(); $("").remo ...
- 内存泄漏学习案例-1-ArrayList
解决 内存泄漏 于是赶快登陆探测服务器,首先是 top free df 三连,结果还真发现了些异常. 我们的探测进程 CPU 占用率特别高,达到了 900%. 我们的 Java 进程,并不做大量 CP ...