オレンジメニューでサブメニューを出したかった

スポンサーリンク

Simplicityはテーマに最初から用意されてる数種類の「スキン」を適用させるだけで、サイトの外観をガラッと変えることができます。そんな中でも特に人気の「オレンジメニュー」を僕も使ってみたのですが、問題が発生しました。

オレンジメニューが人気の理由

けっこうブログに適用している方が多いこのスキン。理由は、やはりグローバルメニュー(サイト上部に表示されるメニュー)にポインタを合わせた際に、下線がビャっと出てくるアニメーションではないでしょうか。インパクト大だし、思わず押したくなるギミックです。

スポンサーリンク

サブメニューが出せない

スキンの横に(サブメニューなし)と書いてある通り、このスキンを適用した場合にはサブメニューが出なくなります。しかし、僕はどうしてもサブメニューを出したくて、かつ「オレンジメニュー」のスキンも使いたい。そこで解決法を探ってみました。

スポンサーリンク

サブメニューへの道のり

スキンのcssを編集

まずは親テーマの「skins」フォルダにあるオレンジメニューを直接編集して解決しようとしてみました。「orange-menu」というフォルダを子テーマにコピーし、そのフォルダ内のstyle.cssを眺めてみます。すると、該当するっぽい部分を見つけました。

#navi ul.sub-menu,
#navi ul.children{
  display:none !important;
}

明らかにサブメニューを表示させないようにしているこの記述。とりあえずこれを消してみました。

すると…確かにサブメニューが表示されるようになったんですが、なんか崩れてます。サブメニューにまで下線のアニメーションが出るし。ちょっと思ってたのと違うので、このやり方は却下。

テーマのcssを編集

発想を変えて、要はグローバルメニューのホバー時下線がシュッと出る動きが欲しいだけなので、普通にサブメニューが出るスキンを適用して、テーマのstyle.css(外観>テーマの編集から弄れるやつ)にその記述をしてしまえばいいのです。まず最初にそこに気付けよという話ですが、初心者なのですみません。

ということで、テキトーにサブメニューが使える「シック」というスキンを適用します。そして、テーマのstyle.cssに、オレンジメニュースキンのstyle.cssからメニューに下線が出る指定をしている以下の記述をコピペします。

#navi ul li a:hover {
  color: #333333;
}
#navi ul li a:hover:before {
  width: 100%;
}
#navi ul li a:after {
  content: "";
  display: block;
  position: absolute;
  right: -3px;
  top: 19px;
  height: 6px;
  width: 6px;
  background: #ffffff;
  opacity: .5;
}
#navi ul li a:before {
  content: "";
  display: block;
  position: absolute;
  left: 0;
  bottom: 0;
  height: 3px;
  width: 0;
  background: #333333;
  -webkit-transition: width .25s;
  -moz-transition: width .25s;
  -ms-transition: width .25s;
  -o-transition: width .25s;
  transition: width .25s;
}

とりあえずこの部分をコピペしたらサブメニューを出しつつオレンジメニューのような下線アニメーションも使うことができました。あとは、サブメニューには下線が出る動きはいらないので、以下の記述をして出ないようにしておきます。

#navi ul.sub-menu a:hover::after,  #navi .sub-menu li a:hover::after {
  width: 0;
	}
#navi ul.sub-menu a::after,  #navi .sub-menu li a::after{
		  height: 0;
	}

まとめ

何とか意図したカスタマイズができました。オレンジメニューを使いつつサブメニューを出したいと思っている方の参考になれば嬉しいです。

コメント