Blog

【ECCUBE2.11】スマートフォンのプルダウンメニューについて

2016/03/10

ECCUBE2.11~ スマートフォン

ECCUBE2.11を使っているサイトのスマートフォンにプルダウンメニューを実装するカスタマイズがあり、
jQueryが使えず苦労しましたので備忘録として残します。

正直なところ原因は不明ですが、ECCUBE2.12や2.13で実装していたプルダウンメニューが
2.11だと使えず、jQueryのバージョンをアップすると画面が真っ白になってしまったため、
他の実装方法を探していたところ、cssでのプルダウンを見つけました。

参考サイト
CSSで作ったドロップダウンメニューのドロップの動きいろいろ

HTML

<ul id="normal" class="dropmenu">
  <li><a href="#">menu</a>
    <ul>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
    </ul>
  </li>
  <li><a href="#">menu</a>
    <ul>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
    </ul>
  </li>
  <li><a href="#">menu</a>
    <ul>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
    </ul>
  </li>
  <li><a href="#">menu</a>
    <ul>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
    </ul>
  </li>
  <li><a href="#">menu</a>
    <ul>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
      <li><a href="#">submenu</a></li>
    </ul>
  </li>
</ul>

CSS 共通部分

.dropmenu{
  *zoom: 1;
  list-style-type: none;
  width: 960px;
  margin: 5px auto 30px;
  padding: 0;
}
.dropmenu:before, .dropmenu:after{
  content: "";
  display: table;
}
.dropmenu:after{
  clear: both;
}
.dropmenu li{
  position: relative;
  width: 20%;
  float: left;
  margin: 0;
  padding: 0;
  text-align: center;
}
.dropmenu li a{
  display: block;
  margin: 0;
  padding: 15px 0 11px;
  background: #8a9b0f;
  color: #fff;
  font-size: 14px;
  line-height: 1;
  text-decoration: none;
}
.dropmenu li ul{
  list-style: none;
  position: absolute;
  z-index: 9999;
  top: 100%;
  left: 0;
  margin: 0;
  padding: 0;
}
.dropmenu li ul li{
  width: 100%;
}
.dropmenu li ul li a{
  padding: 13px 15px;
  border-top: 1px solid #7c8c0e;
  background: #6e7c0c;
  text-align: left;
}
.dropmenu li:hover > a{
  background: #6e7c0c;
}
.dropmenu li a:hover{
  background: #616d0b;
}

CSSアニメーション無

#normal li ul{
  display: none;
}
#normal li:hover ul{
  display: block;
}

以下のcssはid="normal"のnormalを変更してください。

CSS広がるように
子メニュー1つ1つが広がりながら現れます。

#dropmenu li ul li{
  overflow: hidden;
  height: 0;
  transition: .2s;
}
#dropmenu li:hover ul li{
  overflow: visible;
  height: 38px;
}

CSSフェードイン
マウスを乗せるとふんわりと子メニューが現れます。

#fade-in li ul{
  visibility: hidden;
  opacity: 0;
  transition: 0s;
}
#fade-in li:hover ul{
  visibility: visible;
  opacity: 1;
}
#fade-in li ul li a{
  visibility: hidden;
  opacity: 0;
  transition: .5s;
}
#fade-in li:hover ul li a{
  visibility: visible;
  opacity: 1;
}

CSSフェードインでおりてくる
先ほどと似ていますが、こちらは降りてきます。

#fade-in2 li ul{
  opacity: 0;
  top: 50%;
  visibility: hidden;
  transition: .5s;
}
#fade-in2 li:hover ul{
  top: 100%;
  visibility: visible;
  opacity: 1;
}

CSS左から右へ
子メニューが左側から表示されます。

#left-to-right ul{
  overflow: hidden;
  width: 0;
  transition: .5s;
}
#left-to-right li:hover ul{
  width: 100%;
}
#left-to-right li:hover ul li a{
  white-space: nowrap;
}

参考サイトはグローバルメニューを想定していますが、
今回はヘッダーのプルダウンメニューに使ったので、CSSを調整して実装できました。

問題点としては、スマホでタップすると開きますが、タップで閉じません。
メニューボタン以外の箇所をタップするか、メニューを選択すると閉じます。
その点だけを考慮すれば、jQueryが古くてプルダウンのjsが使えない場合など、
有効活用できるかと思います。

ゼヒトモ内でのプロフィール: ROCKSTREAMゼヒトモのホームページ作成・制作サービス仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