|
15 | 15 | width: 300px;
|
16 | 16 | height: 500px;
|
17 | 17 | float: left;
|
18 |
| - |
19 | 18 | }
|
20 |
| - |
21 | 19 | #main > .mark{
|
22 | 20 | position: absolute;
|
23 | 21 | width: 50px;
|
|
26 | 24 | top: 0px;
|
27 | 25 | z-index: 10000;
|
28 | 26 | background-color: red;
|
29 |
| - filter: alpha(opacity=0.5); |
30 |
| - opacity: 0.5; |
| 27 | + filter: alpha(opacity=.5); |
| 28 | + opacity: .5; |
31 | 29 | }
|
32 | 30 | div[class=bigshow]{
|
33 | 31 | float: left;
|
34 |
| - display: none; |
| 32 | + filter: alpha(opacity=0); |
| 33 | + opacity: 0; |
| 34 | + position: relative; |
| 35 | + z-index: -100; |
35 | 36 | background: url('big.jpg') no-repeat;
|
36 | 37 | width: 500px;
|
37 | 38 | height: 500px;
|
38 | 39 | background-position: 0% 0%;
|
| 40 | + transition:opacity .6s ease-in; |
39 | 41 | }
|
40 | 42 |
|
41 | 43 |
|
|
53 | 55 | <script>
|
54 | 56 |
|
55 | 57 | (function(){
|
56 |
| - var kuai = document.getElementById('main'), |
57 |
| - mark = document.getElementsByClassName('mark')[0], |
58 |
| - bigshow = document.getElementsByClassName('bigshow')[0]; |
59 |
| - function getPositionLeft(ele){ |
60 |
| - var actLeft = ele.offsetLeft; |
61 |
| - var currentLeft = ele.offsetParent; |
62 |
| - while(currentLeft!==null){ |
63 |
| - actLeft+=currentLeft.offsetLeft; |
64 |
| - currentLeft = currentLeft.offsetParent; |
65 |
| - } |
66 |
| - return actLeft; |
67 |
| - } |
68 |
| - function getPositionTop(ele){ |
69 |
| - var actTop = ele.offsetTop; |
70 |
| - var currentTop = ele.offsetParent; |
71 |
| - while(currentTop!==null){ |
72 |
| - actTop +=currentTop.offsetTop; |
73 |
| - currentTop = currentTop.offsetParent; |
74 |
| - } |
75 |
| - return actTop; |
76 |
| - } |
77 |
| - kuai.addEventListener('mousemove',function(event){ |
78 |
| - bigshow.style.display='block'; |
79 |
| - var pl = getPositionLeft(kuai); |
80 |
| - var pt = getPositionTop(kuai); |
81 |
| - var MaxPointX = 300-25; |
82 |
| - var MaxPointY = 500-25; |
83 | 58 |
|
84 |
| - var pointX = event.clientX-pl; |
85 |
| - var pointY = event.clientY-pt; |
86 |
| - // console.log(pointX,MaxPointX,pointY,MaxPointY); |
87 |
| - if(pointX<25){ |
88 |
| - var blockX = 0; |
89 |
| - }else if(pointX>MaxPointX){ |
90 |
| - var blockX = MaxPointX-25; |
91 |
| - }else{ |
92 |
| - var blockX = pointX-25; |
93 |
| - } |
94 |
| - if(pointY<25){ |
95 |
| - var blockY = 0; |
96 |
| - }else if(pointY>MaxPointY){ |
97 |
| - console.log('big more'); |
98 |
| - var blockY = MaxPointY-25; |
99 |
| - }else{ |
100 |
| - var blockY = pointY-25; |
| 59 | + function photoshow(option){ |
| 60 | + var kuai = option&&option._root||'main', |
| 61 | + mark = option&&option._mark||'mark', |
| 62 | + bigshow = option&&option._bigshow||'bigshow' |
| 63 | + kuai = document.getElementById(kuai), |
| 64 | + mark = document.getElementsByClassName(mark)[0], |
| 65 | + bigshow = document.getElementsByClassName(bigshow)[0]; |
| 66 | + |
| 67 | + function getPositionLeft(ele){ |
| 68 | + var actLeft = ele.offsetLeft; |
| 69 | + var currentLeft = ele.offsetParent; |
| 70 | + while(currentLeft!==null){ |
| 71 | + actLeft+=currentLeft.offsetLeft; |
| 72 | + currentLeft = currentLeft.offsetParent; |
| 73 | + } |
| 74 | + return actLeft; |
| 75 | + } |
| 76 | + function getPositionTop(ele){ |
| 77 | + var actTop = ele.offsetTop; |
| 78 | + var currentTop = ele.offsetParent; |
| 79 | + while(currentTop!==null){ |
| 80 | + actTop +=currentTop.offsetTop; |
| 81 | + currentTop = currentTop.offsetParent; |
| 82 | + } |
| 83 | + return actTop; |
101 | 84 | }
|
102 |
| - var kw = kuai.offsetWidth; |
103 |
| - var kh = kuai.offsetHeight; |
| 85 | + kuai.addEventListener('mousemove',function(event){ |
| 86 | + bigshow.style.opacity='1'; |
| 87 | + var pl,pt,MaxPointX,MaxPointY,pointX,pointY,blockX,blockY,km,kh |
| 88 | + pl = getPositionLeft(kuai); |
| 89 | + pt = getPositionTop(kuai); |
| 90 | + MaxPointX = 300-25; |
| 91 | + MaxPointY = 500-25; |
104 | 92 |
|
| 93 | + pointX = event.clientX-pl; |
| 94 | + pointY = event.clientY-pt; |
| 95 | + // console.log(pointX,MaxPointX,pointY,MaxPointY); |
| 96 | + if(pointX<25){ |
| 97 | + blockX = 0; |
| 98 | + }else if(pointX>MaxPointX){ |
| 99 | + blockX = MaxPointX-25; |
| 100 | + }else{ |
| 101 | + blockX = pointX-25; |
| 102 | + } |
| 103 | + if(pointY<25){ |
| 104 | + blockY = 0; |
| 105 | + }else if(pointY>MaxPointY){ |
| 106 | + blockY = MaxPointY-25; |
| 107 | + }else{ |
| 108 | + blockY = pointY-25; |
| 109 | + } |
| 110 | + kw = kuai.offsetWidth; |
| 111 | + kh = kuai.offsetHeight; |
105 | 112 |
|
106 | 113 |
|
107 |
| - bigshow.style.backgroundPosition = (pointX/kw).toFixed(2)*100+'% '+(pointY/kh).toFixed(2)*100+'%'; |
108 | 114 |
|
109 |
| - mark.style.left=blockX+'px'; |
110 |
| - mark.style.top=blockY+'px'; |
111 |
| - }); |
112 |
| - kuai.addEventListener('mouseout',function(){ |
113 |
| - bigshow.style.display='none'; |
114 |
| - }) |
| 115 | + bigshow.style.backgroundPosition = (pointX/kw).toFixed(2)*100+'% '+(pointY/kh).toFixed(2)*100+'%'; |
115 | 116 |
|
| 117 | + mark.style.left=blockX+'px'; |
| 118 | + mark.style.top=blockY+'px'; |
| 119 | + }); |
| 120 | + kuai.addEventListener('mouseout',function(){ |
| 121 | + bigshow.style.opacity='0'; |
| 122 | + }) |
| 123 | + } |
| 124 | + photoshow({ |
| 125 | + _root:'main', //小图id |
| 126 | + _mark:'mark', //进入小图后遮罩层类名 |
| 127 | + _bigshow:'bigshow' // 大图类名 |
| 128 | + }); |
116 | 129 | })();
|
117 | 130 |
|
118 | 131 | </script>
|
|
0 commit comments