当前位置: 首页 > Web前端 > CSS

前端知识点简介

时间:2023-03-30 17:06:43 CSS

1.闭包《JavaScript高级程序设计》:闭包是指一个函数可以访问另一个函数作用域内的变量《JavaScript权威指南》:1.函数嵌套函数2.函数内部可以引用外面的参数和变量3.参数和变量不会被垃圾回收机制回收。闭包更准确地说是一种技术或一种特性。闭包的主要目的是解决ES6之前JavaScript只有全局作用域和局部作用域的问题。解决了函数作用域内的JavaScript垃圾回收机制导致全局作用域的变量容易被污染,函数调用结束后变量被销毁的问题。通过嵌套函数,将返回的函数赋值给一个变量,形成一个作用域链,这样函数就不会被销毁,直到被赋值的变量被销毁。这种技术或特征应该称为“闭包”。应用场景1.防抖节流2.创建私有函数、变量或方法3.给一些定义好的函数(框架等)传递附加参数,比如fetch-suggestions方法getName(element-ui可搜索输入的idbox){return(val,callback)=>{letresult=[]if(val===''||!val){//无输入,无请求returncallback(result)}}},缺陷1。由于闭包会导致函数中的变量存放在内存中,内存消耗非常大,所以不能滥用闭包,否则会导致网页出现性能问题。解决方法是在退出函数之前删除所有未使用的局部变量。2.可能会造成内存泄漏。有人认为IE浏览器会,但新的不会。有些人认为会。要知道内存泄漏的原因——一般来说,引用不能被释放。例如,如果您构造一个lambda,它将包含一个上下文引用。如果lambda不能释放,它持有的上下文引用也不能释放,就会造成内存泄漏,久而久之,客户端的内存就会被炸毁。.所以要避免“局部构建,全局持有”的情况,这样才不容易发生内存泄漏。通常,随着本地上下文被销毁,其中的所有资源都可以被回收。但如果出现“局部建设,全球控股”的情况,即使局部文脉被“破坏”,其资源也无法恢复。一个常见的例子是你在组件中mounted的时候创建了一个timer,在没有unmounted或者beforeDestroy的情况下Destroy这个timer,会造成内存泄漏。setimeout会自动销毁,interval不会,interval会一直触发直到销毁。内存泄漏——王一鹏2、BFC的定义BFC(Blockformattingcontext)直译为“块格式化上下文”。它是一个独立的渲染区域,只有Block-levelbox参与,它规定了内部Block-levelBox如何布局,与该区域外部无关。格式化上下文格式化上下文是W3CCSS2.1规范中的一个概念。它是页面中的一个渲染区域,有一套渲染规则,决定了它的子元素将如何定位,以及与其他元素的关系和交互。最常见的格式化上下文是块格式化上下文(简称BFC)和内联格式化上下文(简称IFC)。BFC是一个独立的布局环境,元素的布局不受外界影响,在一个BFC中,blockboxes和lineboxes(lineboxes由一行中的所有inline元素组成)会垂直沿着它的Border对齐父元素的。BFC*InternalBoxes的布局规则将在垂直方向上一个接一个地放置。*Box的垂直距离由margin决定。属于同一个**BFC的两个相邻框的边距将重叠。*每个框(块框和行框)的边距框的左侧触及包含块边框框的左侧(对于从左到右的格式,反之亦然)。即使存在浮动也是如此。*BFC区域不会与浮动框重叠。*BFC在页面上是一个隔离独立的容器,容器里面的子元素不会影响外面的元素。反之亦然。*BFC计算高度时,浮动元素也参与计算。创建BFC*1,float的值不是none。*2.position的值不是静态的,也不是相对的。*3.display取值为inline-block,table-cell,flex,table-captionorinline-flex*4.overflow取值为不可见应用场景1.清除浮动2.两栏自适应布局3.avoidmargins崩溃引用自https://blog.csdn.net/sinat_3...3.清除浮动定义在非IE浏览器下,当容器高度为auto时,内容中有浮动容器(float为左或右)在这种情况下,容器的高度无法自动拉伸以适应内容的高度,从而使内容溢出到容器之外,影响(甚至破坏)布局。这种现象称为浮动溢出。防止这种现象的CSS处理称为CSSclearfloat。清除浮动的方法分为两类:1.使用clear属性在浮动元素末尾添加一个带clear:both属性的空元素2.触发浮动元素的父元素的BFC,所以父元素可以包含浮动元素。使用带clear属性的空元素1.在浮动元素后面使用

等空元素,并在CSS中赋值.clear{clear:both;}属性来清除浮动2、使用CSS的:after伪元素。在浮动元素的容器中添加一个clearfix类,然后添加一个:after伪元素来实现元素并在元素末尾添加一个不可见的块元素来清除浮动/*浮动元素的父元素*/.clearfix{/*兼容IE,触发hasLayout*/zoom:1;}/*添加块级空元素,并设置clear属性*/.clearfix:after{content:'';显示:块;clear:both;}3.赋予浮动元素给后面的元素添加clear属性,触发父元素的BFC1,并设置浮动元素父元素的overflow:hidden或overflow:auto。触发BFC。另外在IE6中需要触发hasLayout,比如为父元素设置宽高或者zoom:1。2.在浮动元素的容器中添加浮动,不推荐整体浮动。引用自https://www.yuque.com/4amgodv...4、