我们经常能看到在一些网站中可以通过按钮实现对图片的放大或者缩小,也有可能是鼠标经过时图片放大。在本例中就是通过JavaScript实现图片的放大和缩小。

  首先是进行简单的页面布局

1 <div class="imagedispose">
2         <img src="1.jpeg" id="imaged" width="400px" height="300px"></br>
3         <input type="button" id="max" value="放大"></input>
4         <input type="button" id="min" value="缩小"></input>
5     </div>

  添加基础样式

1 *{
2         padding: 0;
3         margin: 0;
4     }
5     .imagedispose{
6         width: 600px;
7         margin: 0 auto;
8     }

  接下来就是JavaScript的实现。先简述一下思路,本例的效果是图片可以放大或缩小,当放大或缩小到一定程度时,会停止放大缩小,并且提醒用户已经放大或缩小到极限值了。

这就需要嵌套两个if..else语句,一个判断是否达到每次放大或者缩小的最值,另一个判断是否达到图片放大或者缩小的极限。

  整个JavaScript代码在window.onload事件中,目的是等页面加载完成之后再执行script代码,因为JavaScript可能会获取页面的元素,这样保证JavaScript获取时元素是存在的。

  设置图片放大或缩小的极限值

1   var maxwidth = imgid.width*2;
2   var maxheight = imgid.height*2;
3   var minwidth = imgid.width*0.4;
4   var minheight = imgid.height*0.4;

  再看放大函数部分,首先定义每次放大的最值。使用定时器执行函数,函数中有两个判断语句,不成立则执行clearInterval(),就不再放大。缩小函数同理可得。

 1 function maxFun()
 2             {
 3                 var endwidth = imgid.width*1.3;   //每次点击之后的宽度
 4                 var endheight = imgid.height*1.3;   //每次点击之后的高度
 5                 var maxTimer = setInterval(function(){
 6                     if (imgid.width<endwidth) {
 7                         if (imgid.width<maxwidth) {
 8                     imgid.width = imgid.width*1.05;
 9                     imgid.height = imgid.height*1.05;
10                     }
11                     else{
12                         alert('已经放大到最大值了!');
13                         clearInterval(maxTimer);
14                     }
15                 }
16                 else{
17                     clearInterval(maxTimer);
18                 }
19                 },20);
20             }

  下面是完整的JavaScript代码

 1 window.onload = function(){      //
 2             var maxbutton = document.getElementById("max");
 3             maxbutton.onclick = function(){
 4                 maxFun();              //添加放大事件
 5             }
 6             var minbutton =document.getElementById("min");
 7             minbutton.onclick =function(){
 8                 minFun();         //添加缩小事件
 9             }
10             var imgid = document.getElementById("imaged");
11             var maxwidth = imgid.width*2;
12             var maxheight = imgid.height*2;
13             var minwidth = imgid.width*0.4;
14             var minheight = imgid.height*0.4;
15             function maxFun()
16             {
17                 var endwidth = imgid.width*1.3;   //每次点击之后的宽度
18                 var endheight = imgid.height*1.3;   //每次点击之后的高度
19                 var maxTimer = setInterval(function(){
20                     if (imgid.width<endwidth) {
21                         if (imgid.width<maxwidth) {
22                     imgid.width = imgid.width*1.05;
23                     imgid.height = imgid.height*1.05;
24                     }
25                     else{
26                         alert('已经放大到最大值了!');
27                         clearInterval(maxTimer);
28                     }
29                 }
30                 else{
31                     clearInterval(maxTimer);
32                 }
33                 },20);
34             }
35             function minFun()
36             {
37                 var endwidth = imgid.width*0.8;   //每次点击之后的宽度
38                 var endheight = imgid.height*0.8;   //每次点击之后的高度
39                 var minTimer = setInterval(function(){
40                     if (imgid.width>endwidth) {
41                         if (imgid.width>minwidth) {
42                     imgid.width = imgid.width*0.95;
43                     imgid.height = imgid.height*0.95;
44                     }
45                     else{
46                         alert('已经缩小到最小值了!');
47                         clearInterval(minTimer);
48                     }
49                 }
50                 else{
51                     clearInterval(minTimer);
52                 }
53                 },20);
54             }
55         }

  这只是一个简单的例子,当然还有很多引申。可以将鼠标点击图片放大换成鼠标经过图片放大。也可以将函数进行修改,比如鼠标点击图片平移、旋转等等。

 

posted on 2016-03-27 09:52  suvllian  阅读(980)  评论(0)    收藏  举报