HTML - divタグ

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

divタグは、HTMLにおける基本的なブロックレベル要素の1つである。
コンテンツをグループ化して、論理的なセクションを作成するために使用する。

セマンティクスの観点から、header、nav、main、article、section等の意味的要素を使用することを推奨する。
divタグは、これらの意味的要素で表現できない場合のフォールバックとして使用するのが最適である。

 <!-- 基本的な使用方法 -->
 <div>
    <p>コンテンツ</p>
    <span>他の要素</span>
 </div>


divタグの特徴を以下に示す。

  • ブロックレベル要素として、デフォルトで前後に改行が入る。
  • CSSと組み合わせて、レイアウトやスタイリングの基礎として機能する。
  • class属性やid属性を使用して、特定のスタイルやJavaScriptとの連携が可能である。


 <!-- スタイリングの例 -->
 <div class="container">
    <div class="header">ヘッダ</div>
    <div class="content">メインコンテンツ</div>
 </div>
 
 <!-- スタイル定義 -->
 <style>
 .container {
    width: 80%;
    margin: 0 auto;
 }
 
 .header {
    background-color: #f0f0f0;
    padding: 20px;
 }
 </style>


このような構造化されたマークアップにより、以下に示すメリットが得られる。

  • コードの可読性が向上する。
  • 保守性が高まる。
  • レスポンシブデザインの実装が容易になる。
  • 将来的な拡張性が確保される。


※注意
class属性の値は必ずスタイル定義と一致させる必要がある。
HTMLとCSSは常に対応関係を保つようにする必要がある。

未定義のクラスが存在する場合、以下に示すような問題が発生する。

  • スタイルが適用されず、意図したデザインにならない。
  • 他の開発者が混乱する可能性がある。
  • コードの保守性が低下する。



使用例

以下の例では、一般的なWebサイトのレイアウトを示している。

各divには明確な役割があり、それぞれにクラス名が付けられている。
また、コメントによって各セクションの目的が明確になっており、CSSでは基本的なレイアウトとスタイリングを定義している。

 <!-- サイト全体を包むコンテナ -->
 <div class="site-wrapper">
   <!-- ヘッダーセクション: ロゴとナビゲーションを含む -->
   <div class="header">
     <!-- ロゴを配置するエリア -->
     <div class="logo">
       <img src="logo.png" alt="サイトロゴ">
     </div>
 
     <!-- ナビゲーションメニュー -->
     <div class="nav-menu">
       <a href="#home">ホーム</a>
       <a href="#about">概要</a>
       <a href="#contact">お問い合わせ</a>
     </div>
   </div>
 
   <!-- メインコンテンツエリア: 2カラムレイアウト -->
   <div class="main-content">
     <!-- 左カラム: 記事一覧 -->
     <div class="content-left">
       <!-- 記事カード -->
       <div class="article-card">
         <h2>記事タイトル</h2>
         <p>記事の概要テキストがここに入ります。</p>
       </div>
     </div>
 
     <!-- 右カラム: サイドバー -->
     <div class="content-right">
       <!-- プロフィールウィジェット -->
       <div class="profile-widget">
         <img src="profile.jpg" alt="プロフィール画像">
         <p>プロフィール説明文</p>
       </div>
     </div>
   </div>
 
   <!-- フッタセクション -->
   <div class="footer">
     <!-- コピーライト情報 -->
     <div class="copyright">
       <p>&copy; 2024 サンプルサイト</p>
     </div>
   </div>
 </div>
 
 <!-- スタイル定義 -->
 <style>
   /* サイト全体のコンテナスタイル */
   .site-wrapper {
     max-width: 1200px;
     margin: 0 auto;
     padding: 0 15px;
   }
 
   /* ヘッダセクションのスタイル */
   .header {
     display: flex;
     justify-content: space-between;
     align-items: center;
     padding: 20px 0;
     border-bottom: 1px solid #eee;
   }
  
  /* ナビゲーションメニューのスタイル */
  .nav-menu {
    display: flex;
    gap: 20px;  /* メニュー項目間の間隔 */
  }
 
 .nav-menu a {
     text-decoration: none;
     color: #333;
     padding: 5px 10px;
     transition: color 0.3s ease;
   }
 
   .nav-menu a:hover {
     color: #007bff;  /* ホバー時の色変更 */
   }
 
   /* メインコンテンツエリアの2カラムレイアウト */
   .main-content {
     display: flex;
     gap: 30px;
     margin: 40px 0;
   }
 
   /* 左カラムのスタイル (記事一覧) */
   .content-left {
     flex: 2;  /* 右カラムより広いスペースを確保 */
   }
 
   /* 右カラムのスタイル (サイドバー) */
   .content-right {
     flex: 1;
   }
 
   /* フッタセクションのスタイル */
   .footer {
     text-align: center;
     padding: 20px 0;
     background-color: #f5f5f5;
   }
 
   /* ロゴエリアのスタイル */
   .logo {
     max-width: 200px;
   }
 
   .logo img {
     width: 100%;
     height: auto;
   }
 
   /* 記事カードのスタイル */
   .article-card {
     padding: 20px;
     border: 1px solid #eee;
     border-radius: 8px;
     margin-bottom: 20px;
     box-shadow: 0 2px 4px rgba(0,0,0,0.1);
   }
 
   .article-card h2 {
     margin: 0 0 10px 0;
     font-size: 1.5em;
     color: #333;
   }
 
   .article-card p {
     margin: 0;
     color: #666;
     line-height: 1.6;
   }
 
   /* プロフィールウィジェットのスタイル */
   .profile-widget {
     padding: 20px;
     background-color: #f9f9f9;
     border-radius: 8px;
     text-align: center;
   }
 
   .profile-widget img {
     width: 120px;
     height: 120px;
     border-radius: 50%;
     margin-bottom: 15px;
   }
 
   .profile-widget p {
     color: #555;
     line-height: 1.4;
   }
 
   /* コピーライトのスタイル */
   .copyright {
     font-size: 0.9em;
     color: #777;
   }
 
   .copyright p {
     margin: 0;
   }
 </style>