13

我制作了这个脚本,它用正确的类打开一个 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;
}

是否可以制作一些动画,如淡出、缓出,而不是仅通过显示选项显示?

4

7 回答 7

7

你可以试试这个

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 库提供了更多技术,您也应该看看。

于 2013-01-15T10:34:15.857 回答
3

你可以使用slideDown() and slidUp()jQuery

$( document.body ).click(function () {
  if ( $( "div:first" ).is( ":hidden" ) ) {
    $( "div" ).slideDown( "slow" );
  } else {
    $( "div" ).slideUp("slow");
  }
});
于 2017-04-07T07:54:33.770 回答
2

此示例将切换具有相同类名的多个元素。这个例子不需要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;
}
于 2020-11-05T23:25:38.717 回答
1

If You are using Jquery then another way to do this is

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

Assuming "hideable" as className in your group of divs

Good luck.

于 2013-01-15T10:46:29.890 回答
1

肯定会解决你的问题。

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

于 2013-01-15T10:32:30.577 回答
1

仅使用 CSS 就更容易了。

你上课

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

.hidden {
 display:none;
}

使用 javascript,您可以根据需要应用或删除隐藏的类。jQuery 动画库远非好用。它很笨重,并且为您的用户消耗资源。CSS 可与您的 GPU 一起使用,从而实现更流畅的动画。

于 2015-09-25T19:16:59.167 回答
-1

您可以使用jQuery之类的库来做到这一点。

你肯定可以使用纯 javascript 来实现它,但这样做没有意义,因为 jQuery 是一个了不起的库。

查看显示隐藏的一些示例

于 2013-01-15T10:20:13.830 回答