Files
fzu-product/7.Web开发入门/7.1.1基础部分.md
2023-04-21 01:59:02 +08:00

157 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 基础部分
## 🔑 萌新需要知道的前置知识
### 前端入门<del>到入土</del>
不同于后端语言的多样化,前端语言较为统一。在萌新阶段,你需要先掌握 HTML、CSS、JS 三种语言(人称前端三<del>剑客</del>件套)
三者关系可以简单理解为HTML 是骨架CSS 是衣服装饰JS 则控制交互行为
以下提供一些可供参考的学习资料,你也可以按兴趣在 b 站大学搜索相关学习视频。在学习中遇到无法解决的问题,或者学习路径上的迷茫,也可以参考[提问的智慧](https://learnku.com/laravel/t/2396/wisdom-of-asking-questions-chinese-version)向群里的前端学姐们提问噢~
#### HTML & CSS
[MDN Web 入门](https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web)
[ A friendly web development tutorial for complete beginners](https://www.internetingishard.com/html-and-css/)
[前端入门必会的初级调试技巧](https://zhuanlan.zhihu.com/p/145466139)
#### JavaScript
[现代 JavaScript 教程](https://zh.javascript.info/)
::: warning 🎈
<strong>快速上手的参考建议</strong>
<strong>HTML</strong><strong> </strong>可以先认知常用标签( body / div / span / a / img 等)及其常用属性
<strong>CSS </strong>了解常见的颜色属性(字体颜色 / 背景颜色 / 边框颜色 等)、字体相关属性(字号 / 字重 / 行高 等、盒子模型padding / border / margin、用于布局的属性float / flex / grid、单位px / rem / em / vh / vw 等、选择器id 选择器 / 类选择器 等)
<strong>JS</strong><strong> </strong>了解基本语法(变量定义 / 判断 / 循环 / 函数定义 / etc与 DOM 操作
涉及<strong>前后端交互</strong>的部分可以了解 fetch 的使用
其他诸如 HTML5 / CSS3 / ES6+ 的知识可以暂时跳过,<del>任务要用到再查</del>
基本全部前端开发资料都可以在 [MDN](https://developer.mozilla.org/) 中找到
:::
### 🥂 助手介绍网页的重写
设计部姐姐给了前端部一个助手介绍网页的设计稿,但是 psyq 觉得[目前的助手介绍网页](https://site.hduhelp.com/)写得不是很还原,你可以帮 psyq 重写一个更好看的网页吗?
设计稿如下:
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg)
#### 可能需要用到的图片资源
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbigxAK5SbxiWuDHr1Ashne.png)
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnrqddPFusKhe0vZuzXJOosg.png)
#### 基本要求
- 大致还原设计稿的基础上可以自由发挥,要求美观
- 设计稿内容的大致布局
- 背景颜色/样式 & 文字颜色/样式
- 文字与容器的位置关系
- ……
#### 额外发挥
- 各处样式的细节(圆角 / 阴影 / 渐变)
- 对不同设备屏幕尺寸进行适配
- 为显示内容增加一些动态效果
- 无法一页显示所有内容时,试试在下滑页面时显示一个 `返回顶部` 的按钮
#### 可能涉及的知识点
- 使用 HTML 构建页面的基础布局
- 了解常用的 HTML 标签
- HTML 引入外部图片文件(`<img>`
- 如何让 HTML / CSS / JS 相互配合
- HTML 中书写 css 使用 `<style>`
- 引入 css 等资源使用 `<link>`
- 书写/引入 js 使用 `<script>`
- 使用 CSS 为页面赋予样式
- 了解常见网页布局(了解 [float](https://developer.mozilla.org/zh-CN/docs/Web/CSS/float)[flex ](https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox)/ [grid ](https://developer.mozilla.org/zh-CN/docs/Web/CSS/grid)布局,综合运用不同布局来完成页面)
- 使用 [css 选择器](https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Selectors)选中 HTML 元素添加样式([id 选择器](https://developer.mozilla.org/zh-CN/docs/Web/CSS/ID_selectors) / [类选择器](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Class_selectors) / etc.
- 自适应布局(查阅 `媒体查询`
- 交互渐变动效(查阅 css 属性: `transition``animation`
- JS 添加交互行为
- 监听用户下滑网页的行为并改变 `返回顶部` 按钮的可见状态([scroll 滚动事件](https://developer.mozilla.org/zh-CN/docs/Web/API/Document/scroll_event)[DOM 操作入门](https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents)
### 🎫TodoList
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnikdFX5WNml7sgtPMOJQiGh.png)
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnFZwQVTUWkfsbNxYfJkgPDg.png)
<center>一些参考</center>
或许你也曾是一名时间管理大师,在各种效率类 app 立下自己要做的 flag。然而现成的工具难免无法满足自己的所有需求那么不妨来编写一个自己的 TodoList 吧~
#### 基本要求
- 可以对 todo 进行增删改查
- 至少存在 <strong>待完成</strong>/<strong>已完成</strong> 两种不同的状态Todo 应该能够在不同状态间切换。更进一步,你也可以设计一个 <strong>进行中</strong> 状态。
#### 额外发挥
- 页面刷新后数据不丢失
参考实现方案:
1. 使用浏览器提供的储存功能实现本地存储([localStorage](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/localStorage)、[IndexedDB](https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API)
2. 通过请求后端 api 实现云端存储
- 删除待办时弹出操作不可逆的提示
- 在交互时适当添加缓动效果
- 设计定时 todo可在用户设定的时间点对用户进行提醒
- 实现不同设备屏幕尺寸的自适应
- 添加任务热力图(可以参考一下 GitHub 个人主页哦 🤔)
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcncVQswB7ziUoV4LvEs35DAe.png)
#### 可能涉及的知识点
- 使用 HTML 构建页面的基础布局
- 了解常用的 HTML 标签
- HTML 引入外部图片文件(`<img>`
- 如何让 HTML / CSS / JS 相互配合
- HTML 中书写 css 使用 `<style>`
- 引入 css 等资源使用 `<link>`
- 书写/引入 js 使用 `<script>`
- 使用 css 为页面赋予样式
- 了解常见网页布局(了解 [float](https://developer.mozilla.org/zh-CN/docs/Web/CSS/float)[flex ](https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox)/ [grid ](https://developer.mozilla.org/zh-CN/docs/Web/CSS/grid)布局,综合运用不同布局来完成页面)
- 使用 [css 选择器](https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Selectors)选中 HTML 元素添加样式([id 选择器](https://developer.mozilla.org/zh-CN/docs/Web/CSS/ID_selectors) / [类选择器](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Class_selectors) / etc.
- 自适应布局(查阅 `媒体查询`
- 交互渐变动效(查阅 css 属性: `transition``animation`
- JS 添加交互行为
- 获取网页中的待办项(查阅 [DOM 操作入门](https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents)
- 添加新的待办项(查阅 [DOM 操作入门](https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents)
- 删除网页中的待办项(查阅 [DOM 操作入门](https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents)
- 监听待办项的点击事件,以改变待办项的状态(查阅[ click 单击事件](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/click_event)
- 将当前待办项列表存储在本地(查阅 [localStorage(较简单)](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/localStorage)、[IndexedDB](https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API) 文档)
- 远程请求后端接口(了解 [fetch ](https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch)和[ js 异步](https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Asynchronous)
- 定时提醒用户待办的时间(查阅 [setTimeout ](https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout)/ [setInterval](https://developer.mozilla.org/zh-CN/docs/Web/API/setInterval)
#### 小提示
可以参考 [todomvc](https://todomvc.com/examples/vanillajs/)[source](https://github.com/tastejs/todomvc/tree/gh-pages/examples/vanillajs)[源码](https://github.com/tastejs/todomvc/tree/gh-pages/examples/vanillajs))中关于 js 实现 todolist 的方法,不过还是得亲手实践哦~