为了账号安全,请及时绑定邮箱和手机立即绑定

为啥我的移动功能实现不了,求帮看,缩小放大都是可以的,就是移动那部分不行,求指导

为啥我的移动功能实现不了,求帮看,缩小放大都是可以的,就是移动那部分不行,求指导


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>js 图片缓慢缩放效果</title>

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width initial-scale=1">

</head>

<body>

<div style="width:400px; margin:0 auto;">

<img src="images/2.jpg" id="myImage" /><br/>

<input type="button" id="max" value="放大" />

<input type="button" id="min" value="缩小" />

<input type="button" id="mover" value="右移动"/>

</div>


<script type="text/javascript">

window.onload = function () {

var maxBtn = document.getElementById("max");

var minBtn = document.getElementById("min");

var moverBtn = document.getElementById("mover");


maxBtn.onclick = function () {

maxFun();

}

minBtn.onclick = function(){

minFun();

}

moverBtn.onclick = function(){

moverFun();

}



var img = document.getElementById("myImage"); 

var maxWidth = img.width*3;

var maxHeight = img.height*3;

var minWidth = img.width*0.5;

var minHeight = img.height*0.5;

var overLeft = 700;


function maxFun() {

var endWidth = img.width*1.3;

var endHeight = img.height*1.3;


// 每隔20ms增加5%

var maxTimer = setInterval(function () {

if (img.width < endWidth) {

if (img.width < maxWidth) {

// 将图片等比缩小5%;>1:放大 <1:缩小

img.width = img.width*1.05;

img.height = img.height*1.05;

}else{

alert("已经是最大的了,亲");

clearInterval(maxTimer);

}

}else{

clearInterval(maxTimer);

}

},20);

}


function minFun(){

var endWidth = img.width*0.7;

var stratHeight = img.height*0.7;


var minTimer = setInterval(function(){

if (img.width > endWidth) {

if (img.width > minWidth) {

img.width = img.width*0.95;

img.height = img.height*0.95;

}else{

alert("已经是最小的了,亲");

clearInterval(minTimer);

}

}else{

clearInterval(minTimer);

}

},20);

}


function moverFun(){

var endLeft = img.offsetLeft + 200;


var moverTimer = setInterval(function(){

var imgLeft = img.offsetLeft;

if (imgLeft < endLeft) {

if (imgLeft < overLeft) {

img.style.left = imgLeft + 20 +"px";

}else{

alert("已经是最右的,亲");

clearInterval(moverTimer);

}

}else{

clearInterval(moverTimer);

}

},20);

}

}

</script>

</body>

</html>


正在回答

2 回答

亲 你的图片没有绝对定位 style="position:absolute;left:0;top:0"

0 回复 有任何疑惑可以回复我~
#1

chendidi 提问者

原来如此。因为默认情况下,所有 HTML 元素的位置都是静态的,可以改变高度和宽度,但无法移动。所以如需对位置进行操作,需要把元素的 CSS position 属性设置为 relative、fixed 或 absolute。谢谢啦,现在能实现了
2016-07-15 回复 有任何疑惑可以回复我~

虽然时间有点久远,但还是补充下。元素移动并不是需要定位position:absolute/relative等,关键在于你的移动方式。该课程使用的是img.style.left  而left top等方位属性是在定位情况才有用。但你一样可以使用margin-left属性,就是img.style.marginLeft,该属性修改外边距,什么时候都能使用。题主一年前提的问题,估计现在都是大神了,请忽略,给后来者看的,避免阅读者误会。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
用JavaScript实现图片缓慢缩放效果
  • 参与学习       32790    人
  • 解答问题       91    个

本课程讲解如何使用JavaScript技术实现图片缩放效果,并分析原理

进入课程

为啥我的移动功能实现不了,求帮看,缩小放大都是可以的,就是移动那部分不行,求指导

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信