我创建了这个脚本,用正确的类打开一个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而不是仅仅通过显示选项显示它?
答案 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)
答案 5 :(得分:0)
仅使用CSS就可以轻松实现。
你上课
div {
display:block;
transition: all .2s ease-out;
}
.hidden {
display:none;
}
使用javascript,您可以根据需要应用或删除隐藏的类。 jQuery动画库很容易使用。这是笨重的,并为您的用户重新进食。 CSS可与您的GPU配合使用,从而实现更流畅的动画。
答案 6 :(得分:0)
此示例将切换具有相同类名的多个元素。此示例不需要jquery。
<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>
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
}
.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;
}