亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

哪里出錯了

<!DOCTYPE html>
<html>
<head>
?<title></title>
?<style type="text/css">
??* {
???margin: 0;
???padding: 0;
??}
??#move {
???width: 200px;
???height: 240px;
???margin: 10px auto;
???border: 1px solid #ccc;
??}
??#move a {
???display: inline-block;
???width: 58px;
???height: 55px;
???border: 1px solid #ddd;
???border-radius: 3px;
???background-color: #fff;
???text-align: center;
???margin: 10px 17px;
???position: relative;
???color: #9c9c9c;
???font-size: 12px;
???text-decoration: none;
???line-height: 25px;
???overflow: hidden;
???opacity: 1;
???filter: Alpha(opacity=100);
??}
??#move a i {
???position: absolute;
???top: 20px;
???left: 0;
???display: inline-block;
???width: 100%;
???text-align: center;
??}
??#move img {
???padding: 3px 0;
???border: none;
???z-index:-1
??}
??#move a:hover {
???color: #f00;
??}
?</style>
?<script type="text/javascript" >
??window.onload=function(){
???var oDiv=document.getElementById('move'),
????oA=oDiv.getElementsByTagName('a');
??for(var i=0;i<oA.length;i++){
???oA[i].onmouseover=function(){
????var othis=this.getElementsByTagName('i');
????Move(othis,{top:-20,opacity:30})
???}
??}
??
?}
?
?function Move(obj,json,fn){
??clearInterval(obj.timer);
??obj.timer=setInterval(function(){
???var flag=0;
???for(var attr in json){
????var iCur=0;
????if(attr == 'opacity'){
?????iCur=Math.round(parseFloat(getStyle(opbj,attr))*100);
????}
????else{
?????iCur=parseInt(getStyle(obj,attr));
????}
????var speed=(json[attr]-iCur)/8;
????speed=speed>0?Math.ceil(speed):Math.floor(speed);
????if(iCur != json[attr]){
?????flag=false;
????}
????if(attr == 'opacity'){
?????obj.style.filter="alpha(opacity:'iCur+speed')";
?????obj.style.opacity=(iCur+speed)/100;
????}
????else{
?????obj.style[attr]=iCur+speed+'px';
????}
????if(flag){
?????clearInterval(obj.timer);
?????if(fn){
??????fn();
?????}
????}
???}
??},30);
?}
?function getStyle(obj,attr){
??if(obj.currentStyle){
???return obj.currentStyle[attr];
??}
??else{
???
??}
?}
?</script>

??
</head>
<body>
?<div id="move">
??<a href="#">
???<i><img src="images/food.png"></i>
???<p>食物</p>
??</a>
??<a href="#">
???<i><img src="images/game.png"></i>
???<p>游戲</p>
??</a>
??<a href="#">
???<i><img src="images/insurance.png"></i>
???<p>保險</p>
??</a>
??<a href="#">
???<i><img src="images/lottery.png"></i>
???<p>彩票</p>
??</a>
??<a href="#">
???<i><img src="images/movie.png"></i>
???<p>電影</p>
??</a>
??<a href="#">????
???<i><img src="images/travel.png"></i>
???<p>旅游</p>
??</a>??
?</div>
</body>
</html>

正在回答

1 回答


  1. 不知道你運行代碼的時候發現沒有,你的文字在圖片上方。之所以有這個問題,是因為你沒有給<a>設置padding。而<i>它是相對<a>絕對定位的,它的top=20px,對后面的<p>不再產生影響,因此,p就跑到了top=20px的那20px的高度之中啦。

  2. 錯誤1:你聲明變量flag的時候聲明錯誤,應該是

var?flag=true;

????3.Move函數里面有一處書寫錯誤,obj寫成了opbj,更正后:

if(attr?==?'opacity'){
?????iCur=Math.round(parseFloat(getStyle(obj,attr))*100);
????}

????4.獲取樣式函數getStyle()的else{}里面根本沒有任何內容啊,也就是說在chrome,Safari等瀏覽器里面這個函數根本沒有起到獲取樣式的作用啊。可以這樣改:

function?getStyle(obj,attr){
??if(obj.currentStyle){
???return?obj.currentStyle[attr];
??}
??else{
???return?getComputedStyle(obj,false)[attr];
??}
?}


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

LanceChou 提問者

字體如果放下面不是要用絕對定位嗎,只給a設置pasdding也沒用吧
2016-10-11 回復 有任何疑惑可以回復我~
#2

weibo_豬豬豬惠婷_0 回復 LanceChou 提問者

你試一下給<a>設置padding-top:40px;
2016-10-11 回復 有任何疑惑可以回復我~
#3

weibo_豬豬豬惠婷_0 回復 LanceChou 提問者

對啦,還有一處錯誤 var othis=this.getElementsByTagName('i');這里通過getElementsByTagName獲取到的是一個數組,所以我們應該改為var othis=this.getElementsByTagName('i')[0]
2016-10-12 回復 有任何疑惑可以回復我~
#4

LanceChou 提問者 回復 weibo_豬豬豬惠婷_0

對的。
2016-10-12 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
JS動畫效果
  • 參與學習       113918    人
  • 解答問題       1502    個

通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝

進入課程

哪里出錯了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號