css制作案例
CSS 制作案例
响应式导航栏
使用 Flexbox 或 Grid 布局创建适应不同屏幕尺寸的导航栏。通过媒体查询调整菜单项的排列方式,在小屏幕设备上切换为汉堡菜单。
.navbar {
display: flex;
justify-content: space-between;
padding: 1rem;
background-color: #333;
}
.nav-items {
display: flex;
gap: 1rem;
}
@media (max-width: 768px) {
.nav-items {
display: none;
}
.hamburger {
display: block;
}
}
卡片悬停效果
为卡片添加平滑的悬停动画,包括阴影、缩放和过渡效果。这种效果适合产品展示或图片画廊。
.card {
width: 300px;
transition: all 0.3s ease;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.card:hover {
transform: scale(1.05);
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
渐变按钮
创建具有渐变背景和悬停效果的按钮。使用 CSS 渐变属性和过渡实现平滑的颜色变化。

.btn {
background: linear-gradient(to right, #ff7e5f, #feb47b);
padding: 10px 20px;
border: none;
color: white;
border-radius: 5px;
transition: all 0.3s ease;
}
.btn:hover {
background: linear-gradient(to right, #feb47b, #ff7e5f);
transform: translateY(-2px);
}
加载动画
使用 CSS 动画创建简单的加载指示器。通过关键帧定义旋转或脉动效果。
.loader {
width: 50px;
height: 50px;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
视差滚动效果
通过 background-attachment 属性创建视差滚动效果,使背景图像以不同于前景内容的速度滚动。

.parallax {
background-image: url('image.jpg');
min-height: 500px;
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
网格布局画廊
使用 CSS Grid 创建响应式图片画廊,自动调整列数以适应不同屏幕尺寸。
.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 15px;
padding: 15px;
}
.gallery img {
width: 100%;
height: auto;
object-fit: cover;
}
自定义复选框
使用纯 CSS 样式化原生表单元素,创建自定义复选框而不依赖 JavaScript。
input[type="checkbox"] {
appearance: none;
width: 20px;
height: 20px;
border: 2px solid #ddd;
border-radius: 4px;
outline: none;
transition: all 0.2s;
}
input[type="checkbox"]:checked {
background-color: #4CAF50;
border-color: #4CAF50;
}
文字动画效果
为文本添加打字机动画效果,模拟逐字显示的过程。
.typewriter {
overflow: hidden;
border-right: 0.15em solid orange;
white-space: nowrap;
animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite;
}
@keyframes typing {
from { width: 0 }
to { width: 100% }
}
@keyframes blink-caret {
from, to { border-color: transparent }
50% { border-color: orange }
}





