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

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

9980閲覧

position:fixed;によるヘッダーの左右のずれ

imuzi.ayustet

総合スコア15

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/01/29 13:45

編集2018/01/30 12:55

HTML,CSSを学習中です。

ホームページのヘッダーをposition:fixed;で固定したいですが、
コードを記入するとヘッダーの中の要素が左側に寄ってしまいます。

<header> <div class="header"> <div class="header-wrapper"> <div class="header-logo"> <span>TITLE</span> </div> <div class="header-contents"> <span>content1</span> <span>content2</span> <span>content3</span> <span>content4</span> <span>content5</span> </div> </div> </div> </header>
.header-wrapper{ width:1170px; margin: 0px auto; }

イメージ説明

次のコードを加えると、下図のように左に寄ってしまいます。

.header-wrapper{ position:fixed; }

イメージ説明

ご回答よろしくお願いします。

追記
このコードで実現したいことは、ヘッダーの中身を左端に寄せずやや中央へ配置しつつ、ページをスクロールしてもヘッダーは動かないように固定することです。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/01/29 19:49

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答3

0

position:fixedによりmargin設定が無効化されています.

当該要素が中央揃えとなるようにleft値にcalc関数を用いた(動的な)計算結果を指定して下さい.

HTML

1<header> 2 <div class="header-wrapper"> 3 <div class="header-logo"> 4 <span>TITLE</span> 5 </div> 6 <div class="header-contents"> 7 <span>content1</span> 8 <span>content2</span> 9 <span>content3</span> 10 <span>content4</span> 11 <span>content5</span> 12 </div> 13 </div> 14</header>

CSS

1.header-wrapper{ 2 background-color:yellow; 3 width: 500px; 4 position: fixed; 5 left: calc((100% - 500px) / 2);/*(全体幅-要素幅)/2が余白*/ 6}

NOTE:
position: stickyを使う方法も考えました. が, この場合はどの要素をどの要素に引っ付けるか?が重要となるため, 要素の位置を無条件にビューポートに固定する用途においてはposition: fixedの方が適しています.

CSS

1header{ 2 position: sticky; 3 top: 0; 4} 5.header-wrapper{ 6 background-color:yellow; 7 width: 500px; 8 margin: 0px auto; 9} 10/* 11headerをその親要素にひっつけているので, 12親要素がスクリーンから見えなくなるとheader子要素も見えなくなる 13*/

投稿2018/01/30 00:33

defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imuzi.ayustet

2018/01/30 12:59

calc,ビューポートなど知らない知識が多くありました。 使いこなすのは少し難しそうですが、勉強になりました。 ご回答ありがとうございます。
guest

0

ベストアンサー

ご提示のコードでは細部が不明なので推測になりますが、単純に「header-wrapper」がディスプレイの中央から「position:fixed;」により左上端に寄っただけだと思います。

「header-logo」「header-contents」にtext-align: center;は入っていますか?

-追記-
固定方法が無かったですねスミマセン。
「header-wrapper」を中央・上端で固定したい場合、以下を試してみて下さい。

CSS

1.header-wrapper{ 2 position: fixed; 3 top: 0; 4 left: 0; 5 right: 0; 6 width: 1170px; 7}

投稿2018/01/30 04:49

編集2018/01/30 06:12
yoshinavi

総合スコア3523

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imuzi.ayustet

2018/01/30 12:58

書いていただいたコードを記載したら望んだ結果が得られたため、ベストアンサーにさせていただきました。 ありがとうございます。
yoshinavi

2018/01/30 13:02

解決されて何よりです。 (^^)
yukiko-yukiko

2021/03/14 15:53

コメント失礼いたします 私も同じ問題が起きていまして、 今試してみたところ 解決しました! とても嬉しいです ありがとうございます!
guest

0

.header-wrapperを下記CSSにしてみて下さい。

CSS

1.header-wrapper { 2 left: 0; 3 position: fixed; 4 right: 0; 5 width:1170px; 6}

投稿2018/01/30 00:32

patapata5050

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imuzi.ayustet

2018/01/30 13:00

参考にさせていただきました。 ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問