CSS3实现手风琴效果(学习笔记)

CSS3实现手风琴效果,我们需要用到一个新属性 :target(目标伪类选择器)

E:target 选择匹配E的所有元素,且匹配元素被相关URL指向

第一步 完成html布局

效果如下 每个div内有一个标题和一个内容,标题内包含了一个a,a的链接指向那个ID


CSS3实现手风琴效果(学习笔记)_第1张图片
2017-05-16_191623.png

第二步,加上一些基础样式

.accordionMenu{
            background: #fff;
            color: #424242;
            font: 12px Arial, Verdana,sans-serif;
            margin: 0 auto;
            padding: 10px;
            width: 500px;
        }
        .accordionMenu h2{
            margin: 5px 0;
            padding: 0;
            position: relative; 
        }
CSS3实现手风琴效果(学习笔记)_第2张图片
2017-05-16_191933.png

制作一个向下的三角形(上一篇有写如何绘制三角形)

.accordionMenu h2:before{
            border: 5px solid #fff;
            border-color: #fff transparent transparent;
            content: "";
            height: 0;
            position: absolute;
            right: 10px;
            top: 15px;
            width: 0;
        }
CSS3实现手风琴效果(学习笔记)_第3张图片
2017-05-16_192310.png

给标题内容等添加一些样式

.accordionMenu h2 a{
            background: #8f8f8f;
            background: -moz-linear-gradient(top,#cecece,#8f8f8f);
            background: -webkit-gradient(linear,left,top,left,bottom.from(#cecece),to(#8f8f8f));
            background: -webkit-linear-gradient(top,#cecece,#8f8f8f);
            background: linear-gradient(top,#cecece,#8f8f8f);
            color: #424242;
            display: block;
            font-size: 13px;
            margin: 0;
            padding: 10px 10px;
            text-shadow:2px 2px 2px #aeaeae;
            text-decoration: none;
        }
.accordionMenu p{
            margin: 0;
            height: 0;      /*设置高度为0,隐藏内容*/
            overflow: hidden;     
            padding: 0 10px;
            -moz-transition:height 0.5s ease-in;
            -webkit-transition:height 0.5s ease-in;
            -o-transition:height 0.5s ease-in;
            transition:height 0.5s ease-in;
        }

这里transition 属性就相当于监听高度改变,改变了height 运动0.5s 以ease-in的方式


CSS3实现手风琴效果(学习笔记)_第4张图片
2017-05-16_192529.png

添加:target部分 实现点击展开的效果

.accordionMenu :target h2 a,
        .accordionMenu h2 a:focus,
        .accordionMenu h2 a:hover,
        .accordionMenu h2 a:active{
            background: #2288dd;
            background: -moz-linear-gradient(top,#6bb2ff,#2288dd);
            background: -webkit-gradient(linear,left,top,left,bottom.from(#6bb2ff),to(#2288dd));
            background: -webkit-linear-gradient(top,#6bb2ff,#2288dd);
            background: linear-gradient(top,#6bb2ff,#2288dd);
            color: #fff;
        }
.accordionMenu :target p{
            height: 100px;
            overflow: auto;
        }
        .accordionMenu :target h2:before{
            border-color: transparent transparent transparent;
        }

最后效果

大家可以去试试


CSS3实现手风琴效果(学习笔记)_第5张图片
2017-05-16_193157.png

你可能感兴趣的:(CSS3实现手风琴效果(学习笔记))