サイドバーにいろいろ追加して行くと縦にどんどん長くなるので見栄えが悪くなる。
これを改善したく、独自追加したHTMLをタブ選択で表示を切り替えられるようにカスタマイズをしたので、忘れないよう書き残しておきます。
3TABと2TABの2パターンそれぞれに、Brooklyn標準の見出しと黒背景白文字見出しの2パターンで全部で4パターンのCSSを以下に記載した。また、HTMLは3TABと2TABの2パターンのテンプレートを記載した。
(TABを実装する記事はこちらに集約し、過去の記事の内容は削除済み)
- やったこと
- デザインCSSに埋め込むものは、ラジオボタンを上書きしてTAB表示にするコード
- サイドバーに追加するには、CSSに追加した部品を使ったHTMLコンテンツを追記する
- (おまけ)Brooklynのサイドバー見出しを黒背景白文字に変える
- 出典・参考
やったこと
- タブ切り替えの部品(CSSのコード)を作成し、デザインCSSに適用した。
- デザインCSSに適用したTAB選択表示切り替えを使ったコンテンツをサイドバーにHTMLで埋め込んだ。
- Brooklyn標準風に加え、黒背景白文字見出しにも対応した。
参考にしたサイトは末尾の出典・参考の章に記載してあるので、必要に応じて参照いただきたい。
デザインCSSに埋め込むものは、ラジオボタンを上書きしてTAB表示にするコード
CSSに記述するコードの基本部分はこちらのサイトを参考にさせていただき、デザインの変更(Brooklyn風に改変)を施した。
デザインCSSに埋め込むコード(3TAB)
Brooklyn標準風CSS
- /* サイドバー用タブ設定:Brooklyn対応 */
- /* タブ切り替え全体のスタイル */
- .side_tabs {
- margin-top: 0px;
- padding-bottom: 0px;
- background-color: #fff;
- width: 100%;
- hight: auto;
- margin: 0 auto;
- }
- /* タブのスタイル */
- .side_tab_item {
- transition: all 0.2s ease;
- position: relative;
- width: calc(100%/3 - 6px);
- height: 36px;
- background-color: #d9d9d9;
- line-height: 18px;
- font-size: 16px;
- text-align: center;
- color: #565656;
- display: block;
- float: left;
- font-weight: bold;
- border: 2px solid #d9d9d9;
- margin-left: 1px;
- margin-right: 1px;
- }
- .side_tab_item:first-child, {
- width: calc(100%/3 - 5px);
- margin-left: 0px;
- margin-right: 1px;
- }
- .side_tab_item:last-child {
- width: calc(100%/3 - 5px);
- margin-left: 1px;
- margin-right: 0px;
- }
- /* タブの下に吹き出しを付ける */
- .side_tab_item:before, .side_tab_item:after {
- content: "";
- position: absolute;
- right: 0;
- left: 0;
- width: 0px;
- height: 0px;
- margin: auto;
- }
- /* タブの吹き出し部分 */
- .side_tab_item:before {
- display: none;
- bottom: -10px;
- border-style: solid;
- border-color: #000000 transparent transparent transparent;
- border-width: 10px 10px 0 10px;
- }
- /* タブの中抜き部分 */
- .side_tab_item:after {
- display: none;
- bottom: -7px;
- border-style: solid;
- border-color: #ffffff transparent transparent transparent;
- border-width: 8px 8px 0 8px;
- }
- /* マウスオーバーの動作 */
- .side_tab_item:hover {
- /* opacity: 0.75;*/
- text-decoration: underline;
- }
- /* ラジオボタンを消す */
- input[name="side_tab_item"] {
- display: none;
- }
- /* タブ切り替えの中身のスタイル */
- .side_tab_content {
- display: none;
- padding: 12px 0px 2px;
- clear: both;
- overflow: hidden;
- }
- /* 選択されているタブのコンテンツのみを表示 */
- #my_recommended:checked ~ #my_recommended_content,
- #my_category:checked ~ #my_category_content,
- #my_tweet:checked ~ #my_tweet_content {
- display: block;
- }
- /* 選択されているタブのスタイルを変える */
- .side_tabs input:checked + .side_tab_item {
- width: calc(100%/3 - 4px);
- height: 36px;
- background-color: white;
- color: black;
- border: 2px solid black;
- margin-left: 0px;
- margin-right: 0px;
- }
- /* 吹き出し部分の表示 */
- .side_tabs input:checked + .side_tab_item:before {
- display: block;
- }
- /* 吹き出し部分の中抜きの表示 */
- .side_tabs input:checked + .side_tab_item:after {
- display: block;
- }
- 7行目:テーマ「Brooklyn」のサイドバーの見出しの幅、モバイル表示のいずれにも合うように設定。
- 15行目:幅を3等分して6px(borderの2pxの2倍(左右)と左右タブとの隙間1pxの2倍(左右)の合計)を引いた幅にする。左端、右端タブの調整はそれぞれ29〜33行目、34〜38行目で実施している。
- 16行目:borderの2pxの2倍(上下)を足して40pxになるように36pxを指定。
- 18〜19行目:タブ表示文字のフォントサイズ16で上下に1pxずつ隙間を開ける(2行表示が前提)ように設定(なので、line-heightが16+2=8)。
- 25行目:非選択状態のタブの外枠描画を2pxで背景と同色を指定。
- 31〜32行目:左端タブは右マージンだけ1px取って隣接タブとの隙間を作る。
- 36〜37行目:右端タブは左マージンだけ1pt取って隣接タブとの隙間を作る。
- 51、59行目:非選択状態では吹き出しと吹き出し中抜き部分は非表示にする。吹き出し部分の表示についてはこちらのサイトを参考にさせて頂いた。
- 68行目:マウスオーバーの動作はテキストにアンダーライン表示させる。指定方法はこちらのサイトを参考にさせて頂いた。
- 82〜84行目:HTMLで指定するタブのIDを適切に設定し、選択されたタブのコンテンツのみを表示するように設定。
- 89行目:3等分からborderの分(左右合わせて4px)を引いた幅を設定。
- 90行目:選択されたタブの高さがborderの分(上下合わせて4px)を足して40pxになるように36pxを設定。
- 91〜92行目:黒背景白文字を指定する。
- 93行目:外枠の描画を黒色2px指定する。
- 103行目:Brooklyn標準のサイドバー見出しは黒枠白抜きのため吹き出しの中抜き(白抜き)を表示する。吹き出し部分の表示についてはこちらのサイトを参考にさせて頂いた。
Brooklynカスタム見出し黒背景白文字風CSS
- /* サイドバー用タブ設定:Brooklyn対応 */
- /* タブ切り替え全体のスタイル */
- .side_tabs {
- margin-top: 0px;
- padding-bottom: 0px;
- background-color: #fff;
- width: 100%;
- hight: auto;
- margin: 0 auto;
- }
- /* タブのスタイル */
- .side_tab_item {
- transition: all 0.2s ease;
- position: relative;
- width: calc(100%/3 - 6px);
- height: 36px;
- background-color: #d9d9d9;
- line-height: 18px;
- font-size: 16px;
- text-align: center;
- color: #565656;
- display: block;
- float: left;
- font-weight: bold;
- border: 2px solid #d9d9d9;
- margin-left: 1px;
- margin-right: 1px;
- }
- .side_tab_item:first-child {
- width: calc(100%/3 - 5px);
- margin-left: 0px;
- margin-right: 1px;
- }
- .side_tab_item:last-child {
- width: calc(100%/3 - 5px);
- margin-left: 1px;
- margin-right: 0px;
- }
- /* タブの下に吹き出しを付ける */
- .side_tab_item:before, .side_tab_item:after {
- content: "";
- position: absolute;
- right: 0;
- left: 0;
- width: 0px;
- height: 0px;
- margin: auto;
- }
- /* タブの吹き出し部分 */
- .side_tab_item:before {
- display: none;
- bottom: -10px;
- border-style: solid;
- border-color: #000000 transparent transparent transparent;
- border-width: 10px 10px 0 10px;
- }
- /* タブの中抜き部分 */
- .side_tab_item:after {
- display: none;
- bottom: -7px;
- border-style: solid;
- border-color: #ffffff transparent transparent transparent;
- border-width: 8px 8px 0 8px;
- }
- /* マウスオーバーの動作 */
- .side_tab_item:hover {
- /* opacity: 0.75;*/
- text-decoration: underline;
- }
- /* ラジオボタンを消す */
- input[name="side_tab_item"] {
- display: none;
- }
- /* タブ切り替えの中身のスタイル */
- .side_tab_content {
- display: none;
- padding: 12px 0px 2px;
- clear: both;
- overflow: hidden;
- }
- /* 選択されているタブのコンテンツのみを表示 */
- #my_recommended:checked ~ #my_recommended_content,
- #my_category:checked ~ #my_category_content,
- #my_tweet:checked ~ #my_tweet_content {
- display: block;
- }
- /* 選択されているタブのスタイルを変える */
- .side_tabs input:checked + .side_tab_item {
- width: calc(100%/3 - 4px);
- height: 36px;
- background-color: black;
- color: white;
- border: 2px solid black;
- margin-left: 0px;
- margin-right: 0px;
- }
- /* 吹き出し部分の表示 */
- .side_tabs input:checked + .side_tab_item:before {
- display: block;
- }
- /* 吹き出し部分の中抜きの表示 */
- .side_tabs input:checked + .side_tab_item:after {
- display: none;
- }
- 91〜92行目:白背景黒文字を指定する。
- 103行目:Brooklynカスタム見出し(黒背景白文字)に合わせて吹き出しの中抜き(白抜き)を表示しない。
コンテンツのテンプレートHTML(例)
- <div class="side_tabs">
- <input id="my_recommended" type="radio" name="side_tab_item" checked>
- <label class="side_tab_item" for="my_recommended">オススメ<br>記事</label>
- <input id="my_category" type="radio" name="side_tab_item">
- <label class="side_tab_item" for="my_category">主要<br>カテゴリ</label>
- <input id="my_tweet" type="radio" name="side_tab_item">
- <label class="side_tab_item" for="my_tweet">My<br>Tweet</label>
- <!-- TAB1:オススメ記事 -->
- <div class="side_tab_content" id="my_recommended_content">
- <div class="tab_content_description">
- <!-- ここにオススメ記事のリンクを記載する -->
- </div>
- </div>
- <!-- TAB2:主要カテゴリ -->
- <div class="side_tab_content" id="my_category_content">
- <div class="tab_content_description">
- <!-- ここに主要カテゴリのリンクを記載する -->
- </div>
- </div>
- <!-- TAB3:My Tweet -->
- <div class="side_tab_content" id="my_tweet_content" style="text-align:center;">
- <div class="tab_content_description">
- <!-- ここにTwitterのリンクを記載する -->
- </div>
- </div>
- </div>
- 1行目:タブ選択表示切り替えを使うことを宣言。
- 2行目:TAB1の設置。idにはCSSの82行目に記述したものを指定する。nameにはCSSに記述したタブ表示のクラス「side_tab_item」を指定する。
- 3行目:TAB1の表示内容の指定。classにはCSSに記述したタブ表示のクラス「side_tab_item」を指定する。forには2行目のidと同じものを指定する。なお3TABは幅が狭いため表示内容を<BR>タグで2段に区切っている。CSSの18行目でline-heightを18pxにしているため2段で36pxとなるため、上下枠線と合わせて高さ40pxちょうどとなる。
- 4行目:TAB2の設置。idはCSSの83行目に記述したものを指定する。nameにはCSSに記述したタブ表示のクラス「side_tab_item」を指定する。
- 5行目:TAB2の表示内容の指定。classにはCSSに記述したタブ表示のクラス「side_tab_item」を指定する。forには4行目のidと同じものを指定する。
- 6行目:TAB3の設置。idはCSSの84行目に記述したものを指定する。nameにはCSSに記述したタブ表示のクラス「side_tab_item」を指定する。
- 7行目:TAB3の表示内容の指定。classにはCSSに記述したタブ表示のクラス「side_tab_item」を指定する。forには6行目のidと同じものを指定する。
- 10行目:TAB1のコンテンツの開始。classにはCSSに記述したタブ表示のクラス「side_tab_content」を指定する。idにはCSSの83行目に記述したものを指定する。CSSの82行目に記述した「#my_recommended:checked ~ #my_recommended_content」は、HTMLの4行目で指定した"my_recommended"からHTML本行の"my_recommended_content"の終わり、つまり該当コンテンツ部分を示している。
- 12〜14行目:TAB1のコンテンツ部分。任意のHTMLを記述する。
- 19行目:TAB2のコンテンツの開始。classにはCSSに記述したタブ表示のクラス「side_tab_content」を指定する。idにはCSSの84行目に記述したものを指定する。原理は10行目の説明と同じ。
- 21〜23行目:TAB2のコンテンツ部分。
- 28行目:TAB3のコンテンツの開始。classにはCSSに記述したタブ表示のクラス「side_tab_content」を指定する。idにはCSSの85行目に記述したものを指定する。ここではコンテンツの横幅が短めのため、画面中央寄せするようにstyle指定をしている(そのような使い方も可能、という例)。
- 30〜32行目:TAB3のコンテンツ部分。
- 11、20、29行目:tab_content_descriptionはCSSに記述していないが、恐らく標準実装されているものと思われるため、お作法としてこのまま使っている。
デザインCSSに埋め込むコード(2TAB)
Brooklyn標準風CSS
- /* サイドバー用タブ設定:Brooklyn対応 */
- /* タブ切り替え全体のスタイル */
- .side_tabs {
- margin-top: 1px;
- padding-bottom: 1px;
- background-color: #fff;
- width: 100%;
- hight: auto;
- margin: 0 auto;
- }
- /* タブのスタイル */
- .side_tab_item {
- transition: all 0.2s ease;
- position: relative;
- width: calc(100%/2 - 6px);
- height: 36px;
- border-left: 1px solid white;
- background-color: #d9d9d9;
- line-height: 36px;
- font-size: 16px;
- text-align: center;
- color: #565656;
- display: block;
- float: left;
- font-weight: bold;
- border: 2px solid #d9d9d9;
- margin-left: 1px;
- margin-right: 1px;
- }
- /* タブの下に吹き出しを付ける */
- .side_tab_item:before, .side_tab_item:after {
- content: "";
- position: absolute;
- right: 0;
- left: 0;
- width: 0px;
- height: 0px;
- margin: auto;
- }
- /* タブの吹き出し部分 */
- .side_tab_item:before {
- display: none;
- bottom: -10px;
- border-style: solid;
- border-color: #000000 transparent transparent transparent;
- border-width: 10px 10px 0 10px;
- }
- /* タブの中抜き部分 */
- .side_tab_item:after {
- display: none;
- bottom: -7px;
- border-style: solid;
- border-color: #ffffff transparent transparent transparent;
- border-width: 8px 8px 0 8px;
- }
- /* マウスオーバーの動作 */
- .side_tab_item:hover {
- /* opacity: 0.75;*/
- text-decoration: underline;
- }
- /* ラジオボタンを消す */
- input[name="side_tab_item"] {
- display: none;
- }
- /* タブ切り替えの中身のスタイル */
- .side_tab_content {
- display: none;
- padding: 12px 0px 2px;
- clear: both;
- overflow: hidden;
- }
- /* 選択されているタブのコンテンツのみを表示 */
- #my_recommended:checked ~ #my_recommended_content,
- /* #my_category:checked ~ #my_category_content, */
- #my_tweet:checked ~ #my_tweet_content {
- display: block;
- }
- /* 選択されているタブのスタイルを変える */
- .side_tabs input:checked + .side_tab_item {
- width: calc(100%/2 - 5px);
- height: 36px;
- background-color: white;
- color: black;
- border: 2px solid black;
- margin-left: 0px;
- }
- /* 吹き出し部分の表示 */
- .side_tabs input:checked + .side_tab_item:before {
- display: block;
- }
- /* 吹き出し部分の中抜きの表示 */
- .side_tabs input:checked + .side_tab_item:after {
- display: block;
- }
- 15行目:幅を2等分して6px(borderの2pxの2倍(左右)と左右タブとの隙間1pxの2倍(左右)の合計)を引いた幅にする。左端、右端タブの調整はそれぞれ29〜33行目、34〜38行目で実施している。
- 19行目:2TABは横幅が確保できるためタブに表示する文字は1行を前提に、line-heightを36としている。
- 74行目:2TABのため切り替え表示対象を1つ削っている。ここではオススメ記事とMy Tweetを残し、主要カテゴリを削除している。
- 80行目:2TABに最適な幅を設定。ここは選択されたTABの幅となるため非選択TABより1px大きくしている。
Brooklynカスタム見出し黒背景白文字風CSS
- /* サイドバー用タブ設定:Brooklyn対応 */
- /* タブ切り替え全体のスタイル */
- .side_tabs {
- margin-top: 1px;
- padding-bottom: 1px;
- background-color: #fff;
- width: 100%;
- hight: auto;
- margin: 0 auto;
- }
- /* タブのスタイル */
- .side_tab_item {
- transition: all 0.2s ease;
- position: relative;
- width: calc(100%/2 - 6px);
- height: 36px;
- border-left: 1px solid white;
- background-color: #d9d9d9;
- line-height: 36px;
- font-size: 16px;
- text-align: center;
- color: #565656;
- display: block;
- float: left;
- font-weight: bold;
- border: 2px solid #d9d9d9;
- margin-left: 1px;
- margin-right: 1px;
- }
- /* タブの下に吹き出しを付ける */
- .side_tab_item:before, .side_tab_item:after {
- content: "";
- position: absolute;
- right: 0;
- left: 0;
- width: 0px;
- height: 0px;
- margin: auto;
- }
- /* タブの吹き出し部分 */
- .side_tab_item:before {
- display: none;
- bottom: -10px;
- border-style: solid;
- border-color: #000000 transparent transparent transparent;
- border-width: 10px 10px 0 10px;
- }
- /* タブの中抜き部分 */
- .side_tab_item:after {
- display: none;
- bottom: -7px;
- border-style: solid;
- border-color: #ffffff transparent transparent transparent;
- border-width: 8px 8px 0 8px;
- }
- /* マウスオーバーの動作 */
- .side_tab_item:hover {
- /* opacity: 0.75;*/
- text-decoration: underline;
- }
- /* ラジオボタンを消す */
- input[name="side_tab_item"] {
- display: none;
- }
- /* タブ切り替えの中身のスタイル */
- .side_tab_content {
- display: none;
- padding: 12px 0px 2px;
- clear: both;
- overflow: hidden;
- }
- /* 選択されているタブのコンテンツのみを表示 */
- #my_recommended:checked ~ #my_recommended_content,
- /* #my_category:checked ~ #my_category_content, */
- #my_tweet:checked ~ #my_tweet_content {
- display: block;
- }
- /* 選択されているタブのスタイルを変える */
- .side_tabs input:checked + .side_tab_item {
- width: calc(100%/2 - 5px);
- height: 36px;
- background-color: black;
- color: white;
- border: 2px solid black;
- margin-left: 0px;
- }
- /* 吹き出し部分の表示 */
- .side_tabs input:checked + .side_tab_item:before {
- display: block;
- }
- /* 吹き出し部分の中抜きの表示 */
- .side_tabs input:checked + .side_tab_item:after {
- display: none;
- }
- 3TABの黒背景白文字の解説と同じため省略。
コンテンツのテンプレートHTML(例)
- <div class="side_tabs">
- <input id="my_recommended" type="radio" name="side_tab_item" checked>
- <label class="side_tab_item" for="my_recommended">オススメ<br>記事</label>
- <input id="my_tweet" type="radio" name="side_tab_item">
- <label class="side_tab_item" for="my_tweet">My<br>Tweet</label>
- <!-- TAB1:オススメ記事 -->
- <div class="side_tab_content" id="my_recommended_content">
- <div class="tab_content_description">
- <!-- ここにオススメ記事のリンクを記載する -->
- </div>
- </div>
- <!-- TAB2:My Tweet -->
- <div class="side_tab_content" id="my_tweet_content" style="text-align:center;">
- <div class="tab_content_description">
- <!-- ここにTwitterのリンクを記載する -->
- </div>
- </div>
- </div>
- 3TABのHTMLから2TAB目の内容を削除しただけ。解説内容は基本的に3TABのHTMLと同じため省略。
デザインCSS反映方法
デザインCSSの書き換え方は以下を参照のこと。
サイドバーに追加するには、CSSに追加した部品を使ったHTMLコンテンツを追記する
サイドバーのHTMLに埋め込むコード
デザインCSSに3TABのタブ表示切り替えCSSコードを埋め込んだ場合は3TAB用HTML、2TABのタブ表示切り替えCSSコードを埋め込んだ場合は2TAB用のHTMLを以下の手順に従ってサイドバー に適切に配置する。
サイドバーへ設置する方法
-
[デザイン-詳細設定-サイドバー]を開く
-
[サイドバー]枠一番下[+モジュールを追加]を開く
-
[モジュールを追加]画面左側の[</>HTML]を開く。
-
[</>HTML]画面右側のHTML入力欄にコードを貼り付け、[適用ボタン]を押して設定を反映する。
(おまけ)Brooklynのサイドバー見出しを黒背景白文字に変える
テーマ「Brooklyn」標準のサイドバーのデザインは黒枠で白背景に黒文字だが、黒背景白文字が自分の好みに合うためテーマのデザインをカスタマイズした。
デザインCSSにサイドバーの設定を変更するコードを埋め込む
こちらのサイトを参考に、色の設定を変更した。
- /* サイドバー タイトル部の設定変更 */
- /* 四角部分 */
- .hatena-module-title { color: white; background: black; }
- /* 文字 */
- .hatena-module-title a { color: white; }
- /* 吹き出しの枠線 */
- .hatena-module-title:before { border-top-color: black; }
- /* 吹き出しの背景 */
- .hatena-module-title:after { border-top-color: black; }
- 3行目:見出しの外枠部分に白文字、黒背景を指定。
- 5行目:見出しの文字に白を指定。(3行目だけだと文字色が白にならない模様)
- 7行目:見出しの枠の下にある吹き出し(V)に黒を指定。
- 9行目:見出しの枠の下にある吹き出し(V)に黒背景を指定。
出典・参考
下記リンク先の情報を参考にさせていただきました。
リンク先のブログ管理者の皆さまに感謝申し上げます。
大変助かりました!ありがとうございます!
TAB選択で表示するコンテンツを切り替える方法
テーマ「Brooklyn」のサイドバーの見出しをカスタマイズする方法
マウスオーバーの動作の指定方法
吹き出し部分の表示方法
TAB選択(ラジオボタン、チェックボックスの:checked)に連動して要素を表示する方法