この実装方法は巧い! コンテンツが少ない量でもフッタを一番下に配置するCSSのテクニック
Post on:2021年11月30日
ページのコンテンツが少なくても、フッタを一番下に配置するCSSのテクニックを紹介します。コンテンツが多ければ、成り行きで配置されます。
フッタの高さは自由で、CSS GridやFlexboxやcalc()
は使用せず、追加のラッパーも必要ありません。シンプルなHTMLに、数行のCSSで簡単に実装できます。
A Clever Sticky Footer Technique
by Chris Coyier
下記は各ポイントを意訳したものです。
※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。
はじめに
「スティッキーフッタ」というと、ページをスクロールした時にぴたっと固定表示されるposition: sticky;
を思い浮かべる人が多いと思います。
しかし、それはここで話すこととはすこし異なります。
「スティッキーフッタ」はposition: sticky;
が存在する以前からあったUIのコンセプトで、その意味するところは少し異なります。そのコンセプトは、ページのコンテンツが十分な量でなくてもフッタは一番下に配置されるです。もちろん、十分なコンテンツがある場合、フッタはコンテンツの下に押し出されます。
私は以前に5つの方法を紹介しましたが、その中にはcalc()
やflexbox、CSS Gridなど、モダンなテクニックも含まれています。
6人目のチャレンジャーが現れました!
Sílvio Rosaからの投稿を紹介します。
コンテンツが十分な量でなくてもフッタを一番下に配置する方法
デモをご覧ください。
デスクトップのスクリーンで確認するのが一番簡単だと思います。
デモにはヘッダ・コンテンツ・フッタとあり、コンテンツが十分な量でなくてもフッタは一番下に表示されています。
このページでデモを表示しても分かりにくいかもしれませんので、右上「Edit on CodePen」をクリックして別タブでご覧ください。
See the Pen
sticky footer sticky by Silvio (@silvio-r)
on CodePen.
たったこれだけでのCSSで実現できます。
1 2 3 4 5 6 |
html, body { height: 100%;} body > footer { position: sticky; top: 100vh; } |
このCSSで私が気に入っている点は、追加のラッパーを必要としないことです。
ちなみに、HTMLもシンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<header>Header</header> <main> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Voluptatem vel cumque quis animi nisi, odit totam laborum quam molestias sed quidem, dolorum deleniti quae possimus obcaecati eaque praesentium alias! Aperiam.</p> <p>Blanditiis maxime odit expedita modi a itaque? Placeat expedita nam, aut ea odit dolores est optio ut odio pariatur! Similique pariatur perferendis quaerat sequi. Eligendi qui illo nesciunt voluptates facilis!</p> <p>Reiciendis rem inventore asperiores sapiente cupiditate officia facilis earum accusantium deserunt, incidunt molestias! Fuga fugiat eveniet explicabo. Eveniet soluta voluptates saepe minima veniam illum error atque quibusdam, veritatis cupiditate culpa.</p> <p>Voluptatum eligendi totam, beatae ut ea, minus aut voluptate atque eaque maiores officiis praesentium aperiam impedit consectetur vero quia at nostrum? Similique dolorem cupiditate quis veniam! Soluta assumenda voluptatum delectus.</p> </main> <footer> Footer - <a id="add-content" href="" role="button">ADD CONTENT</a> - <a id="remove-content" href="" role="button">REMOVE CONTENT</a> </footer> |
少し頭を悩ませられた点もあります。私はtop: 100vh;
と書かれていると、フッタが表示領域の外に押し出されてしまうので、うまくいかないのではないかと思いました。しかし、これがこのテクニックの巧妙なところです。
フッタのサイズは関係なく、position: sticky;
で下端に沿って吸い付きます。もちろん、コンテンツと重なることはないので、コンテンツの下に押し出されても構わないというのが、スティッキーフッタの基本的なコンセプトです。
sponsors