跟我看:卡片
卡片 是带阴影的白色矩形,把图片和文字包在一起。你在 YouTube、Netflix 和网店都见过。卡片就是一个带几个属性的盒子:
<div class="card">
<img src="images/photo.jpg" alt="Photo description">
<h3>Card heading</h3>
<p>Short text for the card.</p>
</div>
.card {
background-color: white;
border-radius: 12px;
padding: 16px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
这里有两样新东西:
<div>是没有自己含义的空盒子——只是”打包”属于一起的东西。box-shadow是阴影:数字表示右移、下移、模糊和颜色(这里是 10% 透明度的黑色)。阴影把扁矩形变成卡片。
跟我看:卡片并排
现在用你已经知道的技巧——flexbox。把卡片包在一个盒子里并设为 flex:
<div class="cards">
<div class="card">…</div>
<div class="card">…</div>
<div class="card">…</div>
</div>
.cards {
display: flex;
gap: 16px;
flex-wrap: wrap;
}
.cards .card {
flex: 1; /* cards fairly share the available space */
min-width: 200px; /* but none will ever be narrower than 200px */
}
flex-wrap: wrap + min-width = 在电脑上卡片并排,在手机上堆叠。你刚刚建了一个响应式网站——能适应任何屏幕。
轮到你了 💪
给网站加一个卡片区域——至少三个并排。上面放什么取决于你的项目:
🏫 学校网站——参考答案(老师卡片)
<h2>Our Teachers</h2>
<div class="cards">
<div class="card">
<h3>Ms. Turner</h3>
<p>4th grade homeroom. Teaches English and art. Loves cats.</p>
</div>
<div class="card">
<h3>Mr. Bennett</h3>
<p>Math and P.E. Runs the floorball club.</p>
</div>
<div class="card">
<h3>Principal Adams</h3>
<p>Running the school for 10 years. Plays the piano.</p>
</div>
</div>
🙋 个人网站——参考答案(爱好卡片)
<h2>My Hobbies</h2>
<div class="cards">
<div class="card">
<img src="images/soccer.jpg" alt="Me during a match">
<h3>Soccer</h3>
<p>I play forward for the youth team. 12 goals this year!</p>
</div>
<div class="card">
<img src="images/minecraft-build.jpg" alt="My castle in Minecraft">
<h3>Minecraft</h3>
<p>I build huge castles. This one took a month.</p>
</div>
<div class="card">
<h3>Coding</h3>
<p>I'm building this very website right now. And this is just the start.</p>
</div>
</div>
🌍 旅行日记——参考答案(旅行卡片)
<h2>Our Trips</h2>
<div class="cards">
<div class="card">
<img src="images/mountains.jpg" alt="View from the summit">
<h3>The Mountains</h3>
<p>A three-day hike. Best part: wild berries and the lookout tower.</p>
</div>
<div class="card">
<img src="images/sea.jpg" alt="A bay in Greece">
<h3>Greece</h3>
<p>A week at the beach. We saw dolphins!</p>
</div>
<div class="card">
<img src="images/dc.jpg" alt="View from a monument in Washington, D.C.">
<h3>Washington, D.C.</h3>
<p>Museums, monuments, and way too much walking.</p>
</div>
</div>
⚽ 俱乐部网站——参考答案(球员卡片)
<h2>Roster</h2>
<div class="cards">
<div class="card">
<h3>Jake · goalkeeper 🧤</h3>
<p>Team captain. 5 clean sheets this season.</p>
</div>
<div class="card">
<h3>Owen · midfield ⚡</h3>
<p>Fastest player on the team. 8 assists.</p>
</div>
<div class="card">
<h3>Tom · forward 🎯</h3>
<p>Top scorer. 14 goals this season.</p>
</div>
</div>
同样的 CSS 适用于每个项目:
.cards {
display: flex;
gap: 16px;
flex-wrap: wrap;
}
.cards .card {
flex: 1;
min-width: 200px;
}
.card {
background-color: white;
border-radius: 12px;
padding: 16px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
额外:照片画廊
照片很多?照片网格更简单——用 aspect-ratio 和 object-fit 让它们大小一致:
<div class="gallery">
<img src="images/p1.jpg" alt="…">
<img src="images/p2.jpg" alt="…">
<img src="images/p3.jpg" alt="…">
<img src="images/p4.jpg" alt="…">
</div>
.gallery {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.gallery img {
width: 180px;
aspect-ratio: 1; /* a square */
object-fit: cover; /* the photo fills the square and gets cropped, not squished */
}
✅
检查一下: 网站有带阴影、并排的卡片。把浏览器窗口缩小到手机宽度——卡片会堆叠。这叫响应式设计,你刚刚做到了。
这堂课你要记住
<div>是包在一起的东西的容器。- 卡片 = 背景 +
border-radius+padding+box-shadow。 - 带
flex-wrap和min-width的 Flexbox = 电脑和手机都能用的布局。
© 2026 Ing. Martin Polak / AlgoRhino · 内容使用条款