study-every-day
study-every-day copied to clipboard
【每日计划】 2022-02-13
每日计划模板
读书
- [ ] 《CSS 新世界》
- [ ] 红宝书
- [ ] 阅读两篇技术文章
编码练习
- [ ] mini-vue
- [ ] 练习 TypeScript
(该模板使用ch3cknull/auto-issue-comment自动生成)
每日计划
学习计划
- [ ] leetcode 两道
- [ ] 项目整理
- [ ] 面试学习
学习
- [ ] 看 vue3 文档
- [ ] 学习 webpack5 进阶
- [x] 回顾 array 的一些方法
工作
- [ ] xxxxx
日常
- [ ] 每日护肤
- [ ] 11:30 睡觉
- [ ] 7:30 起床
- [ ] 半小时看书
- [ ] 午睡半小时
nextTick 原理?
nextTick 的原理就是它会维护一个更新数据改变视图操作的队列,他不会说是你一变化他就立即更新的,而是等待同一事件环中的所有数据变化完成后再执行更新,而我们传递给 nextTick 的那个回调则会在这个队列的最后被执行,所以它其实是时一种优化策略,减少性能的损耗。
Array.from:将两类对象转为真正的数组 --> 类数组对象和可遍历的对象(Map,Set)。并且它还接收第二个参数用来对每个值进行处理,将返回值放入新的数组中
Array.of:用于将一组值转为数组
- 没有参数传入则返回一个空数组
- 有一个参数,则该参数是新数组的长度
- 参数不少于2个,才会将传入的所有参数放入到一个新的数组中
BFC:块级格式化上下文
BFC
目的是形成一个相对于外界完全独立的空间,让内部的子元素不会影响到外部的元素
BFC 的渲染规则:
- 内部的盒子会在垂直方向上一个接一个的放置
- 对于同一个 BFC 的俩个相邻的盒子的 margin 会发生重叠,与方向无关
- 每个元素的左外边距与包含块的左边界相接触(从左到右),即使浮动元素也是如此
- BFC 的区域不会与 float 的元素区域重叠
- 计算 BFC 的高度时,浮动子元素也参与计算
- BFC 就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
如何形成 BFC:
- 根元素:html
- 浮动元素
- overflow值为:hidden、auto、scroll
- display值不为 none、block
- position值为 absolute 或 fixed
应用场景:
- 防止 margin 塌陷
- 清除内部浮动:BFC 在计算高度时,将会把内部浮动元素的高度也计算在内
- 自适应多栏布局
两栏布局的方式
第一种用 BFC,浮动,margin的方式:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
#box {
width: 100%;
height: 100%;
overflow: hidden;
}
.sidebar {
float: left;
height: 100%;
width: 200px;
background-color: aquamarine;
}
.content {
margin-left: 200px;
height: 100%;
background-color: pink;
}
</style>
</head>
<body>
<!-- 两栏布局 -->
<div id="box">
<div class="sidebar"></div>
<div class="content">
</div>
</div>
</body>
</html>
第二种是使用 flex布局:
-
flex-grow
属性定义项目的放大比例,默认为0
,即如果存在剩余空间,也不放大。 -
flex-shrink
属性定义了项目的缩小比例,默认为1
,即如果空间不足,该项目将缩小。 -
flex-basis
属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto
,即项目的本来大小。 -
flex
属性是flex-grow
,flex-shrink
和flex-basis
的简写,默认值为0 1 auto
。后两个属性可选。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
#box {
width: 100%;
height: 100%;
display: flex;
align-items: flex-start;
}
.sidebar {
width: 200px;
background-color: lightblue;
height: 100%;
}
.content {
/* flex: 1; */
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
height: 100%;
background-color: pink;
}
</style>
</head>
<body>
<!-- 两栏布局 -->
<div id="box">
<div class="sidebar">Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque optio non dolore at itaque odit ullam unde facilis! Quibusdam debitis earum nobis, officiis eos natus consectetur vero recusandae expedita accusamus?</div>
<div class="content">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Debitis quaerat ipsa repudiandae corrupti. Quos, eum. Repellendus laborum aspernatur ab minima blanditiis commodi explicabo deleniti, sit aut iusto earum ipsum magnam.
</div>
</div>
</body>
</html>
第三种也是BFC,只是使自适应的那个容器化为 BFC
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.body {
position: relative;
}
.aside {
width: 100px;
height: 150px;
float: left;
background: #f66;
}
.main {
height: 200px;
background: #fcc;
overflow: hidden;
}
</style>
</head>
<body>
<div class="body">
<div class="aside"></div>
<div class="main"></div>
</div>
</body>
</html>
每日任务
- [x] leetcode打卡
- [x] 上课
- [x] TS类型体操
每日计划 2022-02-13
重要的事
- [ ] 核酸
- [ ] 寄快递
- [ ]
提升自己
- [ ]
其他
重要的事
- [ ] 录制 apifox
- [ ] 制作 Vue3 试听课的封面
- 把 reactivity 的实现,放上去(大概有几集视频)
学习
- [x] [[零基础学好英语语法]]
- [x] 读书 - 营销
- [ ] 自然拼读 Oo
生活