css篇
BFC
块级格式化上下文,是一个独立的渲染区域,并且有一定的布局规则。
布局规则:
- 内部的Box会在垂直方向,一个接一个地放置。
Box
垂直方向的距离由margin
决定。属于同一个BFC
的两个相邻Box
的margin
会发生重叠BFC
的区域不会与float box
重叠。BFC
就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。- 计算
BFC
的高度时,浮动元素也参与计算
如何生成BFC
:
- 根元素
float
不为none
的元素position
为fixed
和absolute
的元素display
为inline-block、table-cell、table-caption,flex,inline-flex
的元素overflow
不为visible
的元素
参考文章:BFC原理及其应用
两列布局
侧边栏定宽,右边自适应
给定代码:
html
1 |
|
使用
float
来实现css1
2
3
4
5
6#aside {
float: left;
}
#main {
overflow: hidden; /*让main成为一个BFC,float也是一个BFC,两个BFC不会重叠*/
}使用绝对定位来实现——麻烦,不推荐
使用
flex
来实现css1
2
3
4#page {
display: flex;
flex-wrap: wrap; /*超出则换行*/
}使用
inline-block
实现css1
2
3
4
5
6
7
8
9
10
11
12#page {
font-size: 0; /*消除html中空格*/
}
#aside {
display: inline-block;
font-size: 20px;
vertical-align: top; /*当左右高度不一致时使用*/
}
#main {
display: inline-block;
font-size: 30px;
}使用
absolute
和margin-left
实现
侧边栏不定宽,右边自适应
给定代码:
html
1 |
|
使用
float
+BFC
来实现css1
2
3
4
5
6#aside {
float:left;
}
#main {
overfloat:hidden;
}使用
flex
来实现css1
2
3
4
5
6#page {
display: flex;
}
#main {
flex: 1; /*自动分得父元素的宽度减去侧边栏的宽度*/
}
js篇
数据类型
严格区别变量类型和数据类型
- 数据的类型:
- 基本类型
- 对象类型
- 变量的类型:(变量内存值的类型)
- 基本类型:保存的就是基本类型的数据
- 引用类型:保存的是地址值
null
null与undefined区别
undefined
代表定义未赋值null
定义了并赋值了,只是值为null
什么时候给变量赋值为null
- 初始赋值,表明将要赋值为对象
- 结束前,让对象成为垃圾对象(被垃圾回收器回收)
Javascript
1 | var b = null |
vue篇
SPA
SPA
仅在页面初始化时加载HTML、Javascript、CSS
,不会因为用户的操作而进行页面刷新或跳转,使用路由机制来实现HTML
内容的变换。
优点:
- 用户体验好、快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染
- 相对对服务器压力小
- 前后端分离,架构清晰。
缺点:
- 首次加载耗时
- 无法使用浏览器的前进后端,需使用路由控制前进后退
- 不利于
SEO
v-if、v-show
v-if
——真正的条件渲染,是惰性的。只有条件为真时,才会渲染条件块。适用于运行时不需要频繁切换条件的场景。
v-show
——不管初始条件是什么,元素都会被渲染,只是简单基于css
的display
属性切换。适用于频繁切换条件的场景
computed、watch
computed
——计算属性,依赖其它属性值,并且 computed
的值有缓存,只有它依赖的属性值发生改变,*下一次获取 *computed
的值时才会重新计算 computed
的值。
watch
——更多的是「观察」的作用,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作。
数组变动
vue
中不能检测一下数组的变动
利用索引重新设置一个数组项,如:
vm.items[indexOfItem] = newValue
。需使用如下方法
Javascript1
2
3
4
5
6// Vue.set
Vue.set(vm.items, indexOfItem, newValue)
// vm.$set,Vue.set的一个别名
vm.$set(vm.items, indexOfItem, newValue)
// Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)修改数组的长度,如:
vm.items.length = newLength
。需使用如下方法
Javascript1
2// Array.prototype.splice
vm.items.splice(newLength)
算法篇
基本排序
冒泡排序
原理:把一组数组的元素两两比较,交换位置,从而实现排序。
Javascript
1 | function bubbleSort (arr) { |
插入排序
原理:扑克牌玩法
Javascript
1 | function insertSort(arr) { |
快速排序
原理:选取出数组的中间项,在原数组中进行比较,大于基数放右边,小于基数放左边。
Javascript
1 | function quickSort(arr) { |