Hiden boxについて

published_with_changes 更新日: event_note 公開日:

labelBloggerカスタマイズ

記事中に書くHTMLについて説明してほしい。

それぞれの書式(A)(B)(C)の違いと、それぞれのメリット・デメリットを整理して説明します。


✔ 各書式の違い

書式 inputid label のクリック処理 for 使用
(A) id="box1" あり for="box1" を使用(標準的な方法) あり ✅
(B) id なし onclick を直接記述 (previousElementSibling を使用) なし ❌
(C) id="box1" あり onclicktoggleHiddenBox() を呼ぶ なし ❌

✔ 各書式の動作と特徴

(A)標準的な <label> の使用

<div class="hidden_box">
 <input type="checkbox" id="box1"/>
 <label for="box1">ボックス1</label>
 <div class="hidden_show">ここに中身1</div>
</div>

メリット

  • HTMLの標準仕様に沿った書き方で、わかりやすい。
  • <label for="box1"> を使って、<input> のチェック状態を切り替える。
  • JavaScript が不要 で動作する(for の仕様による)。

デメリット

  • Blogger の 「作成ビュー(リッチエディタ)」を使うと for="box1" が削除される 可能性がある(仕様上の問題)。
  • id を個別に設定する必要があり、複数の hidden_box を使う場合、毎回 id を変更しなければならない。

(B)onclick を直接 label に設定

<div class="hidden_box">
 <input type="checkbox"/>
 <label onclick="this.previousElementSibling.checked = !this.previousElementSibling.checked;">ボックス1</label>
 <div class="hidden_show">
  ここに中身
 </div>
</div>

メリット

  • Blogger の「作成ビュー」でも onclick は削除されない ため、安定して動作する。
  • id を不要にでき、シンプルな構造で書ける。
  • 追加の JavaScript が不要 なので、コードの管理が楽。

デメリット

  • previousElementSibling を使っているため、HTML の構造を変更すると動かなくなる可能性がある(例えば、<label> の前に他の要素を入れた場合)。
  • <label><input> の並び順が変わると previousElementSibling では正しく動作しない。

(C)JavaScript を使った toggleHiddenBox() 関数を利用

<div class="hidden_box">
 <input type="checkbox" id="box1"/>
 <label onclick="toggleHiddenBox('box1')">ボックス1</label>
 <div class="hidden_show">ここに中身1</div>
</div>

メリット

  • for を使わないため、Blogger の「作成ビュー」で削除される問題を回避できる
  • id を個別に設定することで、チェックボックスを JavaScript から直接操作できる。
  • より複雑な処理を組み込める(例えば、toggleHiddenBox() の中で他のアクションも追加可能)。

デメリット

  • 追加の JavaScript が必要(テーマ HTML にスクリプトを追加する必要がある)。
  • <div class="hidden_box">
     <script>
     function toggleHiddenBox(id) {
      document.getElementById(id).checked = !document.getElementById(id).checked;
     }
    </script>
    
  • id を明示的に指定する必要があるため、複数の hidden_box を作る場合、個別の id を毎回設定する必要がある。

✔ どの書式を選ぶべきか?

条件 書式
最もシンプルで HTML の標準仕様を守る (A)
Blogger の「作成ビュー」を使っても動作する (B) または (C)
追加の JavaScript を使いたくない (A) または (B)
カスタマイズ性を高めたい(JS を使う) (C)

✔ 結論

  • Blogger の「作成ビュー」を使う場合は(B)か(C)を使うべき。
  • JavaScript を追加せず、シンプルにしたいなら(B)がおすすめ。
  • JavaScript をテーマ HTML に追加してもよいなら(C)の方が柔軟性が高い。
  • for が削除されなければ(A)が一番 HTML の標準仕様に沿っているが、Blogger では推奨しない。

✔ まとめ

書式 Blogger の作成ビュー対応 JavaScript 必要 id 必要
(A) ❌(for が消える可能性あり) 不要 必要
(B) ✅(作成ビューでも問題なし) 不要 不要
(C) ✅(作成ビューでも問題なし) 必要 必要

結論として、Blogger で確実に動作する & 簡単に使えるのは(B) です!
より細かい制御が必要なら (C)を選ぶのもアリ です。

 

Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down