2362 字
12 分钟
HTML + CSS 强化教程(把页面做得更漂亮)

HTML + CSS 强化教程(把页面做得更漂亮)#

前面几篇我们一直在学 JavaScript——它负责”逻辑”。但一个网页能不能让人眼前一亮,主要看 HTML(结构)CSS(外观)。这一篇把这两块系统讲透,学完你就能做出结构清晰、排版好看的页面。


一、HTML 强化:让结构”语义化”#

什么是语义化标签?#

HTML 有很多标签,不只是 <div><span>。用意思明确的标签来描述内容,就叫语义化。好处:代码好读、SEO(搜索引擎)更友好、无障碍设备(屏幕阅读器)能更好工作。

常见语义化标签:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>我的页面</title>
</head>
<body>
<header> <!-- 页头:logo、导航 -->
<h1>网站标题</h1>
<nav> <!-- 导航 -->
<a href="/">首页</a>
<a href="/about">关于</a>
</nav>
</header>
<main> <!-- 主体内容 -->
<article> <!-- 一篇文章/独立内容块 -->
<h2>文章标题</h2>
<p>文章内容...</p>
</article>
<section> <!-- 一个内容分区 -->
<h2>其他推荐</h2>
</section>
</main>
<footer> <!-- 页脚 -->
<p>© 2026 我的网站</p>
</footer>
</body>
</html>

标题层级要正确#

h1 一个页面通常只有一个(给页面主标题),下面用 h2h3 逐级细分,不要跳级(h1 直接到 h3 是不好的习惯)。

表单强化:input 的 type 类型#

input 有很多类型,浏览器会自带不同的交互:

<form>
<input type="text" placeholder="用户名"> <!-- 单行文本 -->
<input type="email" placeholder="邮箱"> <!-- 邮箱,浏览器会校验格式 -->
<input type="password" placeholder="密码"> <!-- 密码,显示为圆点 -->
<input type="number" min="0" max="100"> <!-- 数字,有上下箭头 -->
<input type="date"> <!-- 日期选择器 -->
<input type="checkbox"> 记住我 <!-- 复选框 -->
<input type="radio" name="gender"> 男 <!-- 单选 -->
<textarea placeholder="多行文本"></textarea> <!-- 多行文本 -->
<select>
<option>北京</option>
<option>上海</option>
</select>
<button type="submit">提交</button>
</form>

图片和链接的好习惯#

<!-- 图片:alt 是图片无法显示时的替代文字,也是 SEO 的一部分 -->
<img src="photo.jpg" alt="一张风景照" width="400">
<!-- 链接:加 target="_blank" 在新标签页打开 -->
<a href="https://example.com" target="_blank" rel="noopener">外部链接</a>

二、CSS 强化:选择器与优先级#

常用选择器#

/* 标签选择器 */
p { color: black; }
/* 类选择器:最常用 */
.card { background: white; }
/* id 选择器:一个页面唯一 */
#header { height: 60px; }
/* 后代选择器:.card 里的 p */
.card p { font-size: 14px; }
/* 子元素选择器:.menu 的直接子元素 li */
.menu > li { display: inline; }
/* 伪类:鼠标悬停 */
.btn:hover { background: blue; }
/* 伪类:第一个子元素 */
li:first-child { font-weight: bold; }
/* 属性选择器:type 为 email 的 input */
input[type="email"] { border: 1px solid gray; }

优先级(层叠规则)#

同一个元素被多个规则命中时,按优先级:

!important > 内联样式 > id > 类/伪类 > 标签 > 通配符

/* 优先级从低到高 */
* { color: gray; } /* 通配符,最低 */
p { color: blue; } /* 标签 */
.text { color: green; } /* 类 */
#main-text { color: red; } /* id,最高(不含 !important) */

新手最容易踩的坑:写了新样式但”没生效”——很可能是优先级不够,或者选择器写错了。用浏览器 F12 检查元素,右边会显示哪些规则生效、哪些被划掉。


三、盒模型:理解每个元素都是”盒子”#

CSS 里每个元素都是一个盒子,从外到内四层:

  1. margin(外边距):盒子与盒子之间的距离
  2. border(边框):盒子的边
  3. padding(内边距):内容与边框之间的空隙
  4. content(内容):文字、图片等
