放大 - 缩小无法正常工作
Zoom In - Out doesn´t work correctly
我已经实现了 3 个按钮来允许用户放大、缩小和返回默认大小。
该脚本可以放大和缩小,但我仍然有 2 个问题无法解决。
第一个问题:
每次放大时,要缩放的图像仍然会到达我的窗口的极限,当图像在左右没有任何空间时,它会将图像拉伸到顶部和底部。
第二个问题:我无法将按钮上的 onclick 处理程序设置为默认大小。
我希望有人能帮我一把。
小提琴
我的代码:
.HTML:
<div id="thediv">
<img id="pic" src="images/2.png"/>
</div>
<input type="button" value ="-" onclick="zoom(0.9)" id="minus"/>
<input type="button" value ="+" onclick="zoom(1.1)" id="plus"/>
<input type="button" value ="1" onclick="zoom(1.1)" id="1" style="margin-left:80px;position:fixed;bottom:0px;"/>
.CSS:
#thediv {
margin:0 auto;
height:auto;
width:1005;
overflow:hidden;
}
#thediv img {
position: relative;
left: 50%;
top: 50%;
}
#minus{position:fixed;bottom:0px}
#plus{position:fixed;bottom:0px;margin-left:40px;}
Javascript:
window.onload = function(){zoom(1)}
function zoom(zm) {
img=document.getElementById("pic")
wid=img.width
ht=img.height
img.style.width=(wid*zm)+"px"
img.style.height=(ht*zm)+"px"
img.style.marginLeft = -(img.width/2) + "px";
img.style.marginTop = -(img.height/2) + "px";
}
HTML
<div id="thediv">
<img id="pic" src="http://cdn.crunchify.com/wp-content/uploads/2012/10/java_url.jpg" />
</div>
<button type="button" id="minus">-</button>
<button type="button" id="plus">+</button>
<button type="button" id="reset">1</button>
我已经删除了 JavaScript 中button
的onclick
和绑定的事件侦听器。
JavaScript
// For the "reset" (1) button to work, you must store the default size somewhere
var defaultWidth = document.getElementById("pic").width;
var defaultHeight = document.getElementById("pic").height;
var resetZoom = function () {
var img = document.getElementById('pic');
img.width = defaultWidth;
img.height = defaultHeight;
};
var zoom = function (zm) {
'use strict';
var img = document.getElementById("pic");
img.width *= zm;
img.height *= zm;
};
document.getElementById('minus').addEventListener('click', function () {
zoom(0.9);
}, false);
document.getElementById('plus').addEventListener('click', function () {
zoom(1.1);
}, false);
document.getElementById('reset').addEventListener('click', function () {
resetZoom();
}, false);
我添加了
resetZoom()
函数,它的工作方式与zoom()
不同。我还简化了
zoom()
函数以直接修改width
和height
HTMLImageElement
的属性。如果你愿意,你可以添加更花哨的东西(style
和东西(。下面的三个事件侦听器绑定到按钮以触发
click
事件上的函数。在这种情况下,它分别执行zoom
和resetZoom
。
参见 jsFiddle。
试试这个!
由于您在脑海中执行所有操作,因此我添加了一个onload
函数而不是您的window.onload
,这不起作用。我还添加了一个toDefault
功能,可以将图像恢复到原始大小/位置
更新的网页
<body>
<div id="thediv">
<img onload='load()' id="pic" src="http://cdn.crunchify.com/wp-content/uploads/2012/10/java_url.jpg" />
</div>
<input type="button" value="-" onclick="zoom(0.9)" id="minus" />
<input type="button" value="+" onclick="zoom(1.1)" id="plus" />
<input type="button" value="Default" onclick="toDefault()" id="one" style="position:fixed;bottom:0px;margin-left:80px" />
</body>
更新的脚本
var origHeight, origWidth;
function load () {
var image = document.getElementById("pic");
origHeight = image.offsetHeight + 'px',
origWidth = image.offsetWidth + 'px';
}
function toDefault() {
var image = document.getElementById("pic");
image.style.height = origHeight;
image.style.width = origWidth;
image.style.marginLeft = -(image.width / 2) + "px";
};
function zoom(zm) {
var img = document.getElementById("pic"),
wid = img.width,
ht = img.height;
img.style.width = (wid * zm) + "px"
img.style.height = (ht * zm) + "px"
img.style.marginLeft = -(img.width / 2) + "px";
//img.style.marginTop = -(img.height / 2) + "px";
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- 最大高度转换不;不工作,工作缓慢
- Gulp-rev:不是第一次工作,而是在第一次工作之后工作
- JQuery - Ajax: encodeUriComponent不工作(EncodeUri工作)