いくつかの条件を受け入れられるのであれば、CSSでのclickへの対応は一応、不可能ではありません。
「一応」というのは、その条件が制約としてそこそこ厳しいものだからで、現実的あるいは実用的かと言われると、あまり自信はありません。
なお、これは方法論のみを示すものであり、提示されたソースについては一切考慮していません。
PHP(かな?)のソースだけ貼られても仕方がありませんし、構造から大きく変える必要があるため、提示されたソースに合わせて書くことができないからです。
条件
- :checked擬似クラスを使うため、ラジオボタンまたはチェックボックスを使用すること
- 隣接セレクタを使うため、input要素と開閉する要素(あるいはその祖先要素)が同階層にあること
(input要素は空要素なので、子孫に開閉する要素を置くことができません。)
- height: auto;ではtransitionが効かないため、heightをあらかじめ計算しておくこと
(transitionをmax-heightでやるという技はありますが、結局調整が要るため、手間はそんなに変わらないと思います。)
- (ラジオボタンの場合)JavaScript無しにチェックを解除できないはずなので、現在開いている項目を再度クリックして閉じる、という操作ができないこと
具体例
CSS
1[name=accordion] {
2 display: none;
3}
4
5[name=accordion] + label {
6 display: block;
7 cursor: pointer;
8 width: 100px;
9 height: 50px;
10 line-height: 50px;
11 text-align: center;
12 background-color: #ccf;
13}
14
15[name=accordion]:checked + label {
16 background-color: #cfc;
17}
18
19[name=accordion] + label + ol {
20 overflow: hidden;
21 margin: 0;
22 padding: 0;
23 height: 0;
24 list-style-type: none;
25 transition: 1s ease;
26}
27
28[name=accordion] + label + ol li {
29 margin: 0;
30 padding: 0;
31 width: 100px;
32 height: 50px;
33 background-color: #fcc;
34}
35
36[name=accordion] + label + ol li a {
37 display: block;
38 width: 100px;
39 height: 50px;
40 line-height: 50px;
41 text-align: center;
42}
43
44#ac_menu1:checked + label + ol { height: 150px; }
45#ac_menu2:checked + label + ol { height: 200px; }
46#ac_menu3:checked + label + ol { height: 150px; }
HTML
1<input type="radio" name="accordion" id="ac_menu1">
2<label for="ac_menu1">menu1</label>
3
4<ol class="ac_menu1">
5 <li><a href="#">menu1</a></li>
6 <li><a href="#">menu1</a></li>
7 <li><a href="#">menu1</a></li>
8</ol>
9
10<input type="radio" name="accordion" id="ac_menu2">
11<label for="ac_menu2">menu2</label>
12
13<ol>
14 <li><a href="#">menu2</a></li>
15 <li><a href="#">menu2</a></li>
16 <li><a href="#">menu2</a></li>
17 <li><a href="#">menu2</a></li>
18</ol>
19
20<input type="radio" name="accordion" id="ac_menu3">
21<label for="ac_menu3">menu3</label>
22
23<ol>
24 <li><a href="#">menu3</a></li>
25 <li><a href="#">menu3</a></li>
26 <li><a href="#">menu3</a></li>
27</ol>
動作サンプル
https://jsfiddle.net/sii_side/kk8kteuf/