‘position:sitcky’というちょっと便利なcssがあるのです。 用途としては、グローバルナビゲーションをトップに固定したり、コンテンツをトップに止めてどんどん重ねていったりといったことができます。
See the Pen
position:sticky by 依田 康彦 (@eihnltmn)
on CodePen.
コンテンツを横並びにするときにY田はflexboxを使います。 すると、どうでしょう? positoin:stickyが効く条件はstickyアイテムが親要素で囲まれていることです。 これはどうしたことか… ヨシ、わからないときは検索だ! やっと見つけたのがCheat parkさんのこちらのページ。 今回はこちらのサイトを参考にしました。 なになに、flex-boxを使うと高さがそろってしまうのでstickyが効かないとな? で解決方法がalign-items:baselineをflex-boxの親要素に設定するそうです。 ということでやってみたところ、できるにはできたのですが、paddingの要素を無視してy軸の高さがすべてそろってしまう… align-items:flex-startでは効かんのやろか、って感じでやってみたのが下記のコードです。
See the Pen
position:sticky-1 by 依田 康彦 (@eihnltmn)
on CodePen.
わかりやすいように色を付けています。 あからさまにコンテンツの高さが変わってますよね。 もちろんこちらでもstickyは効いています。 結論から申し上げますと、flex-boxで横並びにしたときはalign-itemsを使うことでposition:stickyが効くようになる、positoin:stickyとは
javascriptを使わずともスクロール中のコンテンツを指定の場所に留め置くことができます。positoin:stickyが効かないだと?
ナビゲーションメニューとメインコンテンツを横並びにして、ナビゲーションメニューだけトップに止めておきたいということでコードを記述します。
今回はコードペンを使ってみました。
なので上記のような記述になります。
positoin:stickyが全く聞いていません。
そして、上記記述では留めておきたいnav(sticky)はflex-containerに囲まれています。flex-boxでは高さがそろう
ということで検索したのですが、stickyの使い方はすぐにでてくるのですが効かないという情報がなかなか収集できず…
css position stickyが効かない時の解決策!Flex-box使用時に効かなくなる?
ということでした。
