teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードや質問文の抜けを修正しました。

2019/10/15 05:00

投稿

gtgt
gtgt

スコア5

title CHANGED
File without changes
body CHANGED
@@ -54,7 +54,7 @@
54
54
  ### 起きている問題
55
55
 
56
56
  別ページに飛んだときは正しく動作し、ヘッダー分の高さだけ位置をずらして飛ぶことができています。レスポンシブにも対応できました。
57
- しかし、同ページ内で遷移したときに高さの調節が効いていないようで、idを指定しているh2見出しがheaderに隠れてしまいます。
57
+ しかし、同ページ内で遷移したときに高さの調節が効いていないようで、idを指定しているdivセクションのh2見出しがheaderに隠れてしまいます。
58
58
 
59
59
  ### 補足情報
60
60
  jQueryバージョンは3.4.1です。
@@ -72,14 +72,16 @@
72
72
  <!--#include virtual="./header.html" -->
73
73
 
74
74
  <div class="container" id="1">
75
- <div class="row center">
75
+ <div class="row">
76
+ <h2>見出し1</h2>
76
- ここにコンテンツ
77
+ ここにコンテンツ1
77
78
  </div>
78
79
  </div>
79
80
 
80
81
  <div class="wrapper" id="2">
81
82
  <div class="container">
82
83
  <div class="row">
84
+ <h2>見出し2</h2>
83
85
  ここにコンテンツ
84
86
  </div>
85
87
  </div>

1

html/css/jsコードの追記

2019/10/15 05:00

投稿

gtgt
gtgt

スコア5

title CHANGED
File without changes
body CHANGED
@@ -59,4 +59,97 @@
59
59
  ### 補足情報
60
60
  jQueryバージョンは3.4.1です。
61
61
 
62
- お力を貸していただけたら幸いです。よろしくお願いします。
62
+ お力を貸していただけたら幸いです。よろしくお願いします。
63
+
64
+ ### 2019.10.15追記
65
+
66
+ ご指摘がありましたので、当該html/cssも載せます。
67
+ SSIによってメニューバーを含むヘッダーを共通化しています。サーバーはロリポップ!です。
68
+
69
+ index.htmlが以下。
70
+ ```html
71
+
72
+ <!--#include virtual="./header.html" -->
73
+
74
+ <div class="container" id="1">
75
+ <div class="row center">
76
+ ここにコンテンツ
77
+ </div>
78
+ </div>
79
+
80
+ <div class="wrapper" id="2">
81
+ <div class="container">
82
+ <div class="row">
83
+ ここにコンテンツ
84
+ </div>
85
+ </div>
86
+ </div>
87
+
88
+ ```
89
+
90
+ SSIで呼び出しているheader.htmlが以下。
91
+
92
+ ```html
93
+
94
+ <header>
95
+ <nav>
96
+ <div class="container">
97
+ <div class="row">
98
+ <div class="col-md-4">
99
+ <h1><a href="index.html">サイトタイトル</a></h1>
100
+ </div>
101
+ <div class="col-md-8">
102
+ <ul class="d-none d-md-flex">
103
+ <li><a href="works.html">リスト1</a></li>
104
+ <li><a href="index.html#1">リスト2</a></li>
105
+ <li><a href="index.html#2">リスト3</a></li>
106
+ <li><a href="mailform.html">メールフォーム</a></li>
107
+ </ul>
108
+ </div>
109
+ </div>
110
+ </nav>
111
+ </header>
112
+ ```
113
+ header.htmlは、index.html以外のページにおいても、SSIを用いて共通パーツとして呼び出しています。
114
+
115
+ ヘッダーを固定するのは、ある程度スクロールしたらnavに.is-fixedクラスを付与する形で行っています。jsおよびCSSは以下。
116
+
117
+ ```js
118
+ $(function() {
119
+ var $win = $(window),
120
+ $main = $('main'),
121
+ $nav = $('nav'),
122
+ navHeight = $nav.outerHeight(),
123
+ navPos = $nav.offset().top,
124
+ fixedClass = 'is-fixed';
125
+
126
+ $win.on('load scroll', function() {
127
+ var value = $(this).scrollTop();
128
+ if ( value > navPos ) {
129
+ $nav.addClass(fixedClass);
130
+ $main.css('margin-top', navHeight);
131
+ } else {
132
+ $nav.removeClass(fixedClass);
133
+ $main.css('margin-top', '0');
134
+ }
135
+ });
136
+ });
137
+ ```
138
+ ```css
139
+
140
+ .is-fixed {
141
+ position: fixed;
142
+ top: 0;
143
+ left: 0;
144
+ z-index: 1000;
145
+ box-shadow: 0px 0px 6px 3px rgba(79, 79, 79, 0.26);
146
+ }
147
+ ```
148
+
149
+ なお、CSSでのheader・navのheight値の指定はしていません。
150
+
151
+ 高さ合わせが上手くいく例
152
+ ◯works.htmlにいる状態で、index.html#2へのリンクをクリックする(別ページ遷移)
153
+
154
+ 高さ合わせが上手くいかない例
155
+ ×index.htmlにいる状態で、index.html#2へのリンクをクリックする(同ページ内遷移)