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

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

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

第一步 完成html布局

<div class="accordionMenu">
        <div class="menuSection" id="brand">
            <h2><a href="#brand">Brand</a></h2>
            <p>Lorem ipsum dolor...</p>
        </div>
        <div class="menuSection" id="promotion">
            <h2><a href="#promotion">Promotion</a></h2>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>
        <div class="menuSection" id="event">
            <h2><a href="#event">Event</a></h2>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>
    </div>

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


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; 
        }
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;
        }
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的方式


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;
        }

最后效果

大家可以去试试


2017-05-16_193157.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,473评论 19 139
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 5,839评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 6,844评论 0 11
  • 我后悔了,我后悔和你那个了,我后悔爱上的是这样的一个你。我知道我这样说很伤人,可是你知道吗?你一直在伤我!我以为你...
    静水流深vs沧笙踏歌阅读 1,937评论 0 0
  • 97.白羊男.喜春秋.厌冬夏. 初识在一个冬末春初. 是不是我不说出来你就什么都不知道. 我懂你我知道你比你想象的...
    安稳丶阅读 3,126评论 0 0