9.HTML 续
http-server的安装
视频iframe和a这一节有介绍
10.入门css
知识点
- 如何做横向布局(float + clearfix)
- 继承样式inherit
- 四种引入 CSS 的方式:行间样式、内部样式、外部样式、@import
作业
完成简历的logo和top-navbar
11.CSS 布局与定位
知识点
- 尽量不要设置width和height,通过调节padding来自适应.
- 用max-width代替width,这样当屏幕小于这个width时会自适应缩放
- 高度是由什么决定的
- 什么是文档流【文档内元素流动的方向】
- 内联元素 与 块级元素
- line-box 是啥
- box 是啥(盒模型)
- 宽度是有什么决定的
- position 的 5 个取值
- 脱离文档流
- background-size:cover
- z-index
作业
- 大背景图
- 大名片card
12.CSS 布局与定位续
知识点
- 太极图12线性渐变background: linear-gradient(to bottom, white 0%,white 50%,black 50%,black 100%);:before,:after伪元素
作业
- 制作下载按钮
- 技能百分比条
- 非线性布局1234设置dib后,一定要加上vatdisplay: inline-block;vertical-align: top;
13.命令行 HTTP Node.js HTML CSS 小结
命令行复习
|
|
HTTP请求与响应复习
- 请求包括 GET(获取) POST(上传) PUT(整体更新) PATCH(局部更新) DELETE(删除) HEAD OPTIONS等
- 能够手写http请求,能够手写http响应
- Content-Type: application/x-www-form-urlencoded : 应用数据/还没有写入规范的格式-万维网-表单-用urlencode形式压缩
- 知道状态码的含义
TCP/IP协议 Node.jsServer
14.算法初级
- 排序算法列表 https://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#排序算法列表
- 冒泡排序 http://bubkoo.com/2014/01/12/sort-algorithm/bubble-sort/
- 插入排序 http://bubkoo.com/2014/01/14/sort-algorithm/insertion-sort/
- 桶排序 http://bubkoo.com/2014/01/15/sort-algorithm/bucket-sort/
- 其他排序:http://bubkoo.com/tags/algorithm/
- 快排、随机快排
排序算法js代码
https://www.cnblogs.com/Unknw/p/6346681.html
15.数据结构
哈希、队列、栈(stack)、链表、数(tree)
- 计数排序(有多少个数就有多少个桶)与桶排序(自定义一个范围桶)与基数排序(始终10个桶)
- 队列:先进先出,arr.shift()
- 栈:先进后出,arr.pop()
链表,可以用来删除数组中间的某个数
12345678910var a = {value:0,next:{value:2,next:{value:1,next:undefined}}}树
堆排序:https://www.cs.usfca.edu/~galles/visualization/HeapSort.html
16.JavaScript 初体验
做一个键盘导航
代码和预览:https://github.com/FrankFang/nav-demo
text-transform: uppercase
将字母变成大写
sublime正则替换的用法
for循环创建div
store.js的使用
记得判断是否存在容器
create元素和append元素
prompt的使用
如果点击取消,则promote返回null,所以要做判断是否点击确定还是取消
键盘事件要加在document身上
这个事件加在document身上
ev
|
|
ev.target
ev.key和ev.keyCode
ev.key直接获取按下哪个键
ev.keyCode获取键值
open和location.href
|
|
17.第一个 JS 作品
完善上一节课的键盘导航
键盘参考:http://mcdlr.com/key-sheet/
代码参考:https://github.com/FrankFang/nav-demo/
知识点
渐变色
|
|
利用box-shadow实现多层边框(立体感)
|
|
100vh使元素的高度占满可视区高度
|
|
ico图标
|
|
oImg.onerror
|
|
函数封装
|
|
return多个时要用一个对象
|
|
18.Canvas画板
知识点
鼠标事件
|
|
canvas
- canvas设置宽高时,由于它是inline元素,所以先要设置display:block或者vertical-align: top;;然后修改它的属性宽高,而不是css的宽高
19.手机端画板
添加viewport
方法:meta:vp
+ tab
touch方法
手机端没有鼠标,所以不能用
onmouse
方法,而应该用ontouch
方法123元素.ontouchstart = fn;元素.ontouchmove = fn;元素.ontouchend = fn;判断是否支持touch方法(特性检测)
1234567if (document.body.ontouchstart !== undefined) {//是触屏设备} else {//是非触屏设备}
判断浏览器是否支持标签的某个属性
|
|
判断是否是移动设备
|
|
- 获取触摸坐标123var ev = ev.touches[0];//获取第一个触摸点var x = ev.clientX;由于触摸屏支持多点触控,有好几个touches,所以不能通过ev.clientX获取坐标
移动端必须在ontouchstart时,ev.preventDefault();阻止屏幕的滚动
iconfont的使用
- 批量去色
有些icon有默认色,为了icon颜色统一,建议批量去色
选择完icon并添加至项目
后,选择批量操作
里的批量去色
局域网调试
利用http-server进行局域网调试
20.JS里的7种数据
- number
- string
- boolean
- symbol
- undefined
- null
- object
21.类型转换
btoa将字符串转为base64
类型转换
5个falsy值
内存图
面试题-对象的引用
面试题-垃圾回收
面试题-深拷贝vs浅拷贝
22.JS里的对象
全局函数
1.Number
var n = new Number(1) 创建一个 Number 对象1
与 new Number(1)
的区别是什么?看内存图
2.String
var s = new String(‘hello’) 创建一个 String 对象
‘hello’ 与 new String(‘hello’) 的区别是什么?看内存图
3.Boolean
var b = new Boolean(true) 创建一个 Boolean 对象
true 与 new Boolean(true) 的区别是什么?看内存图
4.Object
var o1 = {}
var o2 = new Object()
o1 和 o2 没区别
原型prototype
var 对象 = new 全局函数() //函数包括Number(123)/String(‘123’)等全局函数
对象.proto === 全局函数.prototype
23.给简历加 JS
- loading 动画
- 会变的navbar , sticky navbar 鼠标滚动后导航栏黏着
- 会动的二级菜单menu
- 点击导航栏自己滚动到对应那一块 auto scroll smoothy
chrome控制动画速度
选中动画元素Elements → 点击三个点(更多) → More tools → Animations里控制动画的速度
scrollY
var y = scrollY;//window.scrollY,window可省略
字体颜色inherit
ev.target 和 ev.currentTarget
xxx.tagName.toLowerCase()
if (xxx.tagNamea.toLowerCase() == ‘ul’)
a.href 和 a.getAttribute(‘href’)
|
|
ele.offsetTop() 和 window.scrollTo(x,y)
|
|
24.给简历加 JS(续)
平滑滚动smooth scroll
tween.js
滚动监听scrollspy
检测元素出现在可视区
|
|
技能条加载动画
25.JS 数组Array
数据类型new不new的区别
伪数组
数组的操作(api)
26.函数Function
函数的声明方法
eval()
函数的调用
call、this、arguments面试题
call stack调用栈
作用域面试题
闭包
27.DOM API
文档对象模型
DOM各种api的操作
28.jQuery 不过如此
三等号
===
三等号
NaN永远不等于NaN
对象永远不等于对象,因为他们在stack区的Address地址不一样
封装自己的js库
jquery原理
29.用 jQuery 做个轮播吧
DOM作业讲解
在使用querySelector方法时,遇到DOM树增加或删除,需要重新获取
jquery作业讲解
jquery实现轮播图
- index(),eq()的相互结合
- 取模的运用
- trigger()的用法
30.无缝轮播
- 过渡结束事件transitionend的用法
- 放慢速度查看动画效果:chrome -> 更多选项(三个点) -> more tools -> animations
- 切换到另一个页面时,为了防止定时器错乱,需要监听visibilitychange
- addEventListener()
- DOM事件,捕获和冒泡
31.期中考试
32.DOM事件
- 点击其他地方关闭浮层
- 节省内存的写法.one()
- 可左右切换的无缝轮播图
33.JSONP 是什么鬼
git reset 后悔药id --hard
- 动态创建scrip标签用来发送请求
- script标签创建后自动执行,执行完后ev.currentTarget.remove()将其删除
- jsonp
34.AJAX 是什么鬼
- 背出XMLHttpRequest的写法
- console.time();要执行的代码;console.timeEnd(); 可以得到代码执行时长
- json里面的字符串必须用双引号
- 从后端获取的数据是字符串类型,需要通过JSON.parse(字符串)转成JS对象
- chrome开发者工具 → Network → Network → 点击preserve log(页面刷新时不清楚日志)
35.自己实现 AJAX
- ajax设置http请求headers的4部分
- ajax获取http响应headers的4部分
- 浏览器从输入网址回车到呈现页面的过程
- 封装jQuery.ajax
- ES6解构赋值的用法
- Promise的用法
36.把 MVC 的 VC 加到简历里
- 简历中引入swiper的使用
- 模块化 -> 立即执行函数,变量互不影响
- 立即执行函数,闭包
- MVC的VC
37.给简历加个数据库
- 免费服务器leancloud
- Date对象的toLocaleString()方法
- MVC的M
38.js高级基础知识考试
39.来,面向对象编程吧!
- 命名空间
- 理解
var app = app || {}
- Class 类
- 复习this
- new一个构造函数时到底做了些什么
41.会动的简历
完整代码:https://github.com/FrankFang/animating-resume
预览:https://frankfang.github.io/animating-resume/
vue.js 版本:https://jirengu-inc.github.io/animating-resume/public/
vue.js 版本源码:https://github.com/jirengu-inc/animating-resume
<pre>
标签,保留多个空格和回车换行,<pre>
显示多行代码,<code>
显示一行代码,<pre>
可以替代<code>
- 代码高亮插件(关键词js syntax lib):prism.js或者hightlight.js
- 初识异步(先写的代码排在后面才执行)
- 初识回调
- promise
- window.scrollTo(0,document.body.scrollHeight),使得滚动条始终拉到最底下
- 插件marked.js的用法
42.画一只皮卡丘
- 手机端的宽度最好控制在320px以内
- 扇形的制作
- npm(yarn)的使用,以及忽略node_modules,防止里面的所有插件都提交到git
- node_modules里的jquery不忽略的方法
- 自定义属性
data-
的用法 - 因为循环定时器的speed一旦设定就无法改变,所以要用setTimeout+延时递归实现setInterval
- 用命令行将第三方插件从node_modules拷贝到vendor文件夹下
- chrome的disable-cache的使用
43.Cookie与登录注册
- 复习浏览器请求与响应
- 做一个登入注册
- 用curl向后端发请求
- cookie的设置和获取
44.Session、LocalStorage、Cache-Control
- 服务器通过cookie发送给浏览器sessionID(随机数)
- sessionStorage
- localStorage
- web性能优化:HTTP缓存
- 用
curl -L https://cdn.bootcss.com/xxx.js >> main.js
将其写入本地的main.js文件 - cache-control
- Expires
- Etag
- Last-Modified
45.初识 webpack
- 前端工程化
- sass的使用,用命令行将sass自动转成css
- 用Bable将es6自动转成es5
- 命令行CLI
46.从 MVC 到 MVVM
- axios的使用,请求数据,伪造数据
- es6的解构赋值
- 通过jq的事件委托,使得DOM结构被更改时原来的按钮仍然能被触发
- 从jquery到mvc再到mvvm
- 用vue做显示helloworld、轮播、tab切换
47.2018年前端面试押题
48.简历
- 简历的制作及投递,分析HR的心态
- LeanCloud获取最新的10条留言
- 一些amazing的库
49.毕设:网易云音乐
- 需求分析
- LeanCloud的使用
- git bash的使用(gitignore忽略)
- 七牛环境搭建
50.网易云音乐2
- flex布局
- MVC
- 发布订阅模式
- object.assign()的用法
- 保存数据到服务器save
深拷贝:let newObj = JSON.Parse(JSON.stringify(obj))
51.网易云音乐3
- 获取数据find
- 深拷贝:
let newObj = JSON.Parse(JSON.stringify(obj))
52.网易云音乐4
- 通过查询参数获取歌曲
- arr.filter(v=>v) 将数组中的falsy值过滤
- css模糊blur不要直接给元素模糊,不然文字也会模糊,给伪元素模糊,并z-index:-1
- jq用each代替for循环
- jq的第i个要用$().eq(i),如果写成$()[i]就会变成dom对象
53.网易云音乐5
- 歌词滚动的方法
53.网易云音乐6
- 手机端调试大法
- window.onerror=function(msg,file,line){alert(msg)}
- tencent/vconsole
54.毕设:Vue简历编辑器1
- WebStorm的用法
- dl>dt>dd的用法,dl标签定义一个描述列表。用于描述,比如姓名:xxx,年龄:xxx;ul标签用于展示项目
- 监听contenteditable的事件
55.Vue简历编辑器2
- 组件component的使用
- WebStorm的用法
- chrome的debugger用法(在获取currentUser那一课)
- 文档->深入响应式原理 -> 如何跟踪变化
56.Vue简历编辑器3
- 用console.dir()查看对象的层级
resume.info[0].name
是个字符串,怎样变成数组?用正则替换成resume.info.0.name
!正则中的小括号用来提取想要的内容- css要注意权重的问题,比如add按钮前面要添加别的选择器加重权重,不然没有居中
- 用arr.splice(index,1)删除数组中的某一个值
- box-shadow: 0 0 0 10000px rgba(0,0,0,.5),通过扩展半径,实现半透明遮罩
57.Vue简历编辑器4
- 打印功能:window.print();
- 用正则编辑换肤css
- 组件化,父子通信
- 爷孙通信 孙子 -> 父亲 -> 爷爷
- 反点号里面还有反点号时,里面的反点号用`转译
58.Vue简历编辑器5
- 自定义标签默认样式与span一样
|
|
59.一些重要但前面没讲的内容
- 继承的ES5、ES6写法
- 性能优化,chrome的network用法