手风琴用CSS3

本文介绍如何使用CSS3和HTML实现一个具有动画效果的手风琴菜单。通过隐藏的复选框控制各部分内容的展开与折叠,并利用伪类实现美观的交互效果。

今天,我们将尝试与相邻的和一般的兄弟姐妹组合子和一些检查伪类。使用隐藏的输入和标签,我们将创建一个手风琴,将开幕式和闭幕式的动画内容领域。

有CSS只手风琴周围的许多变化,其中大部分是采用:目标伪类。与使用的问题:目标是,我们不能真正关闭内容领域,或在同一时间有多个部分开放。通过使用隐藏的复选框,我们可以控制的开幕式和闭幕式。另外,我们还可以使用单选按钮,如果只有一个部分应该是一次开放。

所以,让我们开始吧!

标记

我们将通过一个例子,使用其中一个内容部分是默认打开的复选框(输入需要'检查')。一切都将被包裹在一个容器与AC-容器类。对于每个项目,我们将有一个复选框,一个标签,这是该项目的内容部分文章

<section class="ac-container">
    <div>
        <input id="ac-1" name="accordion-1" type="checkbox" />
        <label for="ac-1">About us</label>
        <article class="ac-small">
            <p>Some content... </p>
        </article>
    </div>
    <div>
        <input id="ac-2" name="accordion-1" type="checkbox" checked />
        <label for="ac-2">How we work</label>
        <article class="ac-medium">
            <p>Some content... </p>
        </article>
    </div>
    <div><!--...--></div>
</section>

请注意,我们需要给每个输入一个ID,然后我们将使用在标签的属性。我们需要以选中复选框,点击标签时。

每篇文章都会有,这将有助于我们确定的高度,我们扩大到一类。(理想情况下,我们可以使用作为扩大高价值的“自动”,但不幸的是,它不会这样的动画。)

让我们来看看风格。

让我们来定义一个手风琴和中心,它的宽度:

.ac-container{
    width: 400px;
    margin: 10px auto 30px auto;
}

下一步,我们将作标签,点击按钮出现,给他们一些华而不实的背景渐变。与多个框阴影,我们将创建一个微妙的边界和插图效果。我们还将设置的z-index至20日,以确保这将是内容部分上:

.ac-container label{
    font-family: 'BebasNeueRegular', 'Arial Narrow', Arial, sans-serif;
    padding: 5px 20px;
    position: relative;
    z-index: 20;
    display: block;
    height: 30px;
    cursor: pointer;
    color: #777;
    text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
    line-height: 33px;
    font-size: 19px;
    background: linear-gradient(top, #ffffff 1%,#eaeaea 100%);
    box-shadow: 
        0px 0px 0px 1px rgba(155,155,155,0.3), 
        1px 0px 0px 0px rgba(255,255,255,0.9) inset, 
        0px 2px 2px rgba(0,0,0,0.1);
}

悬停时,我们会让白色的标签:

.ac-container label:hover{
    background: #fff;
}

当我们点击一个标签,复选框的Checked,当发生这种情况,我们希望有各自的标签下面的“选定”的风格

.ac-container input:checked + label,
.ac-container input:checked + label:hover{
    background: #c6e1ec;
    color: #3d7489;
    text-shadow: 0px 1px 1px rgba(255,255,255, 0.6);
    box-shadow: 
        0px 0px 0px 1px rgba(155,155,155,0.3), 
        0px 2px 2px rgba(0,0,0,0.1);
}

正如你可以看到,我们使用的是组合子的相邻兄弟选择,因为它是直接由前面的复选框,输入标签。

让我们添加一个小箭头图标上悬停。为此,我们将简单地使用伪类“后”,所以,我们不添加不必要的标记:

.ac-container label:hover:after,
.ac-container input:checked + label:hover:after{
    content: '';
    position: absolute;
    width: 24px;
    height: 24px;
    right: 13px;
    top: 7px;
    background: transparent url(../images/arrow_down.png) no-repeat center center;  
}

为“选定”的项目,我们要显示向上箭头:

.ac-container input:checked + label:hover:after{
    background-image: url(../images/arrow_up.png);
}


因为我们不希望显示的投入,我们会隐藏起来

.ac-container input{
    display: none;
}

内容区域将有一个0px初始高度和将隐藏任何溢出。我们将添加一个过渡高度和框阴影。我们这里加入过渡将采取行动“关闭”的项目。我们定义另一个所选项目的过渡。因此,我们基本上可以控制这两种行为,这样做。正如你可以看到,我们将尽收快一点,比开幕式。

.ac-container article{
    background: rgba(255, 255, 255, 0.5);
    margin-top: -1px;
    overflow: hidden;
    height: 0px;
    position: relative;
    z-index: 10;
    transition: 
        height 0.3s ease-in-out, 
        box-shadow 0.6s linear;
}
.ac-container input:checked ~ article{
    transition: 
        height 0.5s ease-in-out, 
        box-shadow 0.1s linear;
    box-shadow: 0px 0px 0px 1px rgba(155,155,155,0.3);
}

我们的风格位的内容:

.ac-container article p{
    font-style: italic;
    color: #777;
    line-height: 23px;
    font-size: 14px;
    padding: 20px;
    text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
}

现在我们定义为三类不同高度。这些项目的内容,将动画的高度

.ac-container input:checked ~ article.ac-small{
    height: 140px;
}
.ac-container input:checked ~ article.ac-medium{
    height: 180px;
}
.ac-container input:checked ~ article.ac-large{
    height: 230px;
}

如前所述,将“自动”的高度,当然这里是最好的选择,但因为我们不能到该动画,我们需要设置一些过渡高度。

请注意,一些移动浏览器,点击一个标签,可能不会引发或相关的输入检查重点。

演示地址:http://tympanus.net/Tutorials/CSS3Accordion/

下载地址http://tympanus.net/Tutorials/CSS3Accordion/CSS3Accordion.zip

转载于:https://my.oschina.net/xiahuawuyu/blog/64732

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值