クリックイベントといえば、javascriptが相場ですが、CSSだけで、擬似的にクリックイベントを作る事が出来ます。
例えば、以下の例
<style> input[type="radio"]{ visibility:hidden; } input[type="radio"]:checked+label{ font-weight: bold; } </style>
<input id="rad1" type="radio" name="rad"/><label for="rad1">Radio 1</label> <input id="rad2" type="radio" name="[/php] </div>rad"/><label for="rad2">Radio 1</label>
example
input要素を使って、クリックされているかのように見せるシンプルな例です。
このような、CSSだけを使ってクリックするアクションが、実用性を、検討してみたいということもあって、WordPress Enough 0.6というテーマに、CSSだけのクリックアクションを実装してみました
動作確認用のサンプル
テーマの、html
<p tabindex="-1" class="post-status-title">Enough 0.6 live today ! Support PostFormat Status</p> <div class="entry-content" tabindex="-1"> <p> <a href=""> 2013年5月1日12:40 AM</a> </p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <div> <div class="post-format-entry-meta" style="position:relative;"> <span class="meta-sep">by</span> <span class="author vcard"> <a class="url fn n" href="" title="tenman の全投稿"> tenman </a> </span> <a href="" class="permalink-post-format-status" rel="bookmark"> <span>link to ステータス</span> </a> </div> </div> </div>
テーマの CSS
.format-status .post-status-title:focus, .format-status .entry-content:focus{ outline:none; } .format-status .entry-content{ display:none; } .format-status .post-status-title:focus{ outline:none; } .format-status .post-status-title:focus ~.entry-content{ display:block; } .format-status .post-status-title:hover{ cursor:pointer; } .format-status .entry-content:focus{ display:block; outline:none; } .term-post-format-status .format-status{ background:#fff; }
といった形で、実現しています。
残念ながら、IEだと、コンテンツを表示した時に、内容に含まれるリンクが操作できないという問題と、画像が、オーバーフローしてしまうという問題があることが、後で発覚してしまい。
次のバージョンに向けて、IEでも問題なく操作できるようなインターフェースに改良をしています。
皆さんは、このようなCSSだけの、クリックアクションをどう思いますか?