こんばんは、いつもお世話になっております。
現在webサイトで横スクロールメニューを実装しようとしているのですが、以下の条件で横にスクロールできることを促す矢印マークを表示したり消したりしたいです。
・スクロールメニューを全く触っていない(左端に寄っている時)
右端に右向きの矢印を表示する。
・スクロールを右に動かしている最中(左端にも右端にもたどり着いていない時)
左右両端に矢印を表示する。
・スクロールメニューを一番右まで動かした時
左端に左向きの矢印を表示する。
実際にサンプルコードを書いているのですが現在左端なのか右端なのかそれともどちらでもないのか等を判断するための方法がわかりません。。
JSもしくはJQueryを使って上記の方法を実現するためにはどのようにすればよいでしょうか?
今まで書いたコードは以下の通りです。
sample.html
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <link rel="stylesheet" href="./style.css"> </head> <body> <header class="thm-header"> <nav class="global-nav"> <ul class="header-nav js-global-nav"> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> <li class="item"><a class="link" href=""></a></li> </ul> </nav> </header> </body> </html>
style.css
.global-nav { background: none; border-top: 2px solid #43b4ab; border-bottom: 2px solid #43b4ab; padding: 0; position: relative; margin-top: 6px; overflow: hidden; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; } .global-nav:before, .global-nav:after { position: absolute; top: 50%; display: block; width: 10px; height: 10px; margin-top: -6px; content: ''; -webkit-transform: rotate(45deg); transform: rotate(45deg); border: solid #000; visibility: hidden; transition: all .5s ease; opacity: 0; z-index:100; } .global-nav:before { left: 7px; border-width: 0 0 1px 1px; } .global-nav:after { right: 7px; border-width: 1px 1px 0 0; } .header-nav:before, .header-nav:after { position: absolute; z-index: 1; bottom: 0; width: 20px; height: 80px; content: ''; visibility: hidden; transition: all .5s ease; opacity: 0; } .header-nav:before { left: 0; } .header-nav:after { right: 0; } .thm-header.is-left .global-nav:before, .thm-header.is-right .global-nav:after, .thm-header.is-left .header-nav:before, .thm-header.is-right .header-nav:after { visibility: visible; opacity: 1; } .item { border: 1px solid #43b4ab; margin: 0; height: 40px; text-align: center; width: calc(100% / 9); } .header-nav { margin: 0; padding: 0; background-color: #e6f4f3; -webkit-overflow-scrolling: touch; display: flex; flex-wrap: wrap; overflow: visible; white-space: normal; width: 150%; } .thm-header.is-left .global-nav:before, .thm-header.is-right .global-nav:after, .thm-header.is-left .header-nav:before, .thm-header.is-right .header-nav:after { overflow: hidden; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/27 14:02