jQueryを使いスマホでhoverを効かせよう
8月末から9月にかけて連続して台風がやってきています。残暑と重なり蒸し暑い日々が続いていますが、体調などは崩されてないでしょうか?サポート部の本田です。
さて、いきなりですがCSSなどで実装される擬似クラスの、【hover】って聞いたことありませんか?カーソルなどが乗った際に、色を変えたり画像を切り替えたりできる疑似クラスです。
しかしこの【hover】、通常ではタッチスクリーンでは効かずカーソルが乗った際にしか動作せず、モバイルでのインターネットアクセスがPCより多いこの時代においては、普通に実装してはあまり意味がありません。。
本日は、その【hover】をスマホでも実装する方法をご案内します。
動きはこちらのデモサイトで確認できます。(スマートフォンで見てください)
以下、実装のためのステップとコードをご紹介します。
ステップ1:HTMLの実装
まずはHTMLです。ECサイトの商品カテゴリの表示を想定してカテゴリという文言を入れています。
<ul> <li><p>カテゴリ1</p></li> <li><p>カテゴリ2</p></li> <li><p>カテゴリ3</p></li> </ul>
ステップ2:CSSの実装
次にCSSです。
ul { text-align: center; margin-top: 30px; } li { display: inline-block; margin: 0 12px; width: 93%; } p { background-color: black; border: solid 1px white; border-radius: 4px; color: #FFF; display: block; width: 100%; line-height: 44px; -webkit-touch-callout: none; -webkit-tap-highlight-color: (0,0,0,0); cursor: pointer; } .hover { background-color: #F90;←hoverした際の色の設定 border: solid 1px #FC0; }
ステップ3:jQueryの実装
最後にjQueryの実装です。タッチした際(touchstart)にpタグに対してhoverというクラスを付与しタッチが離れた際(touched)にhoverというクラスを削除するという動きになります。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script> $(function(){ $( 'p') .bind( 'touchstart', function(){ $( this ).addClass( 'hover' ); }).bind( 'touchend', function(){ $( this ).removeClass( 'hover' ); }); }); </script>
終わりに
スマートフォンでサイトを見ている際に、リストメニューなどでどのリストを押しているのかわかりにくくなり、また押し間違いなどがあると思います。今回のようにタッチした際に色を変えるといった動きをつけることで、ユーザーがどのリストを押しているのかわかりやすくなります。
この動きは、文字を切り替えたり画像を切り替えたりといった動きにも応用することができますので、今後紹介していきたいと思います。
本田