3

ドロップダウンメニューがあります。その高さは5pxから130pxまでjQueryでアニメーション化され、その逆も同様です。

メニューは、要素が分離されている間(私が開発していたとき)は正常に機能しましたが、別の要素が表示されたとき、Operaは驚きました:

代替テキストhttp://img12.imageshack.us/img12/9366/menusy.png

最初の状態を1、2番目の状態を2としてマークしました。3番目の状態は最初の状態と同じである必要がありますが、ご覧のとおり「テール」があります。

UPD:ソースコード

html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <script type="text/javascript" src="js/jquery.js">
    </script>
    <script type="text/javascript" src="js/script.js">
    </script>
    <script type="text/javascript">
      $(function(){
        init();
      });
    </script>
    <link rel="stylesheet" href="css/styles.css"/>
</head>
<body>
  <div id="side" class="side_outer"> 
        <div class="cn tr"> </div>
        <div class="cn tl"> </div>

        <div class="auth">
          <span class="auth_entr">Click me</span> 
          <div class="auth_fields"> 

          </div>
          <div id="auth_separator"> </div>
        </div>
        <div class="side_inner">
            <div class="cn tr"> </div>
            <div class="cn tl"> </div>
                <div class="side_content">
                    Some content
                </div>   
            <div class="cn br"> </div>
            <div class="cn bl"> </div>
        </div>
        <div class="cn br"> </div>
        <div class="cn bl"> </div>  
  </div>
  <div id="header"> Header</div>
  <div id="central"> Center</div>
</body>
</html>

css:

#header {
  background: red;
  height: 100px;
  margin: 30px 330px 20px 20px;

}

#central {
  background: green;
  height: 150px;
  margin: 20px 330px 20px 20px;
}

#side {
  margin-right: 3%;
  margin-left: 10px;
  margin-top: 30px;
  min-width: 200px;
  float: right;
}

.side_outer {
  padding: 0 10px;
  background: #f2f2cc;
  width: 22%;
  border-bottom-style: dashed;
  border-bottom-width: 2px;
  border-bottom-color: black;
}

.side_inner {
    position:relative;
    overflow:hidden;
    padding: 0 10px;
    background: #accbfa;  
}

.side_outer .cn {
  position: relative;
  width: 20px;
  height: 20px;
}

.side_outer .cn.tr, .side_outer .cn.br {
  float: right;
  left: 10px;
}

.side_outer .cn.tl, .side_outer .cn.bl {
  left: -10px;
}

.auth {
  overflow: hidden;
}

.auth_entr {
  position: relative;
  top: 5px;
  margin-left: 17px;
  padding:  0 5px;
  color:  #1e5ebe;
  cursor: pointer;
}

.auth_fields {
  overflow: hidden;
  height: 5px;
  margin-top: 5px;
}


#auth_separator {
  height: 6px;
  font-size: 2px;
}

.side_content {
  height: 100px;
  padding: 5px 15px;
}

javascript:

var auth_state = 1;

function init () {
  $('span.auth_entr').click (function (){
     auth_state = (auth_state + 1) % 2;
     if (auth_state == 1) {
          $('div.auth_fields').animate({height: '5px'},  1000);
     } else {
          $('div.auth_fields').animate({height: '132px'}, 1000);
     }
  });
}

実際、私はいくつかのストリートマジックを使用して問題を解決しました(メニューの下部に太い白い境界線を追加しましたが、「物語」は透明になりました)。しかし、私は何が問題なのか知りたいのですが、通常の解決策はありますか?

PS別の要素は、実際には固定の寸法と背景を持つ空のdivです。私のOperaバージョンは9.5です(古いことは知っていますが、それでも私の聴衆の間で人気があります)。

PPS Opera 9.6でテストしたところ、同じバグが発生しました。

4

2 に答える 2

5

IE 7、8、FF3でコードをテストしましたが、正常に動作します。ただし、すでに指摘したように、Operaでアニメーションを実行する際には確かにバグがあります。Opera 9.64でテストしたところ、同じ結果が得られました。

GoogleとOperaフォーラムで検索しましたが、この特定のバグへの参照は見つかりませんでした。私が見つけた最も近いものはこれでした:jquery-smooth-scroll-bugs

Operaでこのバグを報告するには、チケットを作成する必要がある場合があります。

于 2009-05-12T07:46:18.693 に答える
0

の後に空のdivを置き、<div class="cn bl">その高さをたとえば50px(または十分なもの)に設定し、その下マージンを同じですが負の値(つまり、-50px)に設定できます。

于 2010-06-21T16:58:58.697 に答える