質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • HTML5

    5615questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

  • CSS3

    2862questions

    CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

  • Webサイト

    1352questions

    一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

レスポンシブでコンテナ部分がずれる(見え方が異なる)/レスポンシブ対応記述について

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 214

anna_53

score 11

「HTML&CSSとWEBデザインが1冊で身につく本」という
参考書を見ながら、webサイト制作に挑戦しております。

現状

この本では、body部分にidを設定し、css側のbackground-imageで背景画像を表示させています。
いくつか制作パターンがあり、

  1. 全画面を背景にする(フルスクリーン)
  2. シングルカラムで上部だけ背景にする(マージンはcssで調整)

などなどです。

起きていたこと

bodyに背景を設定しているからだと思うのですが、マウスを下にスライドすると
MV以下のコンテンツ部分がMVにかぶさる現象が起きました。
※bodyに背景(MV)が入っているため、コンテンツとbodyのcssの記述がわからなかった。

<body id="index">
<!----  header始まり -->
<header>
<nav>
<ul class="global-nav">
<li><a href="about.html">About</a></li>
<li><a href="privacy.html">Privacy</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</header>
<!-- header終わり -->

自分で解決したこと

  1. css側で「background-size:contain;」としたところ、
    上記の問題点は解決できました。MVはレスポンシブにも対応できています。
  2. マージンは、要素と要素の距離を調整してくれると解釈しており、
    マージンの単位をpxから%に変えたところ解決。
/* ----MV----*/
#index {
  background-image: url(/img/bg-index2.png);
  background-repeat: no-repeat;
  background-position: center top;
/*background-attachment: fixed;*/
  background-size:contain; /* 縦横比を保持したまま、表示領域に収める*/
}

/* ----コンテンツ(MAP、サイドナビ)を中央に揃える---- */
.content {
  width: 960px;
  margin: 20% auto;
}

新たな問題

  1. MVは解決したのですが、コンテンツ(MV以下部分)をchromeの開発環境(F12)を使い
    レスポンシブを選択。画面を大きくしたり小さくしたりしてみました。
    最小サイズにしたところ、MVとコンテンツの間のマージンが広くなってしまいます。
    iPhone6/7/8は問題なく見れております。

  2. footerがコンテンツ上に表示されてしまう

<!-- footer始まり -->
<footer>
<small>(C)2018 abc.</small>
</footer>
<!-- footer終わり -->
/* ----ここからフッター---- */
footer {
  text-align: center;
  color: #ffffff;
  padding: 20px 0;
  background-color: #767671;
}

footer small {
  font-size: 12px;
}
/* ----ここまでフッター---- */

解決したいことと質問

  1. 上記レスポンシブのマージン対策をどのようにすべきでしょうか
  2. 制作、レスポンシブ初挑戦ですので、コメントが多く入っており見苦しいかもしれませんが、
    この記述が違う。などございましたらご指摘いただけますでしょうか。

※作っているのはコンテンツ部分が2カラム。左カラムにはGoogleMap。右はナビになります。

どうぞよろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=">
<title>あああああ</title>
<link href="https://fonts.googleapis.com/css?family=Bitter:400,700" rel="stylesheet">
<link href="../css/style.css" rel="stylesheet">
</head>

<body id="index">
<!-- header始まり -->
<header>
<nav>
<ul class="global-nav">
<li><a href="about.html">About</a></li>
<li><a href="privacy.html">Privacy</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</header>
<!-- header終わり -->

<!-- wrap始まり -->
<div id="wrap" class="clearfix">
<div class="content">
<div class="main">
<h1>MAP</h1>
<p>テキストテキスト</p>
<section class="google-map">

<!-- ここからgooglemap -->
<iframe src="URL"></iframe>
<!-- ここまでgooglemap -->

</section>
</div>

<!-- ここからサイドナビ -->
<aside class="sidebar">
<section>
<h2>テキスト</h2>
<ul>
<li><a href="#">エリア</a></li>
<li><a href="#">エリア</a></li>
<li><a href="#">エリア</a></li>
<li><a href="#">エリア</a></li>
<li><a href="#">エリア</a></li>
</ul>
</section>
<section>
<h2>テキスト</h2>
<ul>
<li><a href="#">テキスト</a></li>
<li><a href="#">テキスト</a></li>
<li><a href="#">テキスト</a></li>
</ul>
</section>
</aside>
<!-- ここまでサイドナビ -->
</div>
</div>
<!-- wrap終わり -->

<!-- footer始まり -->
<!--
<footer>
<small>(C)2018 ABC.</small>
</footer>
-->
<!-- footer終わり -->

</body>
</html>
@charset "utf-8";

body {
  margin: 0;
  padding: 0;
  background-color: #ffffff;
  color: #333333;
  font-size: 15px;
  line-height: 2;
}

/* ----ここからデフォルト解除---- */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 0;
}

img {
  vertical-align: bottom;
}

ul {
  margin: 0;
  padding: 0;
}

/* ----ここまでデフォルト解除---- */

/* ----aタグ---- */
a {
  color: #3583aa;
  text-decoration: none;
}

a:visited {
  color: #788d98;
}

a:hover {
  text-decoration: underline;
}

header {
  width: 960px;
  height: 100px;
  margin: 0 auto;
}

/* ----ここからグローバルナビ---- */
.global-nav {
  float: right;
  margin-top: 30px;
}

.global-nav li {
  float: left;
  margin: 0 20px;
  font-size: 20px;
  list-style: none;
  font-family: 'Bitter', serif;
}

.global-nav li a {
  color: #ffffff;
}

.global-nav li a:hover {
  border-bottom: 2px solid #ffffff;
  padding-bottom: 3px;
  text-decoration: none;
}

/* ----ここまでグローバルナビ---- */

