yuta_san0629
@yuta_san0629 (蜜柑 猫)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

背景色の固定

htmlとcssで掲示板サイトを作ろうと思っています。
背景部分に関して分からないのでご指導お願いします。

解決したいこと・やりたいこと

・背景色部分がスクロールになってしまう(逆に画像の書き込みだけスクロールするようにしたい)
・画面の大きさを変えても背景色がそのままであってほしい(スクロールはしない)
・真ん中に投稿された文字を並べたい
無題.png

html

<!DOCTYPE html>
<html lang="jp" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>新SNS_lime(仮)</title>
    <link rel="stylesheet" href="common.css">
    <link rel="stylesheet" href="SNS_lime.css">
  </head>
  <body>

    <div class="header">
      <div class="container">
        <div class="header-center">
         <div style="text-align: center">
           <h1>新SNS_lime(仮)</h1>
         </div>
         <!-- "header-center"で"text-align: center"を囲む事で中央に表示 -->
        </div>
        <div class="header-right">
          <a href="menu.html">メニュー</a>
          <a href="timeline.html">タイムライン</a>
          <a href="directmessage.html">DM</a>
          <a href="video.html">動画</a>
        </div>
        <div class="clear"></div>
      </div>
    </div>

    <div class="main-contents">
      <div class="main-contents-text">
        <h1 class="text">テキスト</h1>
      </div>
      <div class="main-contents-background">
      </div>
    </div>

    <div class="footer">
      <div class="container">
        <div class="footer-left">
          <p>テスト</p>
        </div>
        <div class="footer-right">
          &copy; 2022 新SNS_lime(仮)
        </div>
        <div class="clear"></div>
      </div>
    </div>



  </body>
</html>

css

*{
margin:0;
padding:0;
}

/* cssリセットによりヘッダーの隙間を解消多分chromeとズレがあったらしい */

.header {
  height: 87px;
  width: 100%;
  background-color: #ffe79e;
  position: fixed;
  top: 0;
}

.header-center {
  height: 40px;
  margin-top: 8px;
}

.header-right {
  float: right;
}

.clear{
  clear: both;
}

.header-right a {
  line-height: 100%;
  color: #5a5c5f;
  margin-left: 5px;
  font-size: 16px;
  padding: 16px 5px;
}

.header-right a:hover {
  background-color: #e2f1ff;
}

.container {
}

.main-contents-background {
  background-size: 300px;
  background-color: #fff7df;
}

/* divで囲っているからでしょうか? */

.h1 {
  text-align: center;
}

.footer {
  position: fixed;
  bottom: 0;
  height: 120px;
  width: 100%;
  background-color: #2f3a44;
  color: #e8e8e8;
  padding-top: 20px;
}

.footer-left {
  float: left;
}

.footer-right {
  float: right;
  padding-bottom: 8px;
}

0

3Answer

Comments

  1. @yuta_san0629

    Questioner

    そうですそうです!!
    全然コード理解できませんが、雰囲気でなら完璧に分かった気がします!!
    ありがとうございます!!
  2. >margin-top:87px;
    >height:calc(100vh - (87px + 125px));

    ↑で、「main-contents」をヘッダとフッタのあいだぴったりに表示させるようにして、

    >overflow-y: scroll;

    ↑で、はみ出た分はスクロール表示という感じで実装しています。



    あとはデザインをいい感じにするために、コンテンツを中央に表示して背景色をつけたり、角を丸くしたり、余白を追加したり…ちょこちょこスタイルを追加しています。
  3. @yuta_san0629

    Questioner

    うーん、間違っているかもしれないんですけど

    >margin-top:87px;
    >height:calc(100vh - (87px + 125px))

    ↑によって、まず、ヘッダとフッダの間にmain-contentsが表示されるように指定されているワケで、でもこれだと横並びになるから

    >overflow-y: scroll;

    ↑によって縦に設定した

    という解釈であってますか?

すみません、こっちの作りの方が保守性高そうです。
body自体をflexboxにして、ヘッダとフッタ以外はメインコンテンツで埋めるような形で縦に並べています。
そうすることで、ヘッダやフッタの高さを変えてもメインコンテンツの高さを修正する必要がなくなります。

See the Pen Untitled by yotty (@yotty) on CodePen.

1Like

Comments

  1. @yuta_san0629

    Questioner

    なるほど、さっきのは
    main-contentsをヘッダとフッダに合わせただけで、その場合は逐一手動で設定しないというわけで、謂わば紙切れを並べている状態に過ぎなかったと。

    それでこっちはヘッダとフッダに影響を受けないということですかね?
    謂わばその上下がヘッダとフッダにくっついているようなイメージですかね?
  2. そのようなイメージであってます!
    メインコンテンツがヘッダとフッタ以外の領域を埋めるような高さに変動するというようなイメージです。

うーん、間違っているかもしれないんですけど
margin-top:87px;
height:calc(100vh - (87px + 125px))
↑によって、まず、ヘッダとフッダの間にmain-contentsが表示されるように指定されているワケで、でもこれだと横並びになるから
overflow-y: scroll;
↑によって縦に設定した
という解釈であってますか?

言葉足らずですみません。
divタグで要素を並べているので横並びにはならないです。

margin-top:87px;
height:calc(100vh - (87px + 125px))

↑これで、メインコンテンツの高さをヘッダとフッタの間の高さにしています。

ただ、メインコンテンツの高さを超えた分は背景色を超えた領域として表示されて、ページ全体のスクロールとなってしまいます。

image.png

そこで、overflow-y: scroll;でメインコンテンツ部分の縦スクロールを設定して、はみ出た個所もメインコンテンツの領域として表示できるようにしているというようなイメージです。


余談ですが、デベロッパーツールを使えば簡単にスタイルの適用のオンオフを切り替えられます。
適用されているスタイルをオフにしてどこが変わるのかを観察することで、「このスタイルはどういった理由で指定してるのか」を把握するのに役立ちます:qiitan:

1Like

Comments

  1. @yuta_san0629

    Questioner

    ありがとうございます!!
    参考になりました!!

Your answer might help someone💌