用动画显示隐藏div

时间:2013-01-15 10:17:55

标签: javascript animation html show-hide

我创建了这个脚本,用正确的类打开一个div并关闭其他类。

function showhide(id) {
    if (document.getElementById) {
        var divid = document.getElementById(id);
        var divs = document.getElementsByClassName("hideable");
        for (var i = 0; i < divs.length; i = i + 1) {
            divs[i].style.display = "none";
        }
        divid.style.display = "block";
    }
    return false;
}

是否可以制作一些动画,例如fadout,easyout而不是仅仅通过显示选项显示它?

7 个答案:

答案 0 :(得分:8)

你可以试试这个

function showhide(id) {
  if (document.getElementById) {
    var divid = document.getElementById(id);
    var divs = document.getElementsByClassName("hideable");
    for (var i = 0; i < divs.length; i = i + 1) {
      $(divs[i]).fadeOut("slow");
    }
    $(divid).fadeIn("slow");
  }
  return false;
}

看看这个小提琴“http://jsfiddle.net/9jtd3/

Jquery库提供了更多技术,你也应该看一下。

答案 1 :(得分:1)

This肯定会解决您的问题。

如果您在脚本中包含了jQuery库,则可以直接使用.fadeOut()。

答案 2 :(得分:1)

如果您正在使用Jquery,那么另一种方法是

function showhide(id) {
  $(".hideable".fadeOut("slow");
  $("#" + id).fadeIn("slow");
}

假设你的div组中的className为“hideable”

祝你好运。

答案 3 :(得分:1)

您可以使用jQuery的slideDown() and slidUp()

$( document.body ).click(function () {
  if ( $( "div:first" ).is( ":hidden" ) ) {
    $( "div" ).slideDown( "slow" );
  } else {
    $( "div" ).slideUp("slow");
  }
});

答案 4 :(得分:0)

您可以使用像jQuery之类的图库来执行此操作。

你可以肯定使用普通的javascript,但是没有必要这样做,因为jQuery是一个了不起的库。

查看showhide

的一些示例

答案 5 :(得分:0)

仅使用CSS就可以轻松实现。

你上课

div {
 display:block;
 transition: all .2s ease-out;
}

.hidden {
 display:none;
}

使用javascript,您可以根据需要应用或删除隐藏的类。 jQuery动画库很容易使用。这是笨重的,并为您的用户重新进食。 CSS可与您的GPU配合使用,从而实现更流畅的动画。

答案 6 :(得分:0)

此示例将切换具有相同类名的多个元素。此示例不需要jquery。

HTML:

<button onclick="fadeInAndOut(this)" style="width:100%">Toggle 1</button>
<div class="accordianPanel acordianPanelHidden accordianPanelStyle">Panel 1</div>

<button onclick="fadeInAndOut(this)" style="width:100%">Toggle 2</button>
<div class="accordianPanel acordianPanelHidden accordianPanelStyle">Panel 2</div>
    

Javascript:

function fadeInAndOut(thz) {
  var elmt = thz.nextElementSibling;//Get the element that is below the button that
     //was just clicked

  elmt.classList.toggle("acordianPanelHidden");//Toggle the class which changes
    //attributes which triggers the `transition` CSS
}

CSS

.accordianPanel {
  opacity: 1;
  height:100%;
  transition: all 1s;
}

.accordianPanel.acordianPanelHidden {
  opacity: 0;
  height: 0px;
  visibility:hidden;/* This must be used or some strange things happen - 
   What happens is that even though the content of the panel is not shown 
   any buttons in the content can still be clicked -
   So basically there are invisible buttons that can accidently get clicked -
   if the visibility is not set to hidden - And the visibility doesn't need to be explicitly changed to visible
  from hidden in order to show the content
  because if visibility:hidden is not used then by default the content is 
  displayed -
 */
}

.acordianPanelShown {
  height: 100%;
  width: 100%;
  opacity: 1;
}

.accordianPanelStyle {
  background:red;
}