Chap13-3 CSSでレイアウト

Chap13-3 CSSでレイアウト

猫カフェトップページを作成しながら、レイアウトの方法を学習します。
セレクタの考え方や選び方について理解することが目的です。

Chap12-4までの猫カフェトップページ

ソースの正確性に注意

コピーしてここまで貼り付けてきましたが、少し違うところがあるかもしれません。
使用する人は、前の章に戻って確認してきてください。

Master
Master

何度も見直しながらこのサポートページを作成してきましたが、そろそろ下のソースの正確性が不安になってきました。

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>保護猫カフェ/にゃんルーム</title>
  <link href="destyle.css" rel="stylesheet">
  <link href="layout.css" rel="stylesheet">
  <style>
    body{
      font-family:"Helvetica Neue", "Helvetica", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Arial", "Yu Gothic", "Meiryo", sans-serif;
      line-height: 100%;
    }
    header>p{
      width: 316px;
      margin: 0 auto;
    }
    ul{
      padding: 0;
      display: flex;
      justify-content: space-around;
      width:960px;
      margin: auto;
      list-style-type: none;
    }
    a{
      display: block;
      padding: 20px 10px;
    }
    a:link,a:visited{
      color:rgb(51,51,51);
      text-decoration: none;
    }
    a:hover{
      background-color:rgb(255,210,210) ;
      color: rgb(200,50,0);
    }
    h1{
      background-image: url(images/bg_h1.jpg);
      background-size: cover;
      background-position: center;
      background-attachment:fixed;
      text-align: right;
      padding: 60vh 5% 10vh 0;
      color: rgb(255,255,255);
      line-height: 140%;
    }
    h2{
      font-size: 28px;
      font-weight: bold;
      color: rgb(185,125,75);
      line-height: 150%;
      text-align: center;
      width: 960px;
      margin: 0 auto 30px;
      border-bottom: 2px solid rgb(185,125,75);
    }
    #lead p{
      width: 960px;
      margin: auto;
      background-image: url(images/txtimg_1.jpg);
      background-position: 100% 80%;
      background-repeat: no-repeat;
      background-size : 385px auto;
      padding : 160px 410px 160px 0;
      line-height : 40px;
    }
    table,th,td{
      border: 1px solid rgb(60,60,60);
    }
    #cont-1{
        background-image: url(images/bg_1.jpg);
        background-repeat: no-repeat;
        background-position: center;
        background-size: cover;
        background-attachment: fixed;
        padding-top: 50vh;
    }
    #cont-1>div{
        background-color: rgb(255,240,235);
        padding: 80px 0;
    }
    #cont-1 img{
       width: 180px;
       height: 180px;
       border-radius: 50%;
       object-fit: cover;
       object-position: top center;
    }
    #cont-1 dl{
        margin-bottom: 80px;
    }
    #cont-1 p{
        width: 960px;
        margin: auto;
        text-align: right;
    }
    .cont_link{
        color: rgb(0, 60, 255);
        text-decoration: underline;
    }
    table{
      width: 400px;
      border-collapse: collapse;
    }
    th,td{
      padding:15px;
      text-align: center;
    }
    th{
      width: 150px;
      background-color: rgb(200, 200, 200);
      text-align: left;
    }
  </style>
