用 css 展开和折叠

Posted

技术标签:

【中文标题】用 css 展开和折叠【英文标题】:Expand and collapse with css 【发布时间】:2014-11-25 02:22:56 【问题描述】:

我在 Jquery 中创建了一个函数来展开和折叠 div 的内容。但是现在我想只使用 CSS 来制作它,并使用箭头的图像,比如这些

观看直播jsFiddle

我也想消除所有这些标签跨度,只保留 div 和它的内容

这是我到目前为止的代码。

<div class='showHide'>
    <span class='expand'><span id="changeArrow">&#8593;</span>Line expand and collapse</span>
    <fieldset id="fdstLorem">Lorem ipsum...</fieldset>
</div>
$(document).ready(function () 
    $('.showHide>span').click(function () 
        $(this).next().slideToggle("slow");
        return false;
    );
    $(".showHide>span").toggle(function () 
        $(this).children("#changeArrow").text("↓");
    , function () 
        $(this).children("#changeArrow").text("↑");
    );
);

【问题讨论】:

你不能只在 css 中这样做。 我想我可以。那么我怎么能至少用那些箭头来做到这一点并删除不必要的html呢? 看看这个 PURE CSS 解决方案:***.com/questions/9100344/… @deKajoo 使用纯 CSS 是可能的。 jsfiddle.net/thurstanh/emtAm/2 【参考方案1】:

.fieldsetContainer 
    height: 0;
    overflow: hidden;
    transition: height 400ms linear;


#toggle 
    display: none;


#toggle:checked ~ .fieldsetContainer 
    height: 50px;


label .arrow-dn  display: inline-block; 
label .arrow-up  display: none; 

#toggle:checked ~ label .arrow-dn  display: none; 
#toggle:checked ~ label .arrow-up  display: inline-block; 
<div class='showHide'>
    <input type="checkbox" id="toggle" />
    
    <label for="toggle">
        <span class='expand'>
            <span class="changeArrow arrow-up">↑</span>
            <span class="changeArrow arrow-dn">↓</span>
            Line expand and collapse
        </span>
    </label>
    
    <div class="fieldsetContainer">
        <fieldset id="fdstLorem">
            Lorem ipsum...
        </fieldset>
    </div>
</div>

【讨论】:

是否有一些巧妙的方法可以让每页不止一个可折叠区域?【参考方案2】:

这是我的做法,与使用复选框做的事情相比,它简单明了,但只会在悬停或单击并按住时展开(这对触摸有好处)...

<style>

.collapse-able 
    height: 1.2rem;
    overflow: hidden;


.collapse-able:active, .collapse-able:hover 
    height: auto;


</style>

<div class="collapse-able">
  <h1> The first line will always show </h1>
  </br> 
  But what's underneath won't until hover or click and drag. Which is neat.
</div>

【讨论】:

以上是关于用 css 展开和折叠的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX TreeView:删除展开/折叠按钮(披露节点)和功能

左侧菜单栏折叠展开效果-超级简单

如何使 HTML 可折叠按钮默认为展开?

常见选项卡内容切换+折叠+展开效果实现

jQuery Mobile 可折叠“展开”事件未在 Cordova 应用程序中触发

layui侧边栏折叠和展开效果该怎么实现