之前寫過的一段簡單的demo,后來在IE10以下使用的時候發現無法使用,先上一段代碼
HTML:
1 <div class="all" id="box"> 2 <img id="image" src="psb.png" width="512" height="1470" > 3 <span id="up"></span> 4 <span id="down"></span> 5 </div>
CSS:
1 .all{ 2 position: relative; 3 width: 512px; 4 height: 400px; 5 border: 1px solid #000; 6 margin:100px auto; 7 overflow: hidden; 8 } 9 span{ 10 width: 512px; 11 height: 200px; 12 position: absolute; 13 left: 0; 14 top: 0; 15 cursor: pointer; 16 } 17 #down{ 18 top: auto; 19 bottom: 0; 20 }
JS:
1 var ops = document.getElementById('image'), 2 oup = document.getElementById('up'), 3 odown = document.getElementById('down'), 4 obox = document.getElementById('box'), 5 timer = null; 6 num = 0; 7 8 oup.onmouseover = function(){ 9 clearInterval(timer); 10 timer = setInterval(function(){ 11 num -= 4; 12 if(num < -1070){ 13 num = -1070; 14 clearInterval(timer); 15 } 16 ops.style.marginTop = num+'px'; 17 },30) 18 } 19 20 odown.onmouseover = function(){ 21 clearInterval(timer); 22 timer = setInterval(function(){ 23 num += 4; 24 if(num > 0){ 25 num = 0; 26 clearInterval(timer); 27 } 28 ops.style.marginTop = num+'px'; 29 },30) 30 } 31 32 obox.onmouseout = function(){ 33 clearInterval(timer); 34 }
實現的效果就是當鼠標移動到上面span的時候,圖片向上移動,移動到下面span的時候,圖片向下移動,離開則停止。
然而在IE10以下版本鼠標移上span的時候沒有任何效果。
進過多次測試,發現了兩種解決辦法
方法一:
進過測試發現如果給span加上背景顏色的話, 鼠標移上又有效果了
增加代碼:
1 background: #fff; 2 opacity: 0; 3 filter:alpha(opacity=0);
添加背景色,然后設置為透明,因為opacity有兼容問題,所以加上filter,最后效果和之前完全一樣
方法二:
后來問了朋友,說是img標簽在IE10嵌套以下會有,所以把img標簽放到div外面來
1 <img id="image" src="psb.png" width="512" height="1470" > 2 <div class="all" id="box"> 3 <span id="up"></span> 4 <span id="down"></span> 5 </div>
然后再把樣式修改好,最后也是可以解決問題