上下margin重叠问题
边界重叠是指两个多个盒子(可能相邻也可能嵌套)的相邻边界(期间没有任何非空内容, 补白, 边框)重合在一起,而形成一个单一边界.水平边距永远不会重合.1\. 外边距重叠的意义 外边距的重叠只产生在普通流文档的上下外边距之间, 这个看起来有点 奇怪的规则, 其实有其现实的意义 当我们上下排列一系列规则的块级元素(如段落P)时,那么块元素之 间因为外边距重叠的存在,段落之间就不会产生双倍的距离。
防止外边距重叠解决方案 :
1\. 使用外层元素padding代替2\. 内层元素透明边框 border : 1px solid transparent;3\. 内层元素绝对定位 position : absolute;4\. 外层元素 overflow : hidden;5\. 内层元素 加 float : left ; 或者display : inline-bloak;6\. 内层元素 padding : 1px ; 根元素的垂直margin不会被重叠。
标准CSS 盒子模型(Box Model)
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。1\. CSS盒模型本质上是一个盒子,封装周围的HTML元素, 它包括:*外边距(margin)、边框(border)、 内边距(padding)、实际内容(content)四个属性。2\. 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
标准的CSS盒子模型与低版本IE的盒子模型的区别
CSS盒子模型:由四个属性组成的1) 外边距(margin)、2) 内边距(padding)、3) 边界(border)、4) 内容区(width和height);标准的CSS盒子模型和低端IE CSS盒子模型不同:宽高不一样 1\. 标准的css盒子模型宽高就是内容区宽高; 2\. 低端IE css盒子模型宽高 内边距﹢边界﹢内容区;
低于性能有哪些优化点
1\. 减少请求数量2\. 减小资源大小3\. 优化网络连接4\. 优化资源加载5\. 减少重绘回流6\. 性能更好的API7\. webpack优化
移动端配置方案有哪些
Flex布局属性有哪些
1\. flex布局又称为 (盒子布局) 或 (弹性布局)2\. 给盒子添加(display: flex/inline-flex;)属性3\. flex布局以后,子元素的float、clear和vertical-align属性会失效!6个核心属性 : 1). flex-direction 决定主轴的方向 2). flex-flow 设置主轴方向是否换行 是flex-direction属性和flex-wrap属性的 简写形式, 默认值为row nowrap 3). flex-wrap 换行 nowrap 不换行 wrap 换行 wrap-reverse 反向换行 4). justify-content 主轴对齐方式 flex-start 开始位置 flex-end 结束位置 center 居中 space-between 两端对齐 space-around 两端平分 5). align-items 侧轴对齐方式 flex-start 开始位置 flex-end 结束位置 center 居中 baseline 第一行文本底部对齐 stretch 顶部对齐 6). align-content 多根轴线对齐方式 flex-start 开始位置 flex-end 结束位置 center 居中 space-between 两端对齐 space-around 两端平分
项目的6个核心属性 :
1\. ordex 定义项目的排列顺序, 数字越小越靠前,默认为0 (1,2,3)2\. flex-grow 定义项目的放大比例, 默认为0 (1,2,3)3\. flex-basis 定义剩余空间的分配, 默认为auto (1,2,3)4\. flex 定义flex-grow, flex-shrink 和 flex-basis的简写5\. align-self 单项目不一样的对齐方式, 可覆盖align-items属性, 默认为auto (auto, flex-start, flex-end, center, baseline, stretch )
js中let与var,以及const的区别
let 变量
1\. let不具备变量提升, 具有块级作用域, 不允许重复定义
let是块级变量.
使用let声明的变量, 在声明前无法使用,否则将会导致错误;
如果未在 let 语句中初始化变量,则将自动为其分配undefined。
2\. var 具有变量提升,可以重复定义
var定义的变量是全局变量或者函数变量。
函数中使用var关键字进行是做为局部变量,
而没有用var关键字,直接赋值方式声明的是全局变量。
3\. const定义常量(一旦赋值不可更改)
const也用来声明变量,但是声明的是常量。
一旦声明,常量的值就不能改变,
同时它与let相同也不能在相同块级作用域内重复声明同一个变量。
注意:const的作用域与let命令相同:只在声明所在的块级作用域内有效。
== 和 ===的区别
1、对于string,number等基础类型,==和===是有区别的
不同类型间比较,
==是比较"转化成同一类型后的值"看"值"是否相等,
===如果类型不同,其结果就是不等
同类型比较,直接进行"值"比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
3、基础类型与高级类型,==和===是有区别的
对于 ==,将高级转化为基础类型,进行"值"比较,
因为类型不同,=== 结果为false
数组的常用方法和作用
数组的方法
改变原来数组的方法
01\. pop()
改变原数组, 删除数组最后一个元素
如果数组为空,则该方法不改变数组,并返回undefined
02\. push()
数组尾部添加元素, 返回数组的新长度, 不改变原数组
03\. reverse()
颠倒数组的顺序, 改变原数组, 倒序
该方法会改变原来的数组,而不会创建新的数组。
04\. sort 对数组元素进行排序(改变原数组)
使用比较函数,该函数要比较两个值,
比较函数应该具有两个参数 a 和 b
05\. shift()
改变原数组, 删除数组第一个元素
如果数组是空的,那么shift()方法将不进行任何操作,
返回 undefined 值。
06\. unshift()
向数组的开头添加一个或更多元素, 改变原数组,并返回新的长度
注释:该方法会改变数组的长度。
注释:unshift() 方法无法在 Internet Explorer 中正确地工作
07\. splice()
向数组中添加或删除元素, 改变原数组,然后返回被删除的元素
所有主流浏览器都支持 splice() 方法。
(1). 两个参数表示删除, 开始位置删除几个
(2). 第二个参数为0是表示插入
(3). 第二个参数为1或1以上表示替换
注释 : splice()方法与 slice()方法的作用是不同的,
splice() 方法会直接对数组进行修改。
不改变原来数组的方法
01\. concat()
合并多个数组或元素(不改变原数组)
02\. join()
将数组用分隔符连接成字符串(不改变原数组)
03\. slice()
截取原数组中某段元素(不改变原数组)
slice()方法可从已有的数组中返回选定的元素。
04\. toString()
把数组转换为字符串,并返回结果(不改变原数组)
05\. toLocaleString()
把数组转换为字符串(不改变原数组)
对于异步请求,回调函数有什么缺点
如何解决回调地狱问题
实现函数防抖和函数节流