当我为其父元素设置动画时,为什么我的UL会消失?

时间:2012-05-30 20:08:01

标签: javascript jquery html css

免责声明:我对jQuery和JavaScript相对较新。只要确定#statementTab尚未打开,下面的openStatement()函数就会执行。如果以下代码信息不足,请查看以下来源。

基本上,只要用户打开#statementTab,包含各种标签的UL就会闪烁并消失。我想解决这个问题。

来源:http://www.cameronhermens.com/dbunkr/brochure.html

// The openStatement function opens the statement tab when the user clicks 
<a id="openIt"> (if the statement tab isn't already open).
function openStatement() {
    $('#explore').animate({width: '70%'}, '200');
    $('#statementTab').animate({width: '213px'}, '1000');
};
// Here's the DIV.
<div id="explore" class="brochure">
  <ul id="brochureTab">
    <li><a href="welcome.html" >welcome</a></li>
    <li><a href="ourMission.html">our mission</a></li>
    <li><a href="whatIsdBunkr.html">what is dBunkr</a></li>
  </ul>
</div>

<div id="statementTab">
  <a id="openIt">
    <img class="opaque left-5" src="images/rightArrow.jpg" height="10" width="6" alt="Expand the Statement tab">
    <span class="statementBar">Statements</span>
  </a>
</div>

2 个答案:

答案 0 :(得分:3)

UL#brochureTab在动画期间被隐藏,因为#explore是动画,jQuery正在应用overflow: hidden样式。完成动画后,将删除此样式。

快速解决方案(即没有解决您对其余元素进行样式设置的方式)是将样式overflow: visible !important;添加到#explore

答案 1 :(得分:1)

使用CSS ul#brochureTabdiv#explore位于top: -45px;之外。

每当使用jQuery .animate()为div#explore设置动画时,ul#brochureTab会“闪烁”,因为jQuery .animate()会在执行动画时自动切换到overflow:"hidden"

解决方案是使用DIV作为div#explore的包装,并将其与div#explore上的视觉效果相结合:

<强> CSS

#wrapper {
    background-color: #FFFFFF;
    border: 3px solid #CCCCCC;
    border-radius: 7px 7px 7px 7px;
    box-shadow: 3px 3px 3px #CCCCCC;
    float: left;
    height: inherit;
    padding: 5px;
}

标记将是:

<div id="wrapper">
  <div id="explorer">
    <ul id="brochureTab">
      <li>...</li>
      <li>...</li>
      <li>...</li>
    </ul>
    <div id="ui-tabs-3">...</div>
    <div id="ui-tabs-10">...</div>
    <div id="ui-tabs-12">...</div>
  </div>
  <div id="statementTab">...</div>
</div>

并防止闪烁:

#brochureTab {
  float: left;
  left: 10px;
  list-style: none outside none;
  margin: 0;
  padding: 0;
  position: relative;
  /* top: -45px; remove this line */
}

.ui-tabs-panel {
  background: none repeat scroll 0 0 #FFFFFF;
  border: 2px solid #CCCCCC;
  float: left;
  left: 30px;
  margin: 0 auto 30px;
  min-height: 410px;
  padding: 10px;
  position: relative;
  /* top: -20px; remove this line */
  width: 90%;
  z-index: 1;
}

对于您当前的动画方法,无需进行任何更改。

对于包装器的新CSS,可能需要一些“调整”。