示例 1:现代风格个人简介卡片

这是一个非常经典的CSS3应用,展示了圆角、阴影、渐变和过渡效果。

html和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

html和css3网页设计源代码
(图片来源网络,侵删)
/* 全局样式重置 */
* {
    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); /* 悬停时上移 */
}

代码解析

  1. HTML结构:

    • 使用了语义化的 <div> 来构建卡片结构,清晰明了。
    • 通过 <link> 标签引入了 Font Awesome 图标库,方便添加社交媒体图标。
  2. CSS3特性:

    • border-radius: 创建圆角,用于卡片和头像。
    • box-shadow: 添加阴影,使卡片有立体感。
    • linear-gradient: 创建背景渐变,让页面和卡片头部更有视觉吸引力。
    • transition: 定义属性变化的过渡时间和效果,当 transformbox-shadow 变化时,它会平滑地动画,而不是瞬间跳变。
    • transform: 在悬停时,使用 translateY (向上移动) 和 scale (放大) 来增强交互感。
    • hover 伪类: 当鼠标移到元素上时触发样式变化。
    • flexbox (弹性布局): 用于在容器内水平和垂直居中元素,是现代布局的利器。

示例 2:响应式导航栏

这个示例展示了如何创建一个在桌面端水平展开、在移动端折叠成“汉堡菜单”的响应式导航栏。

效果预览

桌面端:导航链接水平排列在顶部。 移动端:显示一个汉堡图标,点击后菜单从上方或侧边滑出。

html和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">响应式导航栏</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);
    }
}

代码解析

  1. HTML结构:

    • <header>: 定义页面或区块的页眉。
    • <nav>: 定义导航链接的区块。
    • .hamburger: 一个用于移动端的菜单触发器。
    • JavaScript: 用于监听汉堡菜单的点击事件,并给 .nav-menu 添加或移除 active 类,从而控制菜单的显示和隐藏,同时切换图标。
  2. 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;
}

代码解析

  1. HTML结构:

    • 使用 <div class="gallery"> 作为图片网格的容器。
    • 每个图片项都包裹在 <div class="gallery-item"> 中,图片和覆盖信息层(.item-info)是其子元素。
  2. CSS3特性:

    • display: gridgrid-template-columns: 这是CSS Grid布局,用于创建一个灵活的响应式网格。repeat(auto-fit, minmax(300px, 1fr)) 的意思是:自动重复创建列,每列最小宽度为300px,如果空间允许,则平均分配剩余空间(1fr),这比传统的float或flexbox布局更强大。
    • object-fit: cover: 确保图片在保持其宽高比的同时,填充整个父容器,不会拉伸或留白。
    • position: relativeposition: absolute: 将 .item-info 定位到 .gallery-item 的底部。
    • transform: translateY(): 这是实现动画效果的关键。
      • 默认状态下,.item-info 向下平移100%的自身高度,完全隐藏在图片下方。
      • 当鼠标悬停在 .gallery-item 上时,.item-infotransform 变为 translateY(0),使其平滑地滑回原位,变得可见。
    • transition: 为 transform 属性添加过渡效果,使动画平滑。
    • linear-gradient: 为覆盖层创建了一个从底部纯黑到顶部透明的渐变,使文字更清晰,同时能看到部分背景图片,效果更佳。

总结与学习建议

  • 从模仿开始: 先复制粘贴这些代码,让它们在你的浏览器中跑起来,然后尝试修改颜色、大小、图片等,观察变化。
  • 理解核心概念: 深入理解 盒模型FlexboxCSS Grid定位媒体查询选择器,这些是CSS的基石。
  • 善用开发者工具: 在浏览器中按 F12 打开开发者工具,你可以实时修改CSS并立即看到效果,这是学习和调试的利器。
  • 逐步构建: 不要试图一次性做一个复杂的网站,从一个简单的组件(如按钮、卡片)开始,然后逐步组合它们,构建更复杂的页面。
  • 关注细节: 动画、过渡、阴影、圆角等细节,是让网页从“能用”到“好看”的关键。

希望这些示例能为您提供一个良好的起点!