六十天前端强化训练之第一天到第七天——综合案例:响应式个人博客项目

=====欢迎来到编程星辰海的博客讲解======

目录

前言回顾

HTML5与CSS3基础

一、知识讲解

1. 项目架构设计(语义化HTML)

2. 响应式布局系统(Flex + Grid)

3. 样式优先级与组件化设计

4. 完整响应式工作流

二、核心代码示例

完整HTML结构

Sass样式实现

三、实现效果展示

四、学习要点总结

五、扩展阅读推荐


前言回顾

HTML5与CSS3基础

  1. HTML5语义化标签
    案例:使用article/section/nav等标签搭建博客结构
  2. CSS选择器与盒模型
    案例:实现不同选择器优先级样式覆盖效果
  3. Flex布局实战
    案例:实现响应式导航栏布局
  4. Grid布局入门
    案例:创建杂志风格的多列布局
  5. 响应式设计原理
    案例:使用媒体查询实现移动端适配
  6. CSS过渡与动画
    案例:制作按钮悬停动画效果
  7. CSS预处理器(Sass)
    案例:使用变量和嵌套编写样式表

这几天给大家讲解了HTML5与CSS3基础,可能不止七天,因为这段时间有点忙,我准备刷一下六级分数,所有在准备六级,一方面是蓝桥杯比赛,其次是竞选上了班长,有点累,希望大家体谅体谅,后面争取给大家每天更新。

大家可以先不看下面的内容,想想这几天学了什么,哪些知识点自己掌握了,哪些忘了。

一、知识讲解

1. 项目架构设计(语义化HTML)

HTML

<!-- 使用HTML5语义标签构建骨架 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>技术博客 | 前端之旅</title><link rel="stylesheet" href="styles/main.css">
</head>
<body><nav class="main-nav">...</nav><header class="page-header">...</header><main class="content-area"><article class="blog-post">...</article><section class="related-posts">...</section></main><aside class="sidebar">...</aside><footer class="page-footer">...</footer>
</body>
</html>

设计要点

  • 使用<article>包裹独立博文内容
  • <section>划分内容区块
  • <nav>包含主导航链接
  • 通过<main><aside>实现主内容/侧边栏分离

2. 响应式布局系统(Flex + Grid)

SCSS

// Sass变量定义
$breakpoints: (mobile: 480px,tablet: 768px,desktop: 1200px
);.content-area {display: grid;grid-template-columns: 1fr;gap: 2rem;@media (min-width: map-get($breakpoints, tablet)) {grid-template-columns: 3fr 1fr;}
}.main-nav {display: flex;flex-wrap: wrap;justify-content: space-between;@media (max-width: map-get($breakpoints, mobile)) {flex-direction: column;}
}

布局系统解析

  • 移动优先原则:基础布局为单列,逐步增强为大屏布局
  • 使用Grid创建自适应内容区(主内容+侧边栏)
  • Flex实现导航栏的弹性布局
  • 通过Sass变量管理断点值

3. 样式优先级与组件化设计

SCSS

// 使用BEM命名规范
.card {// 基础盒模型padding: 1.5rem;border-radius: 8px;box-shadow: 0 2px 8px rgba(0,0,0,0.1);&__title {// 选择器特异性控制color: var(--primary-color) !important;}// 状态变化&:hover {transform: translateY(-3px);transition: transform 0.3s ease;}
}

样式设计原则

  • 通过嵌套选择器控制作用域
  • 使用CSS变量实现主题化管理
  • !important的正确使用场景
  • 组件状态动画设计

4. 完整响应式工作流

  1. 视口meta标签配置
  2. 流体图像处理:

CSS

img {max-width: 100%;height: auto;
}

  1. 媒体查询断点设置
  2. 使用<picture>元素实现响应式图片
  3. 使用rem单位保持比例关系

二、核心代码示例

完整HTML结构

HTML

<body><nav class="main-nav"><ul class="nav-list"><li class="nav-item"><a href="#">首页</a></li><li class="nav-item"><a href="#">归档</a></li><li class="nav-item"><a href="#">关于</a></li></ul><div class="nav-toggle">☰</div></nav><main class="content-area"><article class="blog-post"><header><h1>Flex布局深度解析</h1><time datetime="2024-03-01">2024年3月1日</time></header><section class="post-content"><p>Flex布局是现代Web开发的核心技术之一...</p><div class="demo-box"><div class="box"></div><div class="box"></div><div class="box"></div></div></section></article><aside class="sidebar"><div class="card"><h2 class="card__title">最新文章</h2><ul class="post-list"><li>Grid布局入门指南</li><li>CSS动画原理</li></ul></div></aside></main>
</body>

