1.css3有哪些新特性?
bor-radius 圆角边框
1. 如何实现元素的圆角样式:
- 我们可以通过 CSS border-radius 属性,实现任一元素的“圆角”样式。圆角边框属性**
border-radius**是CSS3新增的属性,在圆角边框属性出现之前,我们想要实现圆角边框都是用圆角图片做背景实现的, 然而现在有了圆角属性就很方便了,可以设置任一样式的圆角;
2. 使用圆角属性细节:
- 圆角边框属性 :border-radius:可以为元素添加圆角边框,他的属性值设置和外边距、内边距的设置方式一样,可以是一个值也可以是二、三、四个值;语法是从左上方开始顺时针依次设置,如果哪一个角没有设置就看他的对角;
3.格式
1.border-radius:数字+px;
2.border-radius:50%;//百分比最大50%
- 四个值 - border-radius: 15px 50px 30px 5px;(依次分别用于:左上角、右上角、右下角、左下角):
- 三个值 - border-radius: 15px 50px 30px;(第一个值用于左上角,第二个值用于右上角和左下角,第三个用于右下角):
- 两个值 - border-radius: 15px 50px;(第一个值用于左上角和右下角,第二个值用于右上角和左下角):
- 一个值 - border-radius: 15px;(该值用于所有四个角,圆角都是一样的)
4.案例
正圆
<div class="box"></div>
.box{
width: 200px;
height: 200px;
background-color: aqua;
border-radius: 50%;
}
胶囊
<div class="box"></div>
.box{
width: 150px;
height:60px;
background-color: pink;
border-radius: 60px;
margin:200px auto ;
}
-
background-size:背景图片大小 -
transition:过渡 过渡的属性 完成时间(s) 运动曲线 延迟时间 -
transition 包含以下四个属性: -
transition-property 过渡属性。如果希望所有的属性都发⽣过渡,就使⽤all -
transition-duration 过渡的持续时间,单位是s或者ms -
transition-timing-function 运动曲线。属性值取值: -
ease 慢速开始,然后变快,然后慢速结束的过渡效果(默认 cubic-bezier(0.25,0.1,0.25,1)) -
linear 线性,以相同速度开始至结束的过渡效果(cubic-bezier(0,0,1,1)) -
ease-in 以慢速开始的过渡效果(cubic-bezier(0.42,0,1,1)) -
ease-out 慢速结束的过渡效果(cubic-bezier(0,0,0.58,1)) -
ease-in-out 以慢速开始和结束的过渡效果(cubic-bezier(0.42,0,0.58,1)) -
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值,<https://cubic-bezier.com/> -
transition-delay 默认是0,单位为s,过渡延迟。多⻓时间后再执⾏这个过渡动画。 -
transition-duration 这个属性需要首先设置,否则时长为 0,就不会产生过渡效果。 - transform:转换(位移 旋转 缩放)
-
移动— translate 旋转— rotate 缩放—scale -
animation:动画 -
linear-gradient:线性渐变 -
box-sizing:css3 盒子模型
2.Git的核心概念有哪些?
git核心概念图
工作区(Working Directory)
1.工作区就是我们工作的区域,我们的每一个项目目录就是一个工作区。
暂缓区(Postponed Zone)
进入到该文件夹之后,使用命令 git init命令,则会创建版本库,即产生一个 .git隐藏文件夹
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,暂存区有时候也称之为索引区。还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
使用指令git commit -m""提交到本地仓库
总结:
- 工作区 workSpace 通过 git add 提交到暂存区
- 暂存区 index 通过 git commit -m "" 提交到本地仓库
- 本地仓库 Local warehouse 通过 git push 提交到远程仓库
- 远程仓库 Remote warehouse
3 . git中分支的操作有哪些
- git branch 查看本地分支
- git branch -a 查看所有分支
- git branch 分支名 创建本地分支
- git branch -D 分支名 删除本地分支
- git checkout 分支名 切换分支
- git push origin master 分支名 创建远程分支
- git push origin :分支名 删除远程分支
- git merge 分支名 合并分支
4. 标准盒模型与怪异盒模型的区别
- 标准盒模型的宽高 = content 内容
- 怪异盒模型的宽高 = content 内容 + padding内边距 +border 边框
5. event loop 事件循环如何理解
在理解事件循环之前需要知道js的同步异步,以及宏任务微任务。
⾸先, JavaScript 是⼀⻔单线程的语⾔,意味着同⼀时间内只能做⼀件事,但是这并不意味着单线程就是阻塞,⽽实现单线程⾮阻塞的⽅法就是事件循环(event loop) 在 JavaScript 中,所有的任务都可以分为:
1. 同步异步
- 同步任务:⽴即执⾏的任务,同步任务⼀般会直接进⼊到主线程中执⾏
- 异步任务:异步执⾏的任务,⽐如 ajax ⽹络请求, setTimeout 定时函数等 碰到异步任务会进入任务队列进行等待 异步执行的时机是同步代码执行完了 异步任务准备好(比如计时器到时间了 ajax 请求成功了)才会执行异步任务 2. 宏任务微任务 异步任务 又分为宏任务微任务
- 宏任务 计时器 ajax 请求
- 微任务 promise.then()
JS异步执行的机制为,先执行主线程上的同步任务,同步任务执行完之后,读取任务队列,哪些任务准备完毕就结束等待状态,进入执行栈,开始执行。这个过程会循环反复,叫做事件循环(EventLoop) JS还有一种异步执行机制,就是遇到宏任务,先将宏任务放入任务队列,再将微任务放入微任务队列,但是,这两个队列不是一个队列。当你往外拿的时候先从微任务队列里拿这个回调函数,然后再从宏任务的队列里拿宏任务的回调函数,也就是宏任务是先进后出,微任务后进先出。
执行结果 1 7 6 8 2 4 3 5 9 11 10 12
6. 数组的方法有哪些(写出es5的方法),什么意思
- concat( ):数组合并。concat() 方法不会更改现有数组。它总是返回一个新数组
- join( ):数组转字符串。
- pop( ):删除最后一个元素。
- push( ):数组向后添加。
- unshift( ):数组向前添加。
- reverse( ):数组翻转。
- shift( ):删除第一个元素。
- slice( ):数组元素的截取,返回一个新数组,新数组是截取的元素,可以为负值。
- sort( ):对数组元素进行排序;
- splice( ):删除元素,并向数组添加新元素;
- toString( ):数组转字符串;
- toLocaleString( ):将数组转换为本地数组。
- forEach( ):数组进行遍历;
- map( ):没有return时,对数组的遍历。有return时,返回一个新数组,该新数组的元素是经过过滤(逻辑处理)过的函数。
- filter( ):筛选。
- every( ):当数组中每一个元素在callback上被返回true时就返回true。(注:every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。
- some( ):当数组中有一个元素在callback上被返回true时就返回true。(注:every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。
- reduce( ):回调函数中有4个参数。prev(之前计算过的值),next(之前计算过的下一个的值),index,arr。把数组列表计算成一个单一值。
7. 扩展运算符与rest剩余参数是什么意思,应用场景
ES6的扩展运算符( spread )是三个点(...),展开元素会“展开”数组变成多个元素。 rest运算符也是三个点(...),剩余元素会收集多个元素后“压缩”成一个单一的元素,rest参数用于获取函数的多余参数。rest运算符的功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组。
rest参数可理解为剩余的参数,所以必须在最后一位定义,如果定义在中间会报错。
function fn(username,...rest) {
// console.log(username,age,rest)
console.log(username,rest)
}
fn("张三", 21, "男", "北大");
rest运算符应用场景
rest运算符主要是处理不定数量参数,rest参数使得收集参数变得非常简单。它是类数组对象arguments一个合理的替代品。
合并数组
let arr1 = ["北京", "上海"];
let arr2 = ["广州", "深圳"];
arr1.push(...arr2);
console.log(arr1)
扩展运算符应用场景
可以替代语法繁琐的apply方法。当需要拿一个数组的元素作为函数调用的参数时(即 数组实参),扩展运算符是一个不错的选择。
8. es6新增数据结构Set Map 代表什么意思?利用其中一种实现数组去重?
Set 是无重复值的有序列表。根据 Object.is()方法来判断其中的值不相等,以保证无重复。 Set 会自动移除重复的值,因此你可以使用它来过滤数组中的重复值并返回结果。 Set并不是数组的子类型,所以你无法随机访问其中的值。但你可以使用has() 方法来判断某个值是否存在于 Set 中,或通过 size 属性来查看其中有多少个值。 Set 类型还拥有forEach()方法,用于处理每个值
Map 是有序的键值对,其中的键允许是任何类型。与 Set 相似,通过调用 Object.is()方法来判断重复的键,这意味着能将数值 5 与字符串 "5" 作为两个相对独立的键。使用set() 方法能将任何类型的值关联到某个键上,并且该值此后能用 get() 方法提取出来。Map 也拥有一个 size 属性与一个 forEach() 方法,让项目访问更容易。
set概念图
map概念图
9. 说一下你理解的Promise? 用promise封装一个网络请求,核心代码?
promise 是ES6新增的异步编程解决方案,可以用于解决回调地狱问题,能够进行链式调用。 promise 的核心是回调函数。他有三种状态,分别是 进行中(pending),已完成(fulfilled),已失败(rejected) 。 promise 构造函数有两个参数,分别是 resolve 和 reject。 resolve 将 promise 状态由 pending 变为 fulfilled, reject 将 promise 状态由 pending 变为 rejected promise 状态一旦改变就不会再变。
基础用法:
<script>
let pro = new Promise((resolve, reject) => {
resolve('成功了')//状态由pending变为fulfiled
reject('失败了')//状态由pending变为rejected
})
pro.then((res) => {//成功回调
console.log(res);
},(err)=>{//失败回调
console.log(err);
})
</script>
promise构造出的实例存在以下方法:
- (1) .then() 成功时回调函数
- (2) .catch() 失败时回调函数
- (3) .finally() 不管promise对象最后结果如何都会执行
<script>
let pro = new Promise((resolve, reject) => {
resolve('成功了')//状态由pending变为fulfiled
reject('失败了')//状态由pending变为rejected
})
pro.then((res) => { //成功回调
console.log('成功回调', res)
}).catch((err) => { //失败回调
console.log('失败回调', err)
}).finally(() => {
console.log('不管成功与失败都会执行');
})
</script>
promise 封装 axios 原理
function axios(url, method, data) {
return new Promise((resolve, reject) => {
$.ajax({
url: url,
method: method,
data: data,
success: function (res) {
resolve(res)
},
error: function (err) {
reject(err)
}
})
})
}
axios('data/data.json').then(res => {
console.log(res);
})
10. 说一下es6的导入导出如何使用
export和export default 导出
export 与import是es6中新增模块功能最主要的两个命令:
1.export与export default均可用于导出常量、变量、函数、文件、模块等;
2.在一个文件或模块中,export、import可以有多个,但export default仅有一个;
3.通过export方式导出,在导入(import)时要加花括号{ },export default则不需要话跨好{ }。
//先是 export
import {axiosfetch} from './util'; //需要加花括号,可以一次导入多个也可以一次导入一个,但都要加括号
//如果是两个方法
import {axiosfetch,post} from './util';
//再是 export default
import axiosfetch from './util'; //不需要加花括号,只能一个一个导入
部分导出
export function helloWorld(){
conselo.log("Hello World");
}
export不限导出的变量数,可以一直写,在同一个js文件中可以有多个。
全部导出
export default http
export default只输出一次,在同一个js文件中只能有一个。
import导入
import在引入文件路径时,引入一个依赖包,不需要相对路径。如:import app from ‘app’;,但引入一个自己写的js文件,是需要相对路径的。如:import app from ‘./app.js’;。
引入第三方
//axios导入
import axios from 'axios'
// 引入element
import ElementUI from 'element-ui';
导入css文件
import 'vue-video-player/src/custom-theme.css';
import 'video.js/dist/video-js.css';
import 'iview/dist/styles/iview.css';
组件导入
import name1 from './name1';
import name2 from './name2';
import App from './app.vue';
components:{
name1,
name2,
App,
},