WordPress メニュー項目の間に縦線を追加する方法

Last Updated: 2015 年 04 月 20 日 댓글

はじめ

この記事では、 WordPress メニューの項目間に縦線を追加する方法をTwenty Twelveテーマを例に挙げて説明します。

Twenty Twelveテーマのメニューを見てみると以下の通りです。
Twenty Twelve Menu without vertical line wordpress

このメニューの形を次のように縦線がある形に変えてみましょう。
二十二 WordPress menu items with vertical lines 2

上記のように縦線があるメニューの外観は、いくつかの状況での応用が可能です。 仮にこのサイトの上部にあるログイン関連メニューを配置するために使用することができます。

まず、このタスクを実行するためには、CSSコードをテーマのスタイルシート(style.css)に追加する必要があります。 CSSコードをスタイルシートに追加する方法は、 ここを参照してください。

隣接セレクタを使用する

最も簡単な方法は、隣接セレクタ(Adjacent sibling selectors:隣接兄弟セレクタ)を使用することです。 (このセレクタの詳細については、 ここ 参考)

まず、メニューの要素を調べて、メニューに関連する要素が何であるかを確認します。 Chromeなどのブラウザで右クリックし、「要素チェック」を選択して要素を確認します。
element inspection

.menu-menu-1-container> ul> liまでは、メインメニューの項目に該当します。
基本的には次のようなCSSコードを使用して縦線を追加することができます。

.menu-menu-1-container > ul > li + li a:before {
    content: "|";
}

他のテーマでは、.menu-menu-1-container部分をそのテーマに合った要素に変更します。 その後、メニューが次のように変わります。
menu items with vertical lines
垂直線の位置を調整する必要がね。 CSSコードを若干修正してみると

.menu-menu-1-container > ul {
  border: 0!important;
}

.menu-menu-1-container > ul > li {

margin-right: 0;
margin-left: 0;
padding: 0 10px 0 0px;
}

.menu-menu-1-container > ul > li + li a:before {
    content: "|";
  margin-right: 10px;
}

上下の境界線をなくし、メニュー項目の間にpaddingを追加すると、私たちが望む効果を与えることができます。
二十二 WordPress menu items with vertical lines 2

この方法では、「+」セレクタを使用して比較的単純に縦線を追加しました。 (この方法は Internet Explorer 8 以降でのみ適用されます。 CSSとIEの互換性参考.)

他の方法

別の方法として、次のようなコードを使用することができます。

.menu-menu-1-container > ul > li:not(:first-child) {
	border-left: 1px solid #BDBDBD;
}

上記のコードを追加してみると次のように少し型崩れ形になります。
After applying not 1st child
最初の方法の核心は、 li + liのように、隣接する選択子を使用これを行うには、この方法の鍵は、「メインメニュー項目のすべての左側に枠線を追加しますが、最初の項目の左枠線を除外する」ことです。 そのために not(:first-child)が使用れました。 同様にコードを追加してpaddingなどを追加する必要があります。

次のようなコードを追加すると、最初の方法と同じ効果を得ることができます。

.menu-menu-1-container > ul {
  border: 0!important;
}

.menu-menu-1-container {
  height: 1.2em;
}

.menu-menu-1-container > ul {
  height: 1.2em;
padding: 1px 0 1px 0;
}

.menu-menu-1-container > ul > li {

margin-right: 0;
margin-left: 0;
  height: 1.2em;
padding: 0 10px 0 10px;
}

.menu-menu-1-container > ul > li:first-child {
/* padding-left: 0px!important; */
}

.menu-menu-1-container > ul > li > a {
  margin-top: -1.22em;
  height: 1.2em!important;
}


.menu-menu-1-container > ul > li:not(:first-child) {
	border-left: 1px solid #BDBDBD;
}

他にもいくつかの方法を使用して同じ効果を得ることができます。 CSSの使用にどの程度慣れてくると十分応用が可能になります。 そして、上記の方法は、Twenty Twelveテーマに適用したが、他のテーマでも同じ原理で適用が可能です。 (テーマに沿って容易かもしれない難しいこともあるでしょう。)


コメントを残す

コメント