.box {
width: 200px;
padding: 20px; /* 四边内边距 */
border: 2px solid black;
margin: 10px; /* 四边外边距 */
}

注意: 默认情况下,width: 200px 只算内容宽度,实际盒子是 200 + 202 + 22 = 244px。要改这种计算方式,用:

.box {
box-sizing: border-box; /* width 包含 padding 和 border */
}

强烈建议全局设置:

* {
box-sizing: border-box;
}

这样 width: 200px 就是盒子总宽度 200px,计算省心多了。

简写记忆: padding: 10px 20px 是”上下 左右”;padding: 10px 20px 30px 40px 是”上 右 下 左”(顺时针)。


四、Flexbox:一维布局神器#

Flexbox(弹性盒) 是现在最常用的布局方式,专门解决”一排元素怎么摆”。

基本用法#

.container {
display: flex; /* 开启 flex */
justify-content: center; /* 主轴(水平)对齐 */
align-items: center; /* 交叉轴(垂直)对齐 */
gap: 10px; /* 元素间距 */
}

justify-content 的常用值(水平方向)#

.container {
display: flex;
justify-content: flex-start; /* 靠左(默认) */
/* flex-end 靠右 */
/* center 居中 */
/* space-between 两端对齐,中间等距 */
/* space-around 每个元素两侧等距 */
/* space-evenly 完全等距 */
}

align-items 的常用值(垂直方向)#

.container {
display: flex;
align-items: stretch; /* 拉伸填满(默认) */
/* flex-start 顶部对齐 */
/* center 垂直居中 */
/* flex-end 底部对齐 */
}

flex 方向#

.container {
display: flex;
flex-direction: row; /* 水平排列(默认) */
/* column 垂直排列 */
/* row-reverse 水平反向 */
}

子元素的 flex 属性:分配剩余空间#

.item {
flex: 1; /* 占满剩余空间(多个 1 就平均分) */
}
.sidebar { flex: 1; } /* 占 1 份 */
.main { flex: 3; } /* 占 3 份,主内容区更宽 */

实战:导航栏(最常见的 flex 应用)

<style>
.navbar {
display: flex;
justify-content: space-between; /* logo 靠左,菜单靠右 */
align-items: center;
padding: 10px 20px;
background: #333;
color: white;
}
.menu { display: flex; gap: 20px; list-style: none; }
</style>
<nav class="navbar">
<div class="logo">我的网站</div>
<ul class="menu">
<li>首页</li>
<li>关于</li>
<li>联系</li>
</ul>
</nav>

五、CSS Grid:二维布局#

Grid(网格)适合同时控制行和列的复杂布局(比如卡片墙、后台管理面板)。

.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* 三列,等宽 */
gap: 20px; /* 间距 */
}
  • 1fr 表示”一份”,1fr 1fr 1fr 就是三等分
  • 也可以用固定值:200px 1fr(第一列 200px,剩下给第二列)
  • repeat(3, 1fr) 等价于 1fr 1fr 1fr

实战:商品卡片网格

<style>
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.card {
border: 1px solid #ddd;
border-radius: 10px;
padding: 20px;
text-align: center;
}
</style>
<div class="grid">
<div class="card">商品 1<br>¥10</div>
<div class="card">商品 2<br>¥20</div>
<div class="card">商品 3<br>¥30</div>
<div class="card">商品 4<br>¥40</div>
<div class="card">商品 5<br>¥50</div>
<div class="card">商品 6<br>¥60</div>
</div>

选择建议: 一排的布局(导航、按钮组)用 Flex;多行多列的网格(卡片墙)用 Grid。


六、响应式设计:适配手机和电脑#

现在很多人用手机看网页。响应式设计就是让页面在不同屏幕宽度下自动调整。

关键一行:viewport#

<meta name="viewport" content="width=device-width, initial-scale=1.0">

没有这行,手机浏览器会把页面按桌面宽度缩小显示,字小得没法看。每个页面都必须加。

媒体查询:按屏幕宽度应用不同样式#

