示例 1:现代风格个人简介卡片
这是一个非常经典的CSS3应用,展示了圆角、阴影、渐变和过渡效果。

(图片来源网络,侵删)
效果预览
想象一个居中显示的卡片,包含头像、姓名、简介和社交媒体链接,鼠标悬停时卡片会轻微放大并加深阴影。
源代码
您可以将以下代码复制到一个 .html 文件中,然后用浏览器打开即可查看效果。
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">CSS3 个人简介卡片</title>
<link rel="stylesheet" href="style.css">
<!-- 引入一个图标库,这里使用 Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<div class="card-container">
<div class="profile-card">
<!-- 头像 -->
<div class="card-img">
<img src="https://i.pravatar.cc/150?img=68" alt="用户头像">
</div>
<!-- 卡片内容 -->
<div class="card-content">
<h2>张三</h2>
<p class="title">前端开发工程师</p>
<p>热爱创造美观且实用的用户界面,专注于HTML, CSS和JavaScript技术。</p>
<!-- 社交媒体链接 -->
<div class="social-links">
<a href="#"><i class="fab fa-github"></i></a>
<a href="#"><i class="fab fa-linkedin"></i></a>
<a href="#"><i class="fab fa-twitter"></i></a>
</div>
</div>
</div>
</div>
</body>
</html>
style.css