</head>
<body>
  <header>
    <p><img src="images/logo.png" alt="にゃんルームのロゴ"></p>
    <nav>
      <ul>
        <li><a href="index.html">トップページ</a></li>
        <li><a href="cat.html">お部屋のご案内</a></li>
        <li><a href="#">同居猫の紹介</a></li>
        <li><a href="#">カフェメニュー</a></li>
        <li><a href="#">保護猫カフェについて</a></li>
        <li><a href="#">ご予約・お問い合わせ</a></li>
      </ul>
    </nav>
  </header>
 
  <main>
    <h1>にゃんルームは<br>あなたと猫だけのくつろぎスペース</h1>
    <div id="lead">
      <p>猫が飼えない方や、猫が大好きな方に、ゆっくりと自分の部屋のように寛いでもらうためのスペースです。<br>
      お部屋では、同居している猫ちゃんが、あなたの帰りを待っています。<br>
      早く帰って、猫ちゃんとたくさん遊んで、ゆっくり寛いでくださいね。</p>
    </div>
    <section id="cont-1">
      <div>
        <h2>同居中の猫ちゃんたち</h2>
        <dl>
          <div>
            <dt>ブウくん 3歳</dt>
            <dd>エキゾチックショートヘアー</dd>
            <dd><img src="images/neko_1.jpg" alt="ブウくんの画像"></dd>
          </div>
          <div>
            <dt>ワラビくん 3歳</dt>
            <dd>シンガプーラ</dd>
            <dd><img src="images/neko_2.jpg" alt="ワラビくんの画像"></dd>
          </div>
          <div>
            <dt>キイくん 2歳</dt>
            <dd>スコティッシュフォールド</dd>
            <dd><img src="images/neko_3.jpg" alt="キイくんの画像"></dd>
          </div>
          <div>
            <dt>ミイちゃん 2歳</dt>
            <dd>スコティッシュフォールド</dd>
            <dd><img src="images/neko_4.jpg" alt="ミイちゃんの画像"></dd>
          </div>
        </dl>
        <p>お部屋によって、待っている猫ちゃんが違います。</p>
      </div>
    </section>

    <section id="cont-2">
      <div>
        <h2>お部屋のご案内</h2>
        <p>今日はどの部屋でくつろぎますか?</p>
        <div id="room-container">
          <section>
            <h3><a href="cat.html#room3">3Fにゃんルーム</a></h3>
            <p><img src="images/room_3f.jpg" alt="3Fにゃんルームの画像"></p>
            <p>3Fにゃんルームで待つ猫ちゃんは2匹。<br>
            おとなしめの猫ちゃんたちと、ゆったり時間を過ごせます。</p>
          </section>
          <section>
            <h3><a href="cat.html#room2">2Fにゃんルーム</a></h3>
            <p><img src="images/room_2f.jpg" alt="2Fにゃんルームの画像"></p>
            <p>元気で遊び盛りの猫ちゃんが4匹。<br>
            広々としたリビングで思う存分、猫ちゃんたちと遊べます。</p>
          </section>
          <section>
            <h3><a href="cat.html#room1">1Fにゃんルーム</a></h3>
            <p><img src="images/room_1f.jpg" alt="1Fにゃんルーム画像"></p>
            <p>人懐っこい4匹の猫ちゃんがお出迎え。<br>
            お食事やお茶を楽しみながら、猫ちゃんとゆっくりできるスペースです。</p>
          </section>
        </div>
        <p>この他にも、お部屋は3室あります。</p>
      </div>
    </section>

    <section id="cont-3">
      <div>
        <h2>ご利用案内と料金について</h2>
        <p>猫が大好き!でも飼えない。<br>
        気に入った猫ちゃんと暮らしてみたい。<br>
        「ただいま!」と、まるで自分のおうちに帰ってきたように、猫ちゃんたちが待つお部屋で、ゆっくりとくつろいで欲しい。<br>
        あなたと猫ちゃんとの時間を、大切にしている保護猫カフェです。</p>
        <div id="info-container">
          <section id="info-item1">
            <h3>基本料金</h3>
            <table>
              <tr>
                <th>一般</th><td>1,000円</td>
              </tr>
              <tr>
                <th>大学生</th><td>700円</td>
              </tr>
              <tr>
                <th>高校生以下</th><td>500円</td>
              </tr>
            </table>
            <p>基本60分でフリードリンク付きです。<br>
            一般の方は1000円、大学生は700円、高校生以下は500円となります。</p>
            <p>最初の60分以降、30分ごとに300円の追加料金で予約できます。</p>
            <p>お部屋によって、料金は変わりません</p>
          </section>
          <div id="info-item2">
            <section>
              <h3>ご予約について</h3>
              <p>ご利用は、完全予約制です。<br>
              予約ページから、ご希望の日時とお部屋をご予約できます。</p>
            </section>
            <section>
              <h3>お食事について</h3>
              <p>お食事は、1Fにゃんルームのみのご利用となります。</p>
              <p>お食事は別途料金が必要になります。<br>
              カフェメニューのページをご覧ください。</p>
            </section>
          </div>
        </div>
      </div>
    </section>

    <section id="cont-4">
      <div>
        <h2>営業時間・交通アクセス</h2>
        <section id="open">
          <div>
            <h3>営業時間について</h3>
            <p>営業時間は、11:30から21:00まで(最終入店時間は20:00)となります。<br>
            定休日は毎週月曜日です。月曜が祝日の場合は、翌平日をお休みとさせていただきます。</p>
            <p>その他、年末年始等の営業につきましては、お知らせでご確認ください。</p>
          </div>
        </section>
        <section id="access-container">
          <div>
            <h3>交通アクセス</h3>
            <p>所在地は、東京都新宿区西新宿1-x-x<br>
            電話番号は、01-2345-6789</p>
            <p>新宿西口駅前、徒歩3分です。<br>
            東京駅からJR中央線で14分、上野駅からJR山手線で24分。<br>
            JR・小田急線・京王線・地下鉄から地下街、駅前から歩道橋が直結しています。</p>
            <p>お車でお越しの方は、お近くのコインパーキングをご利用ください。</p>
          </div>
          <p>地図</p>
        </section>
      </div>
    </section>
        
    <section id="cont-5">
      <div>
        <h2>お知らせ</h2>
        <dl>
          <div>
            <dt>2022年10月1日</dt>
            <dd>秋にピッタリな、スイーツとお食事はいかが?</dd>
            <dd><img src="images/news_10.jpg" alt="食欲の秋の画像"></dd>
          </div>
          <div>
            <dt>2022年9月1日</dt>
            <dd>読書の秋!ゆっくりと、読書をしながら…</dd>
            <dd><img src="images/news_9.jpg" alt="読書の秋の画像"></dd>
          </div>
          <div>
            <dt>2022年8月1日</dt>
            <dd>猫ちゃんたちも、暑さでぐったりしています。</dd>
            <dd><img src="images/news_8.jpg" alt="夏の画像"></dd>
          </div>
          <div>
            <dt>2022年7月1日</dt>
            <dd>猫ちゃんたちの夏ファッションが楽しめます。</dd>
            <dd><img src="images/news_7.jpg" alt="ネコファッションの画像"></dd>
          </div>
          <div>
            <dt>2022年6月1日</dt>
            <dd>雨の日は、ねこ部屋でゆっくりしませんか?</dd>
            <dd><img src="images/news_6.jpg" alt="梅雨の画像"></dd>
          </div>
        </dl>
      </div>
    </section>
  </main>

  <footer>
    <p>2022 © TOU-WEB</p>
  </footer>
