Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS/Javascript动画高度为具有不同高度的项目展开和折叠_Javascript_Jquery_Css_Animation_Css Animations - Fatal编程技术网

CSS/Javascript动画高度为具有不同高度的项目展开和折叠

CSS/Javascript动画高度为具有不同高度的项目展开和折叠,javascript,jquery,css,animation,css-animations,Javascript,Jquery,Css,Animation,Css Animations,我正在尝试创建一个包含各种选项卡的菜单,这些选项卡可以单击以展开,然后再次单击以折叠 我已经成功地使用css动画/转换通过更改最大高度来实现这一点。然而,每个盒子将容纳不同数量的内容,从而导致不同的高度。这反过来又使它们以不同的速度进行动画制作 扩展箱子不是什么大问题,但当再次折叠箱子时,会非常明显,因为有些箱子在一段时间内似乎什么也不做,然后突然快速关闭,而另一些箱子则以平滑的运动关闭 CSS示例,以及一些用于添加和删除活动id的简单jQuery: .options .optionTab &g

我正在尝试创建一个包含各种选项卡的菜单,这些选项卡可以单击以展开,然后再次单击以折叠

我已经成功地使用css动画/转换通过更改最大高度来实现这一点。然而,每个盒子将容纳不同数量的内容,从而导致不同的高度。这反过来又使它们以不同的速度进行动画制作

扩展箱子不是什么大问题,但当再次折叠箱子时,会非常明显,因为有些箱子在一段时间内似乎什么也不做,然后突然快速关闭,而另一些箱子则以平滑的运动关闭

CSS示例,以及一些用于添加和删除活动id的简单jQuery:

.options .optionTab > div {
    max-height: 0;
    overflow: hidden;
    transition: max-height 2s ease;
}

.options .optionTab#active > div {
    max-height: 1000px;
    transition: max-height 2s ease;
}

$(".optionTab > h3").click(function() {
    if($(this).closest(".optionTab").attr("id") == "active") {
        $(this).closest(".optionTab").attr("id", "");
    }
    else {
        $(this).closest(".optionTab").attr("id", "active");        
    }
});


有没有一种方法可以使用css或javascript动画在不同高度的项目中实现一致的动画速度?

我注意到您正在使用css转换

试着把你的名字改成。可能更改高度会导致在相同的时间内完成动画的高度发生变化。也可以试试。

手风琴 您可以使用
JqueryUI
并使用自定义css修改界面,使其看起来完全符合您的要求。这将为您节省时间,您可以在项目的其余部分进行投资

jQuery UI手风琴-折叠内容
$(函数(){
$(“手风琴”)。手风琴({
可折叠的:是的,
活动:错误
});
} );
第一节
莫里斯·莫里斯·安特、布兰迪·埃特、奥特莱斯a、苏西比特·埃特、夸姆。整数ut neque。胎膜早破,胎膜早破,妊娠期,调味品,无核细胞。南阿尼布。Donec suscipit Peros。南美。维韦拉·利奥·奥迪奥。马勒苏阿达库拉比图尔酒店。前庭是一个圆滑的节杖

第二节 塞德·努尔纳。别着急。叶舌。前庭位于阿梅特普鲁斯。亨德雷特万岁,阿利奎特·拉奥里特的多洛,毛里斯·图尔皮斯·波特提托·维利特,自由女神福西布斯。不夸姆万岁。在suscipit faucibus urna

第三节 Nam enim risus,molestie et,porta ac,aliquam ac,risus。奎斯克·洛博蒂斯。马萨的Phasellus Pellentsque purus。埃尼安在佩德。Phasellus ac libero ac tellus pellentesque semper。塞德·ac·费利斯。塞德·康莫多、马格纳·奎斯·拉西尼亚·奥纳雷、尼西广场、威尼斯人酒后驾车

  • 第一项
  • 清单项目二
  • 清单项目三
第四节 粗俗的格言。佩伦特式居住者morbi tristique Sentecus et netus et malesuada以turpis egestas闻名。虎口浮雕和肘部浮雕同侧前庭;埃尼安·拉西尼亚·莫里斯·维勒东部

Suspendisse eu nisl。自由女神。整型贵宾会议。根据康努比亚·诺斯特拉(conubia nostra)和希梅纳奥斯(inceptos himenaeos)的规定,社会责任和责任等级为:

您可以试试这个

$(“.optionTab”)。每个(函数(){
var self=$(这是);
var slideHolder=self.find('>div');
风险值标题=自我发现(“h3”);
var initialHeight=slideHolder.outerHeight();
css('height',0);
标题.点击功能(e){
e、 preventDefault();//如果是锚定标记
slideHolderHeight=$(this.next().outerHeight();
var checkFlag=(slideHolderHeight>0)?true:false;
console.log(slideHolder);
幻灯片制作程序({
高度:检查标志?0:初始高度
},300)
});
});
正文{
背景:#20262E;
填充:20px;
字体系列:Helvetica;
}
.选项{
背景:#fff;
}
.选项.选项选项卡h3{
背景:#f3;
填充:1em;
框大小:边框框;
保证金:0;
光标:指针;
}
.选项。选项选项卡h3:悬停{
背景:#ccc;
}
.options.optionTab>div{
溢出:隐藏;
过渡:最大高度2秒;
}
.options.optionTab>div>div{
填充:1em;
框大小:边框框;

}
除此之外,不要在运行时更改
id
。改用
class
属性。然后你的代码就变成了
$(this)。toggleClass('active')
我认为这很好,heightStyle:“content”也是一个选项,因此它只能扩展到内容的高度。这似乎正是我需要的,谢谢。