(图片来源网络,侵删)
/* 全局样式重置 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%); /* CSS3 渐变背景 */
}
/* 卡片容器 */
.card-container {
perspective: 1000px; /* 为3D效果设置透视距离 */
}
/* 卡片主体 */
.profile-card {
width: 320px;
background: #ffffff;
border-radius: 15px; /* CSS3 圆角 */
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); /* CSS3 阴影 */
transition: transform 0.4s ease, box-shadow 0.4s ease; /* CSS3 过渡效果 */
overflow: hidden; /* 确保子元素不会溢出圆角 */
}
/* 鼠标悬停效果 */
.profile-card:hover {
transform: translateY(-10px) scale(1.02); /* CSS3 2D/3D 变换 */
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
}
/* 头像部分 */
.card-img {
height: 150px;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(45deg, #f093fb 0%, #f5576c 100%);
}
.card-img img {
height: 120px;
width: 120px;
border-radius: 50%; /* 圆形头像 */
border: 4px solid #fff;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
}
部分 */
.card-content {
padding: 20px;
text-align: center;
}
.card-content h2 {
color: #333;
margin-bottom: 5px;
}
.card-content .title {
color: #666;
font-size: 0.9em;
margin-bottom: 15px;
font-weight: 300;
}
.card-content p {
color: #777;
font-size: 0.9em;
line-height: 1.6;
}
/* 社交链接 */
.social-links {
display: flex;
justify-content: center;
margin-top: 25px;
gap: 15px; /* 链接之间的间距 */
}
.social-links a {
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
background: #f5f5f5;
border-radius: 50%;
color: #555;
text-decoration: none;
transition: background 0.3s ease, color 0.3s ease, transform 0.3s ease;
}
.social-links a:hover {
background: #2575fc;
color: #ffffff;
transform: translateY(-3px); /* 悬停时上移 */
}
代码解析
-
HTML结构:
- 使用了语义化的
<div>来构建卡片结构,清晰明了。 - 通过
<link>标签引入了 Font Awesome 图标库,方便添加社交媒体图标。
- 使用了语义化的
-
CSS3特性:
border-radius: 创建圆角,用于卡片和头像。box-shadow: 添加阴影,使卡片有立体感。linear-gradient: 创建背景渐变,让页面和卡片头部更有视觉吸引力。transition: 定义属性变化的过渡时间和效果,当transform或box-shadow变化时,它会平滑地动画,而不是瞬间跳变。transform: 在悬停时,使用translateY(向上移动) 和scale(放大) 来增强交互感。hover伪类: 当鼠标移到元素上时触发样式变化。flexbox(弹性布局): 用于在容器内水平和垂直居中元素,是现代布局的利器。
示例 2:响应式导航栏
这个示例展示了如何创建一个在桌面端水平展开、在移动端折叠成“汉堡菜单”的响应式导航栏。
效果预览
桌面端:导航链接水平排列在顶部。 移动端:显示一个汉堡图标,点击后菜单从上方或侧边滑出。

(图片来源网络,侵删)
源代码
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">响应式导航栏</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<header>
<a href="#" class="logo">Logo</a>
<div class="hamburger" id="hamburger">
<i class="fas fa-bars"></i>
</div>
<nav class="nav-menu" id="nav-menu">
<a href="#" class="nav-link">首页</a>
<a href="#" class="nav-link">lt;/a>
<a href="#" class="nav-link">服务</a>
<a href="#" class="nav-link">作品集</a>
<a href="#" class="nav-link">联系</a>
</nav>
</header>
<main>
<h1>主要内容区域</h1>
<p>调整浏览器窗口大小,查看导航栏的变化。</p>
</main>
<script>
// 简单的JavaScript来切换移动端菜单
const hamburger = document.getElementById('hamburger');
const navMenu = document.getElementById('nav-menu');
hamburger.addEventListener('click', () => {
navMenu.classList.toggle('active');
// 切换汉堡图标为关闭图标
const icon = hamburger.querySelector('i');
icon.classList.toggle('fa-bars');
icon.classList.toggle('fa-times');
});
</script>
</body>
</html>
style.css
/* 全局样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Arial', sans-serif;
}
body {
background-color: #f4f4f4;
}
/* 头部/导航栏 */
header {
background-color: #333;
color: white;
padding: 1rem 5%;
display: flex;
justify-content: space-between;
align-items: center;
position: relative; /* 为绝对定位的子元素提供参考 */
}
.logo {
font-size: 1.5rem;
font-weight: bold;
text-decoration: none;
color: white;
}
/* 导航链接 - 桌面端默认隐藏 */
.nav-menu {
display: flex; /* 使用flex布局 */
list-style: none;
gap: 2rem; /* 链接间距 */
}
.nav-link {
color: white;
text-decoration: none;
font-size: 1rem;
transition: color 0.3s ease;
}
.nav-link:hover {
color: #00d2ff;
}
/* 汉堡菜单按钮 */
.hamburger {
display: none; /* 默认隐藏 */
cursor: pointer;
font-size: 1.5rem;
}
区域 */
main {
padding: 2rem 5%;
text-align: center;
}
/* --- 响应式设计 --- */
/* 当屏幕宽度小于等于 768px (平板和手机) 时 */
@media (max-width: 768px) {
.hamburger {
display: block; /* 显示汉堡菜单 */
}
.nav-menu {
position: absolute; /* 绝对定位,脱离文档流 */
left: 0;
top: 70px; /* 放在header下方 */
width: 100%;
height: calc(100vh - 70px); /* 占满剩余视口高度 */
background-color: #333;
flex-direction: column; /* 链接垂直排列 */
justify-content: flex-start;
align-items: center;
padding-top: 2rem;
gap: 1.5rem;
transform: translateY(-150%); /* 默认隐藏在屏幕上方 */
transition: transform 0.3s ease-in-out; /* 添加滑入滑出动画 */
box-shadow: 0 10px 27px rgba(0, 0, 0, 0.05);
}
/* 当添加 'active' 类时,菜单滑入视图 */
.nav-menu.active {
transform: translateY(0);
}
}
代码解析
-
HTML结构:
<header>: 定义页面或区块的页眉。<nav>: 定义导航链接的区块。.hamburger: 一个用于移动端的菜单触发器。- JavaScript: 用于监听汉堡菜单的点击事件,并给
.nav-menu添加或移除active类,从而控制菜单的显示和隐藏,同时切换图标。
-
CSS3/响应式特性:
display: flex: 在桌面端,.nav-menu使用flexbox水平排列链接。@media (max-width: 768px): 这是媒体查询的核心,当浏览器窗口宽度小于等于768px时,应用大括号内的样式。- 媒体查询内的样式:
.hamburger { display: block; }: 让汉堡按钮显示出来。.nav-menu: 被重置为垂直排列、绝对定位,并默认通过transform: translateY(-150%)移到屏幕上方不可见。.nav-menu.active: 当有active类时,transform变为translateY(0),菜单平滑地滑入视图。
transition: 为transform属性添加过渡效果,使菜单的滑入和滑出更加平滑。
示例 3:CSS3 动画画廊
这个示例展示了如何使用纯CSS3创建一个带有淡入、缩放和滑动效果的图片画廊。
效果预览
一个图片网格,当鼠标悬停在图片上时,图片会放大并显示标题和描述。
源代码
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">CSS3 动画画廊</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="gallery-container">
<h1>我的动画画廊</h1>
<div class="gallery">
<div class="gallery-item">
<img src="https://source.unsplash.com/400x300/?nature,water" alt="自然风光">
<div class="item-info">
<h3>宁静湖泊</h3>
<p>探索大自然的宁静与美丽。</p>
</div>
</div>
<div class="gallery-item">
<img src="https://source.unsplash.com/400x300/?city,night" alt="城市夜景">
<div class="item-info">
<h3>都市脉搏</h3>
<p>感受城市的夜晚与活力。</p>
</div>
</div>
<div class="gallery-item">
<img src="https://source.unsplash.com/400x300/?food,delicious" alt="美食">
<div class="item-info">
<h3>味蕾盛宴</h3>
<p>品尝来自世界各地的美味。</p>
</div>
</div>
<div class="gallery-item">
<img src="https://source.unsplash.com/400x300/?animal,cute" alt="可爱动物">
<div class="item-info">
<h3>萌宠世界</h3>
<p>与可爱的小动物们亲密接触。</p>
</div>
</div>
<div class="gallery-item">
<img src="https://source.unsplash.com/400x300/?tech,computer" alt="科技">
<div class="item-info">
<h3>科技前沿</h3>
<p>探索改变未来的创新科技。</p>
</div>
</div>
<div class="gallery-item">
<img src="https://source.unsplash.com/400x300/?travel,adventure" alt="旅行">
<div class="item-info">
<h3>远行梦想</h3>
<p>开启一段未知的旅程。</p>
</div>
</div>
</div>
</div>
</body>
</html>
style.css
/* 全局样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
background-color: #222;
color: #fff;
padding: 2rem;
}
.gallery-container {
max-width: 1200px;
margin: 0 auto;
}
.gallery-container h1 {
text-align: center;
margin-bottom: 2rem;
font-size: 2.5rem;
color: #f0f0f0;
}
/* 画廊网格布局 */
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); /* CSS Grid 布局 */
gap: 2rem;
}
/* 每个画廊项 */
.gallery-item {
position: relative;
overflow: hidden; /* 隐藏溢出的内容 */
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
cursor: pointer;
height: 300px; /* 固定高度,使图片一致 */
}
.gallery-item img {
width: 100%;
height: 100%;
object-fit: cover; /* 图片填充方式 */
transition: transform 0.5s ease-in-out; /* 图片缩放动画 */
}
/* 悬停效果 */
.gallery-item:hover img {
transform: scale(1.1); /* 图片放大 */
}
/* 信息覆盖层 */
.item-info {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 1rem;
background: linear-gradient(to top, rgba(0,0,0,0.9), transparent); /* 渐变背景 */
color: #fff;
transform: translateY(100%); /* 默认在图片下方不可见 */
transition: transform 0.5s ease-in-out; /* 滑动动画 */
}
.gallery-item:hover .item-info {
transform: translateY(0); /* 悬停时滑入视图 */
}
.item-info h3 {
font-size: 1.2rem;
margin-bottom: 0.5rem;
}
.item-info p {
font-size: 0.9rem;
opacity: 0.8;
}
代码解析
-
HTML结构:
- 使用
<div class="gallery">作为图片网格的容器。 - 每个图片项都包裹在
<div class="gallery-item">中,图片和覆盖信息层(.item-info)是其子元素。
- 使用
-
CSS3特性:
display: grid和grid-template-columns: 这是CSS Grid布局,用于创建一个灵活的响应式网格。repeat(auto-fit, minmax(300px, 1fr))的意思是:自动重复创建列,每列最小宽度为300px,如果空间允许,则平均分配剩余空间(1fr),这比传统的float或flexbox布局更强大。object-fit: cover: 确保图片在保持其宽高比的同时,填充整个父容器,不会拉伸或留白。position: relative和position: absolute: 将.item-info定位到.gallery-item的底部。transform: translateY(): 这是实现动画效果的关键。- 默认状态下,
.item-info向下平移100%的自身高度,完全隐藏在图片下方。 - 当鼠标悬停在
.gallery-item上时,.item-info的transform变为translateY(0),使其平滑地滑回原位,变得可见。
- 默认状态下,
transition: 为transform属性添加过渡效果,使动画平滑。linear-gradient: 为覆盖层创建了一个从底部纯黑到顶部透明的渐变,使文字更清晰,同时能看到部分背景图片,效果更佳。
总结与学习建议
- 从模仿开始: 先复制粘贴这些代码,让它们在你的浏览器中跑起来,然后尝试修改颜色、大小、图片等,观察变化。
- 理解核心概念: 深入理解 盒模型、Flexbox、CSS Grid、定位、媒体查询 和 选择器,这些是CSS的基石。
- 善用开发者工具: 在浏览器中按
F12打开开发者工具,你可以实时修改CSS并立即看到效果,这是学习和调试的利器。 - 逐步构建: 不要试图一次性做一个复杂的网站,从一个简单的组件(如按钮、卡片)开始,然后逐步组合它们,构建更复杂的页面。
- 关注细节: 动画、过渡、阴影、圆角等细节,是让网页从“能用”到“好看”的关键。
希望这些示例能为您提供一个良好的起点!
