HTML5とCSS3でそれっぽいページを作ってみる
HTML5とCSS3を使ってこんな感じのそれっぽいページを作ってみました。
HTMLコードは以下の通りです。
index.html
<!doctype html> <html> <head> <meta charset="UTF-8"> <link href="hoge.css" rel="stylesheet" type="text/css"> <title>hoge</title> </head> <body> <div id="topbar"> <header> <p>hoge</p> </header> <nav> <ul> <li class="active"><a href="index.html">Top</a></li> <li><a href="profile.html">Profile</a></li> <li><a href="blog.html">Blog</a></li> <li><a href="link.html">Link</a></li> </ul> </nav> </div> <article> <h1>hoge</h1> <p> hogehoge</p> <p> hogehoge</p> <p> hogehoge</p> <p> hogehoge</p> </article> <footer> <p>hoge</p> </footer> </body> </html>
- header, nav, article, footerのセクションに分割。
- headerとnavは#topbarでラップ。
- #topbarはスクロールした際にページ上部に固定されるようCSSを記述。
- navのリンクはリストで列挙(.activeで現在のページを緑色にハイライト)。
続いてCSS。
body { margin: 0px; display: flex; flex-direction: column; min-height: 100vh; } #topbar { position: sticky; top: 0; width: 100%; } header { margin: 0px; padding: 0.25em; background-color: black; } header p { color: white; } nav ul { list-style: none; margin: 0; padding: 0; overflow: hidden; background-color: #333; } nav li { float: left; } nav li a { display: block; color: white; text-align: center; padding: 14px 16px; text-decoration: none; } nav li:last-child { border-bottom: none; } nav li a:hover { background-color: #111; color: white; } .active { background-color: #4CAF50; color: white; } footer { background-color: lightgray; margin-top: auto; }
- body
- #topbar
- position: sticky, top: 0でページスクロール時にheaderとnavbarをページ上部に固定。
- nav ul
- list-style: noneでリストマークを非表示。
- margin: 0, padding: 0にリセット。
- overflow: hiddenが必要な理由は調査中。おまじない?
- nav li
- float: leftで要素を横方向に配置。
自分が思ったようにコンテンツを表示させようと試行錯誤してみましたが、ロジックパズルを解くようでなかなか面白いです。