Sass样式实现

SCSS

// variables.scss
$primary-color: #2c3e50;
$secondary-color: #3498db;:root {--primary-color: #{$primary-color};--secondary-color: #{$secondary-color};
}// mixins.scss
@mixin flex-center {display: flex;justify-content: center;align-items: center;
}// main.scss
.main-nav {background: lighten($primary-color, 70%);padding: 1rem;@include flex-center;.nav-list {display: flex;gap: 2rem;@media (max-width: 480px) {display: none;&.active { display: flex; }}}
}.blog-post {background: white;padding: 2rem;border-radius: 8px;box-shadow: 0 2px 6px rgba(0,0,0,0.1);header {border-bottom: 2px solid $secondary-color;margin-bottom: 1.5rem;}
}.demo-box {display: flex;justify-content: space-around;.box {width: 80px;height: 80px;background: $secondary-color;transition: transform 0.3s;&:hover {transform: rotate(15deg);}}
}


三、实现效果展示

  • 桌面端:两栏布局,导航栏水平排列,卡片带有阴影和悬停动效

  • 移动端:导航折叠为汉堡菜单,内容转为单列布局
  • 交互效果:按钮悬停旋转动画,导航栏滑动出现
  • 响应式图片:根据屏幕尺寸加载合适图片

这是移动端效果,用电脑显示而已


四、学习要点总结

  1. 语义化结构:合理使用HTML5标签增强可访问性
  2. 布局系统:Flex处理一维布局,Grid应对二维复杂布局
  3. 响应式策略:移动优先 + 渐进增强
  4. 样式管理:Sass变量/嵌套提升代码可维护性
  5. 动画原则:使用transition实现平滑状态变化
  6. 调试技巧:浏览器开发者工具审查布局

五、扩展阅读推荐

  1. 官方文档

    • MDN HTML元素参考
    • Sass官方文档
    • CSS Grid规范
  2. 优质文章

    • 现代CSS解决方案
    • Flex布局完全指南
    • 响应式图片最佳实践
  3. 工具推荐

    • Autoprefixer自动补全CSS
    • Grid布局生成器
    • Sass在线编译器

建议在Codepen创建项目实际演练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试的BUG分析

在了解BUG之前,我们要先了解软件测试的生命周期,因为大多数BUG都是在软件测试的过程中被发现的 软件测试的生命周期 在了解 软件测试的生命周期 之前,我们要先了解 软件的生命周期 ,虽然他们之间只差了两个字,但是差距还是很大的 首先是 软件生命周期 ,这个是站在 软件 的角…

【洛谷贪心算法题】P1094纪念品分组

该题运用贪心算法&#xff0c;核心思想是在每次分组时&#xff0c;尽可能让价格较小和较大的纪念品组合在一起&#xff0c;以达到最少分组的目的。 【算法思路】 输入处理&#xff1a;首先读取纪念品的数量n和价格上限w&#xff0c;然后依次读取每件纪念品的价格&#xff0c;…

[STM32]从零开始的STM32 BSRR、BRR、ODR寄存器讲解

一、前言 学习STM32一阵子以后&#xff0c;相信大家对STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及库函数控制STM32的引脚从而点亮一个LED&#xff0c;之前的寄存器只是作为一个引入&#xff0c;并没有深层次的讲解&#xff0c;在教…

SQL分组问题

下列为电商公司用户访问时间数据 统计某个用户连续的访问记录&#xff0c;如果时间间隔小于60s&#xff0c;就分为一组 id ts 1001 17523641234 1001 17523641256 1002 17523641278 1001 17523641334 1002 17523641434 1001 17523641534 1001 17523641544 1002 17523…

3月2日 C++日常习题测试一答案

C测试题答案与讲解 一、填空题答案及讲解 答案&#xff1a;const 讲解&#xff1a;在 C 中&#xff0c;const关键字用于定义常量&#xff0c;一旦定义&#xff0c;其值不能被修改。例如const int num 10;&#xff0c;这里的num就是一个常量。 答案&#xff1a;3 讲解&…

2W8000字 LLM架构文章阅读指北

❝ 大模型架构专栏已经更新了30多篇文章。完整的专栏内容欢迎订阅&#xff1a; LLM 架构专栏 1、LLM大模型架构专栏|| 从NLP基础谈起 2、 LLM大模型架构专栏|| 自然语言处理&#xff08;NLP&#xff09;之建模 3、 LLM大模型架构之词嵌入&#xff08;Part1&#xff09; 3、 LLM…

