现在,我们基本上讲完了 CSS 布局的基本概念,以及布局的基本知识,作为此系列基础教程的最后一篇,我们来实现一个 Blog 的页面。
这里会用到前面学过的 HTML 基础和 CSS 基础,其中主要是布局相关的。
分析
要实现的页面看起来是这样的。
可以看到,从结构上它分成了顶部区域,导航栏区域和内容区域三大块。
其中内容区域又分成了左右两块内容。
HTML 实现
按三大块内容,分别使用 div, nav 和 main 来实现布局定位。
<div>顶部区域</div> <nav>导航栏区域</nav> <main>内容区域</main>
导航采用常规的列表。
<nav> <ul> <li> <a href="">首页</a> </li> <li> <a href="">HTML 21天入门</a> </li> <li> <a href="">CSS 21天入门</a> </li> <li> <a href="">关于我们</a> </li> </ul> </nav>
内容区域里采用 article 实现内容,而右侧的侧边栏则使用 aside 标签。
<main> <article>左侧内容(图片+文字)</article> <aside>右侧侧边栏(使用列表)</aside> </main>
CSS 入场
通过上面的 HTML 分析之后,这个页面从结构上已经非常清晰,接下来,该 CSS 上场进行装饰了。
首先对全局的样式做个定义。
body { background-color: #fff; color: #333; margin: 0; font: 1.2em / 1.2 Arial, Helvetica, sans-serif; } img { max-width: 100%; display: block; }
由于这些用到了一些图片,我们对图片进行了统一的设置。
.logo { font-size: 200%; padding: 50px 20px; margin: 0 auto; max-width: 980px; }
最顶部的区域,进行了简单的内外边距和字体的设置,另外设置了最大宽度。
剩余需要进行布局的部分主要是导航栏和内容区域。
导航栏
nav { background-color: #ff6600; padding: 0.5em; top: 0; position: sticky; } nav ul { margin: 0; padding: 0; list-style: none; display: flex; justify-content: space-between; } nav a { color: #fff; text-decoration: none; padding: 0.5em 1em; }
这里对 nav 标签进行了 position 的设置,采用 sticky,使得当滚动条向下时,导航栏能始终保持在是上面。
如果不记得 sticky,可以查阅定位 内容。
内容区域
.grid { margin: 0 auto; padding: 0 20px; max-width: 980px; display: grid; grid-template-columns: 3fr 1fr; gap: 20px; } /*应用在侧边栏的列表上*/ .photos { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; grid-template-columns: 1fr 1fr; } /*应用在左边文字的图片上*/ .feature { width: 200px; float: left; margin: 0 20px 20px 0; }
这里采用了 grid 的布局,并定义了两个类应用在侧边栏的列表和左侧的图片上。
总结
该文章在 2024/10/19 12:45:07 编辑过