</body>
</html>
layout.css
img{
    width:100%;
    max-width: 100%;
    height: auto;
}
header,
nav,
main,
section,
section>div,
footer{
    width: 100%;
}
#cont-1 dl,
#room-container,
#info-container,
#open,
#access-container,
#cont-5 dl
{
    width:960px;
    margin: 0 auto;
    display: flex;
    justify-content: space-around;
    flex-flow: row nowrap;
}
#lead{
    padding:80px 0;
}

#cont-1 dl div{
    width: 23%;
    display: flex;
    flex-flow: column wrap;
}
#cont-1 dt{
    order: 2;
    text-align: center;
    margin-bottom: 20px;
}
#cont-1 dd{
    order: 3;
    text-align: center;
    margin-bottom: 20px;
}
#cont-1 dd:last-of-type{
    order: 1;
    text-align: center;
}

#room-container section{
    width: 32%;
}

#info-item1,
#info-item2{
    width: 45%;
}

#open{
    display: block;
}
#access-container div{
    width: 310px;
}
#access-container>p{
    width: 640px;
    background-color: rgb(200, 200, 200);
}

#cont-5 dl{
    flex-flow: row wrap;
    justify-content: space-between;
}
#cont-5 dl div{
    width: 45%;
}

Chap13-1解答の詳細度問題を解決する

Master
Master

前回解答した時に修正した人は、作業不要です。

    nav a:link,
    nav a:visited{
      color:rgb(51,51,51);
      text-decoration: none;
    }
    nav a:hover{
      background-color:rgb(255,210,210) ;
      color: rgb(200,50,0);
    }
Master
Master

【注意】他にもnavを追加するところがありますが、Chap13-4で修正することになります。

<h1>の文章に影をつける

背景画像の上に直接文章がある場合、文字が読みづらくなることがあります。
解決する方法はいくつかありますが、ここではtext-shadowプロパティを使って文章に影をつけます。

    h1{
      background-image: url(images/bg_h1.jpg);
      background-size: cover;
      background-position: center;
      background-attachment:fixed;
      text-align: right;
      font-size: 32px;
      font-weight: bold;
      padding: 60vh 5% 10vh 0;
      color: rgb(255,255,255);
      line-height: 140%;
      text-shadow: 0px 0px 3px rgba(0,0,0,0.75);
    }

「お部屋のご案内」を完成させる

ページをデザインする時、統一感を出すために同じデザインを繰り返し使うことが多くなります。(デザインの4原則「反復」)
CSSを作成する時にも、こういった反復した部分はセレクタを半角カンマで区切って、効率よく記述すると良いでしょう。

#cont-2に背景画像を表示
    #cont-1,
    #cont-2{
        background-image: url(images/bg_1.jpg);
        background-repeat: no-repeat;
        background-position: center;
        background-size: cover;
        background-attachment: fixed;
        padding-top: 50vh;
    }

背景画像だけ上書きし、他の部分は継承されます。

    .cont_link{
        color: rgb(0, 60, 255);
        text-decoration: underline;
    }

    #cont-2{
        background-image: url(images/bg_2.jpg);
    }
<div>の背景色と上下の余白
    #cont-2{
        background-image: url(images/bg_2.jpg);
    }
    #cont-2>div{
        background-color: rgb(255,255,255);
        padding: 80px 0;
    }
<p>のレイアウト、<h3>のデザイン

セレクタの使い方に注目!継承・追加も出てきます。

    #cont-2 h2+p{
        text-align: center;
        margin-bottom: 30px;
    }
    #room-container h3{
        background-repeat: no-repeat;
        background-position: right bottom;
        background-size: contain;
        font-size: 18px;
    }
    #room-container section:first-child h3{
        background-image: url(images/illust_4.png);
    }
    #room-container section:nth-child(2) h3{
        background-image: url(images/illust_2.png);
        background-size: auto 80%;
    }
    #room-container section:last-child h3{
        background-image: url(images/illust_3.png);
        background-size: auto 50%;
    }
Master
Master

セレクタの記述や考え方、選び方を理解できるようにしておきましょう。