SP导入智能材质球

智能材质球路径 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就会自动刷新

网络原理----TCP/IP(3)

核心机制七----延时应答 默认情况下&#xff0c;接收方都是在收到数据报的第一时间&#xff0c;就返回ack&#xff0c;但是可以通过延时返回ack的方式来提高效率&#xff0c;理论上不是100%提高效率&#xff0c;但还是有一定帮助的。 因为如果接收数据的主机⽴刻返回ACK应答,…

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…

部署Joplin私有云服务器postgres版-docker compose

我曾经使用过一段时间 Joplin&#xff0c;官方版本是收费的&#xff0c;而我更倾向于将数据掌握在自己手中。因此&#xff0c;在多次权衡后&#xff0c;我决定自己搭建 Joplin 服务器并进行尝试。 个人搭建的版本与数据库直连&#xff0c;下面是使用 Docker Compose 配置数据库…

SQL的select语句完整的执行顺序

SQL的SELECT语句的执行顺序可以用"做菜流程"来类比理解。虽然我们写SQL时按SELECT…FROM…WHERE…顺序写&#xff0c;但数据库执行顺序完全不同。以下是通俗易懂的讲解&#xff08;附流程图和示例&#xff09;&#xff1a; &#x1f527; 执行顺序流程图&#xff1a…

Spring Cloud LoadBalancer详解

一、介绍 Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,抽象和实现,用来替代Ribbon(已经停更), 二、Ribbon和Loadbalance 对比 组件组件提供的负载策略支持负载的客户端Ribbon随机 RandomRule轮询 RoundRobinRule 重试 RetryRule最低并发 Bes…

ubuntu中ollama设置记录

自己同一台电脑主机安装3080和3090显卡&#xff0c;测试发现ollama只默认跑在3090上&#xff1b;故查看一下设置&#xff0c;成功也把3080也运行起来了。 原因如下&#xff1a; 开始设置记录&#xff1a; Environment Variables: OLLAMA_DEBUG 作用&#xff1a;显示额外的调试…

RabbitMQ系列(四)基本概念之Exchange

在 RabbitMQ 中&#xff0c;Exchange&#xff08;交换机&#xff09; 是消息路由的核心组件&#xff0c;负责根据规则将生产者发送的消息分发到对应的队列&#xff08;Queue&#xff09;中。以下是其核心功能与分类的详细说明&#xff1a; 一、Exchange 的核心作用 消息路由枢…

有没有什么免费的AI工具可以帮忙做简单的ppt?

互联网各领域资料分享专区(不定期更新): Sheet 正文 1. 博思AIPPT 特点:专为中文用户设计,支持文本/文件导入生成PPT,内置海量模板和智能排版功能,涵盖商务、教育等多种场景。可一键优化布局、配色,并集成AI绘图功能(文生图/图生图)。适用场景:职场汇报、教育培训、商…

【Python · PyTorch】循环神经网络 RNN(基础应用)

【Python PyTorch】循环神经网络 RNN&#xff08;简单应用&#xff09; 1. 简介2. 模拟客流预测&#xff08;数据集转化Tensor&#xff09;3.1 数据集介绍3.2 训练过程 3. 模拟股票预测&#xff08;DataLoader加载数据集&#xff09;3.1 IBM 数据集3.1.2 数据集介绍3.1.3 训练…

【JSON2WEB】15 银河麒麟操作系统下部署JSON2WEB

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

地基简识Spring MVC 组件

Spring MVC 是一个基于 MVC 设计模式的框架&#xff0c;其核心组件协同工作以处理 HTTP 请求并生成响应。以下是各组件的详细说明及其协作流程&#xff1a; 一、​核心组件 ​DispatcherServlet&#xff08;前端控制器&#xff09;​ ​作用&#xff1a;接收所有请求并协调其他…

Spring Boot(七):Swagger 接口文档

1. Swagger 简介 1.1 Swagger 是什么&#xff1f; Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…

cursor 弹出在签出前,请清理仓库工作树 窗口

问题出现的背景&#xff1a;是因为我有两台电脑开发&#xff0c;提交后&#xff0c;另一个电脑的代码是旧的&#xff0c;这个时候我想拉取最新的代码&#xff0c;就会出现如下弹窗&#xff0c;因为这个代码暂存区有记录或者工作区有代码的修改&#xff0c;所以有冲突&#xff0…