本实例通过对radio按钮的状态判断来实现折叠效果。主要应用的是兄弟元素选择器~,注意这个兄弟元素选择器只选择后面的兄弟元素,对于同级的前面的兄弟元素css3还没有响应的选择器。然后综合应用:before和transition来实现前面图标的切换及高度的伸展动画。这个高度的伸展变化必须设置一个具体的值,如为auto则没有transition动画效果,只是切换而已。
css主要代码为:
#accordion{ border:1px solid #D2D2D2; border-top:none; width:600px; } #accordion input[type='radio']{ display:none; } #accordion label{ display:block; font-size:16px; background-color:#F4F4F4; border-top:1px solid #D2D2D2; line-height:36px; font-weight:bold; } #accordion label:before{ content:"\2610"; background-color:#fff; width:19px; height:19px; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; text-align:center; margin:0 5px; box-shadow:0 0 1px rgba(0,0,0,0.5); display:inline-block;*display:inline;*zoom:1; line-height:19px; vertical-align:middle; } #accordion .accordion-content{ height:0; overflow:hidden; -webkit-transition:height 0.3s ease; -moz-transition:height 0.3s ease; -ms-transition:height 0.3s ease; -o-transition:height 0.3s ease; transition:height 0.3s ease; } #accordion .accordion-content p{ margin:10px; } #accordion input:checked + label:before{ content:"\2611"; color:#f00; box-shadow:0 0 2px rgba(255,0,0,0.5); } #accordion input:checked ~ .accordion-content{ height:100px; }