jQueryを使った方法も記事にされているのですが、今回は、CSSを使って「ナビゲーションを固定し、スクロールしても動かないメニュー」を作成する方法を書きます。
jQueryを使った方法は、リンクをご参考に下さい。
jQueryでスクロールすると上部に固定されるナビゲーション | webOpixel [JS]ナビゲーションを最上部に固定し、各セクションにアニメーションでスクロール移動させるスクリプト -SMINTjQueryを使った方法も記事にされているのですが、今回は、CSSを使って「ナビゲーションを固定し、スクロールしても動かないメニュー」を作成する方法を書きます。
jQueryを使った方法は、リンクをご参考に下さい。
jQueryでスクロールすると上部に固定されるナビゲーション | webOpixel [JS]ナビゲーションを最上部に固定し、各セクションにアニメーションでスクロール移動させるスクリプト -SMINT
IEやGoogle Chromeなどブラウザには、CSSを設定しなくとも、あらかじめ、デフォルトのスタイルが用意されている。
それらを避け、ブラウザ間での見え方を統一するために、デフォルトのスタイルを無効にすることを、「CSSをリセットする。」という。
CSS をコーディングしていると、同じプロパティに異なる値が指定されていたりします。
そのような場合、CSS スタイルの優先順位が適用される。
CSSの優先順位は、
によって決定される。
ボックスを透明にするプロパティ。
適用要素 | 全ての要素 |
値の継承 | ○ |
初期値 | visible |
指定可能な値 | visible : ボックスを見える状態にする。 |
hidden : ボックスを透明にする。 | |
inherit : 親要素と同じ値。 |
プロパティの値 | 適用される箇所 |
border-color: A; | A:上下左右 |
border-color: A B; | A:上下 B:左右 |
border-color: A B C; | A:上 B:左右 C:下 |
border-color: A B C D; | A:上 B:右 C:下 D:左 |
全てのHTML要素は、CSSで「ボックス」と呼ばれる「四角い領域」として扱われる。
content (コンテンツ領域)に、テキストや画像などの要素の内容が表示される。
その内側から、padding (パディング)、border (境界線)、margin (マージン)と外側へ領域を持つ。
width, height プロパティで指定できるプロパティは、コンテンツ領域を指定できるプロパティであって、ボックス全体の横幅や高さを指定できるプロパティではないことに、注意。
ブラックボックスの前後は改行され、上から下へ配置される。
width,height,上下左右の margin, padding が指定できる。
インラインボックスは、改行は入らず、左から右に横方向に配置される。
基本的に、width,height,上下の margin は指定できない。
border の内側に、background-color により、背景色を付けることが出来る。
背景色が付くのは、width,height,padding までの領域で、margin の領域には背景は付かない。
border (境界線)には、太さ、線種、色を指定できる。
width,height は、コンテンツ領域を設定し、border,padding が存在する場合は、見た目の幅と width,height が一致しない。
ボックスサイズの計算は、レイアウトを組む際の基本となる。
レイアウトなどで計算する場合、
と把握すれば、イメージしやすい。
ボックス全体の横幅 = コンテンツ領域の横幅 width + 左右のマージンの幅 + 左右のパディングの幅 + 左右のボーダーの太さ
ボックス全体の高さ = コンテンツ領域の高さ + 上下のマージンの幅 + 上下のパディングの幅 + ボーダーの太さ
レイアウトを組む場合、正しく計算し、width を割り出さないと、カラム落ちが起きてしまう。