创建无Javascript的平滑隐藏/显示动画

创建无Javascript的平滑隐藏/显示动画,javascript,jquery,css,html,Javascript,Jquery,Css,Html,我对网络编程比较陌生(即不到一个月) 我想做的是为常见问题列表创建一个平滑的隐藏/显示效果,如本网站所示: 我意识到这个网站正在使用javascript来创建效果,但我想知道是否有任何方法可以只用CSS来实现这一点 HTML5的标记在结构上似乎工作得很好(尽管只在chrome和safari中工作): 关于我们 关于我们的一些信息 唯一的问题是,转换非常苛刻,但我似乎不能使用CSS转换,因为我希望在单击时播放动画,而不是悬停等(加上属性不会更改,因此没有任何转换) 到底有没有办法做到这一点,

我对网络编程比较陌生(即不到一个月)

我想做的是为常见问题列表创建一个平滑的隐藏/显示效果,如本网站所示:

我意识到这个网站正在使用javascript来创建效果,但我想知道是否有任何方法可以只用CSS来实现这一点

HTML5的
标记在结构上似乎工作得很好(尽管只在chrome和safari中工作):


关于我们
关于我们的一些信息

唯一的问题是,转换非常苛刻,但我似乎不能使用CSS转换,因为我希望在单击时播放动画,而不是悬停等(加上属性不会更改,因此没有任何转换)

到底有没有办法做到这一点,还是仅仅需要掌握Javascript?显然,这是下一步,我只是希望有一种方法可以在CSS中实现这一点,这样我就可以尽快完成这项工作


提前谢谢。

上两节课。每个都有不同的过渡。 使用toggleClass将html元素更改为具有所需转换的类


它仍然使用javascript,但它只是一个简单的类切换,因此您的动画将更加流畅。

如果您有创意,这实际上可以通过纯CSS来实现

(PS-我只放了一个
包装器,允许重置
单选按钮
,而不影响多选
复选框
按钮)

CSS HTML
Singles

一个一个 如果您希望他们一次只能看到一个项目,请使用单选按钮。如果希望他们看到多个,请使用复选框。将检查您的转换属性

两个两个 如果一只土拨鼠能和莎莉一起在海边扔木头,谁知道要舔多少下才能到达中心呢?

三三三 如果您希望他们一次只能看到一个项目,请使用单选按钮。如果希望他们看到多个,请使用复选框。将检查您的转换属性

四四 如果一只土拨鼠能和莎莉一起在海边扔木头,谁知道要舔多少下才能到达中心呢?

倍数

一个一个 如果您希望他们一次只能看到一个项目,请使用单选按钮。如果希望他们看到多个,请使用复选框。将检查您的转换属性

两个两个 如果一只土拨鼠能和莎莉一起在海边扔木头,谁知道要舔多少下才能到达中心呢?

三三三 如果您希望他们一次只能看到一个项目,请使用单选按钮。如果希望他们看到多个,请使用复选框。将检查您的转换属性

四四 如果一只土拨鼠能和莎莉一起在海边扔木头,谁知道要舔多少下才能到达中心呢?


如果你只有少量物品,Deryck的答案最适合你

然而,如果数量很大,Javascript/jQuery是最好的选择

如何做到:

jQuery:

$('.detail').slideUp(); //hides all the details
$('.item').on('click', function({
    $('.detail').slideUp(); //hides any shown details
    $(this).next().toggleSlide(); //shows the details of the item selected
});
HTML:

项目1
关于项目1的详细信息
项目2
关于项目2的详情
项目3
关于项目3的详情
...
.item
表示一个项目,例如FAQ问题,
.details
表示该项目的扩展,例如FAQ问题的答案


或者,您可以将
.detail
嵌套在各自的
.item
中。

以添加到jQuery答案中

div
中包装您所拥有的内容,id为“FAQ”。将答案包装在另一个
div
中,这样您就可以

<div id="FAQ">
    <section>
        <summary>Question 1</summary>
        <div>
            <p>Some Stuff 1</p><p>Some Stuff 2</p>
        </div>
    </section>
    <!-- Repeat as required -->
</div>
包括j,然后在
脚本中包括以下内容

$(document).ready(){
    $("#FAQ summary").click(function(){
        $(this).next("div").slideToggle('slow');
    });
};
请在此处查看它的实际操作:

这将有点不同于其他一些解决方案,因为答案只有在再次单击问题时才会隐藏。为什么要阻止用户一次看到多个答案?这个解决方案的好处是,一旦包含jQuery,就可以使用5行javascript实现

花点时间查找我在jQuery中使用的内容:


由于您想在单击时设置动画,我想您可能必须使用javascriptah ok,我想知道是否会出现这种情况。希望所涉及的Javascript不会太复杂,这样我就可以很快完成所有工作。如果你需要支持IE9及以下版本,你至少需要一些Javascript。那真的很有帮助,我以后会用的。很高兴你喜欢。我不得不承认,这很有趣。谢谢你,我会确保很快看一看文档。这很清楚,很简单,我在转到JS时会用到它。谢谢
$('.detail').slideUp(); //hides all the details
$('.item').on('click', function({
    $('.detail').slideUp(); //hides any shown details
    $(this).next().toggleSlide(); //shows the details of the item selected
});
<div class="item">Item 1</div>
<div class="detail">Details about Item 1</div>
<div class="item">Item 2</div>
<div class="detail">Details about Item 2</div>
<div class="item">Item 3</div>
<div class="detail">Details about Item 3</div>
...
<div id="FAQ">
    <section>
        <summary>Question 1</summary>
        <div>
            <p>Some Stuff 1</p><p>Some Stuff 2</p>
        </div>
    </section>
    <!-- Repeat as required -->
</div>
#FAQ section>div
{
    display:none;
}

#FAQ section
{
    display:block;
}
$(document).ready(){
    $("#FAQ summary").click(function(){
        $(this).next("div").slideToggle('slow');
    });
};