/* ----MV----*/
#index {
  background-image: url(/img/bg-index2.png);
  background-repeat: no-repeat;
  background-position: center top;
/*  background-attachment: fixed;*/
  background-size:contain; /* 縦横比を保持したまま、表示領域に収める*/
}

/* ----コンテンツエリアの背景を白くする---- */
#wrap {
  clear: both; floatプロパティ左右の回り込み解除
  background-color: #ffffff;
}

/* ----コンテンツ(MAP、サイドナビ)を中央に揃える---- */
.content {
  width: 960px;
  margin: 20% auto;
}

/* ----ここからフッター---- */
footer {
  text-align: center;
  color: #ffffff;
  padding: 20px 0;
  background-color: #767671;
}

footer small {
  font-size: 12px;
}
/* ----ここまでフッター---- */


/* ----フォント---- */
h1 {
  font-family: 'Bitter', serif;
  font-size: 36px;
  border-bottom: 1px solid #cccccc;
}

h2 {
  font-family: 'Bitter', serif;
  font-size: 24px;
}


/* ----左カラムMAP---- */
.main {
  width: 700px;
/*  margin: 100px 10px;*/
  float: left;
}

/* ----サイドバー---- */
.sidebar {
  width: 200px;
  margin: 0 10px 0 30px;
  float: right;
  font-family: 'Bitter', serif;
}

.sidebar h2 {
  margin-bottom: 10px;
}

.sidebar ul {
  font-size: 16px;
  margin-left: 20px;
}

.sidebar ul a {
  color: #333333;
}


/* ----ここからSP---- */

@media screen and (max-width:600px) {

  body {
    font-size: 3.5vw;
  }

  h1 {
    font-size: 7.2vw;
  }

  h2 {
    font-size: 6vw;
  }

  header {
    width: auto;
    margin: 0 5%;
  }

  .gloval-nav {
    float: none;
    margin-top: 40px;
    text-align: center;
  }

  .gloval-nav li {
    display: inline;
    float: none;
    margin: 0 8px;
  }

  #wrap {
    margin-top: 48px;
    padding: 35px 0 0;
  }

  .content {
    width: 100%;
  }

  .main {
    float: none;
    width: auto;
    margin: 0 5%;
  }

  .sidebar {
    width: auto;
    float: none;
    margin: 0;
    padding: 30px 10% 10px;
  }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yoshinavi

    2018/12/07 05:05

    MVとは何ですか?

    キャンセル

  • anna_53

    2018/12/07 11:41

    略してしまいました(すみません!)メインビジュアルです。

    キャンセル

回答 3

checkベストアンサー

+1

footerがコンテンツ上に表示されてしまう

こちらは、 <div id="wrap" class="clearfix"> で指定されている clearfix のCSSが記述されていないのが原因です。CSSに下記の記述を追加してください。

.clearfix::after {
  content:"";
  display:block;
  clear:both;
}


なおCSSの中で #wrap に clear:both; が指定されてますが、これだと #wrap より前に設定されたfloatの解除にしかならないため、#wrapの子要素のfloat解除の効果はありません。
本を見ながら勉強中とのことですので、再度floatとfloat解除の仕組みを書籍で復習された方が良いと思います。

最小サイズにしたところ、MVとコンテンツの間のマージンが広くなってしまいます。

こちらは実際にどのように表示されているのか分からないので何とも言えませんが、
20%の上マージンでは広すぎる、ということであればメディアクエリで条件分岐して
もう少し小さいマージンを上書きすればよいのではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/05 14:56

    早々にありがとうございます。
    とても勉強になります。

    ★floatについて
    -------------------
    「左右に寄せる」という認識にとどまってしまっていましたので調べました。(ありがとうございます)
    最初に指定したらそれ以降の要素を回らせてしまう。
    (子要素をfloatで配置すると親要素の高さがなくなる)
    必要がない場合は解除。


    ★footerについて
    -------------------
    wrapが高さを認識できていなかった=footerが何も上にないと思って、上にあがってきてしまった。

    【解決方法】
    footerにclear: bothを伝える事で、回り込みが解除される。

    ★レスポンシブの余白について
    -------------------
    こちらはメディアクエリの記述が抜けておりましたので
    以下のように記述しました。(省略しております)

    @media screen and (max-width:600px) {

    .content {
    width: 100%;
    margin: 15% auto;
    }
    }

    ▼chromeのF12で確認
    問題ないように思うのですが、
    ipadではMVとコンテンツのマージンが窮屈になりました。

    ▼ウィンドウサイズを拡大縮小して確認
    最小サイズではMVとコンテンツのマージンがとても大きくなる

    ▼私の考え
    maxなので画面サイズが600px以下になる場合は、メディアクエリが適用される。

    お手数ですが、ご教授いただけますと幸いです。

    キャンセル

0

自己解決いたしました。
下記のpaddingを15pxにしましたところ修正ができました。

 #wrap {
    margin-top: 48px;
    padding: 15px 0 0;
  }

その他、少し確認してみてからベストアンサーとさせていただきます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

解決方法でしか画像が投稿できなかったのでこちらに投稿いたしました。

デベロッパーツールで確認しF5を押したり、
トグルデバイスでPCとその他を切り替えたりしてみたところ
下記のようになりました。

先ほどはMVは問題なかった。と記載したのですがそうではなかったようです。
お手数ですがご教授のほどお願いいたします。

イメージ説明

地図エリアが右に出ているのではなく、それ以外の要素が横に小さくなっているようです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • HTML5

    5615questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

  • CSS3

    2862questions

    CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

  • Webサイト

    1352questions

    一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

  • トップ
  • CSS3に関する質問
  • レスポンシブでコンテナ部分がずれる(見え方が異なる)/レスポンシブ対応記述について