/* 默认(电脑)样式 */
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
/* 屏幕宽度小于 768px(手机/平板竖屏)时 */
@media (max-width: 768px) {
.grid {
grid-template-columns: 1fr; /* 变成一列 */
}
}

流式布局技巧#

  • 宽度用百分比或 max-width 而不是写死像素:
.container {
max-width: 1200px; /* 最大 1200px */
margin: 0 auto; /* 居中 */
}
  • 图片 max-width: 100% 防止溢出
img {
max-width: 100%;
height: auto;
}

七、让页面好看:样式小技巧合集#

字体与颜色#

body {
font-family: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
color: #333;
line-height: 1.6; /* 行高,正文推荐 1.5-1.8 */
}
h1 { font-size: 32px; font-weight: 700; }
p { font-size: 16px; }

配色建议: 新手别自己瞎配色,用现成方案:

  • 文字用深灰(#333)而不是纯黑
  • 背景用白或浅灰(#f5f5f5)
  • 主色一个就够,其他都用同色系深浅

圆角、阴影、边框#

.card {
border-radius: 12px; /* 圆角 */
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); /* 阴影:水平 垂直 模糊 颜色 */
border: none;
}

过渡与动画#

.btn {
background: #4a90d9;
color: white;
padding: 10px 20px;
border-radius: 8px;
transition: all 0.3s; /* 变化过程 0.3 秒 */
}
.btn:hover {
background: #357abd; /* 悬停变深,过渡让变化更顺滑 */
transform: translateY(-2px); /* 微微上移 */
}

简单动画(永远在动):

@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
.hot {
animation: pulse 2s infinite;
}

八、完整案例:一张好看的”个人信息卡片”#

把上面的知识全用上,做一张精致的卡片:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>个人信息卡片</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: system-ui, "PingFang SC", "Microsoft YaHei", sans-serif;
background: #f0f2f5;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.card {
width: 320px;
background: white;
border-radius: 16px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
overflow: hidden; /* 圆角裁掉头像溢出 */
transition: transform 0.3s;
}
.card:hover { transform: translateY(-4px); }
.avatar {
width: 100%;
height: 160px;
background: linear-gradient(135deg, #667eea, #764ba2); /* 渐变背景代替图片 */
}
.info { padding: 24px; text-align: center; }
.name { font-size: 22px; font-weight: 700; }
.title {
color: #888;
font-size: 14px;
margin: 8px 0 16px;
}
.tags { display: flex; justify-content: center; gap: 8px; }
.tag {
background: #eef1ff;
color: #5a6acf;
padding: 4px 12px;
border-radius: 20px;
font-size: 13px;
}
.btn {
margin-top: 20px;
width: 100%;
padding: 10px;
border: none;
border-radius: 8px;
background: #667eea;
color: white;
font-size: 16px;
cursor: pointer;
transition: background 0.3s;
}
.btn:hover { background: #5566d8; }
</style>
</head>
<body>
<div class="card">
<div class="avatar"></div>
<div class="info">
<div class="name">小明</div>
<div class="title">前端开发学习者</div>
<div class="tags">
<span class="tag">JavaScript</span>
<span class="tag">HTML</span>
<span class="tag">CSS</span>
</div>
<button class="btn">关注我</button>
</div>
</div>
</body>
</html>

打开看效果:居中卡片、渐变头像、圆角标签、悬停上浮的按钮——这些都是真实网站常用的视觉元素。


九、总结#

这一篇我们强化了:

  • 语义化 HTML:header、nav、main、article、footer,结构清晰
  • CSS 选择器与优先级:知道样式为什么不生效
  • 盒模型:margin、padding、border、content,配合 border-box
  • Flexbox:一排元素的布局(导航栏)
  • CSS Grid:多行多列的网格布局(卡片墙)
  • 响应式设计:viewport + 媒体查询,适配手机
  • 美化技巧:字体、配色、圆角、阴影、过渡动画
  • 完整案例:个人信息卡片

下一篇进入框架:Vue 和 React。有了 HTML/CSS/JS 的地基,框架会好懂很多。

HTML + CSS 强化教程(把页面做得更漂亮)
https://021028.xyz/posts/default/70/
作者
021028
发布于
2026-08-11
许可协议
CC BY-NC-SA 4.0