Less入门以及一些前端面试题
Less是什么?
Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。这里呈现的是 Less 的官方文档(中文版),包含了 Less 语言以及利用 JavaScript 开发的用于将 Less 样式转换成 CSS 样式的 Less.js 工具。
因为 Less 和 CSS 非常像,因此很容易学习。而且 Less 仅对 CSS 语言增加了少许方便的扩展,这就是 Less 如此易学的原因之一。
如何安装?
对于初学者来说,不会用node来安装,可以直接在Visual Studio Code编辑器里下载Easy LESS插件。
装好了插件我们就可以写less代码了(当我们再Visual Studio Code装好插件时,保存时会自动生成一个css文件)
less的使用方法如图:
less变量赋值
@Color : blue;
@backgroundColor : pink;
.box{
color: @Color;
background - color: @backgroundColor;
}
.box1{
color: @Color;
background - color: @backgroundColor;
}
.box2{
color: @Color;
background - color: @backgroundColor;
}
.box3{
color: @Color;
background - color: @backgroundColor;
}
.box4{
color: @Color;
background - color: @backgroundColor;
}
当我们编写css样式的时候,如果需要大篇幅的使用相同的样式,这个时候我们就可以利用less的声明变量的方式来赋值,再将这个变量当做样式的值。而且当我们需要更改样式时,也只需要改变赋值的变量的值即可。!注意:声明变量时前面一定要加@符号!
less封装函数
less还可以像js一样的来封装函数,需要时可以直接调用。
.borderRadius(@px) {
border - radius : @px;
}
.box5{
.borderRadius(10px)
}
less与sass的异同
相同点:
sass和less都是Css的预处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,作用域,JavaScript赋值等
加快了css开发效率,当然这两者都可以配合gulp和webpack等前端构建工具使用。
差异:
- less定义变量用“@”,saxx用“$”
/*less*/
@width:100px;
.box{
width:@width;
}
/*sass*/
$变量名:值
$width:100px;
.box{
width:$width;
}
如果变量包含字符串则写在 #{}之中
$c:color;
.box{
border-#{$c}:red;
}
- 处理方式不同
Less和Sass的主要不同就是他们的实现方式。
Less是基于JavaScript,是在客户端处理的。
Sass是基于Ruby的,是在服务器端处理的。
面试题
原生js入口函数(window.onload)和jq的入口函数(( d o c u m e n t ) . r e a d y ( f u n c t i o n ( ) ) , (document).ready(function () {}),(document).ready(function()),(function () {}))有什么区别?
①执行时间不一样;原生js必须要等到页面上包括图片的所有元素加载完成之后才能执行;
jq是DOM结构绘制完毕后就会执行。
②编写个数不同;原生js不能同时写多个,如果写多个只会执行一个;
jq可以写多个,并且都可以执行。
③jq有简写,原生js不能简写。
ajax的优缺点:
优点:
①不用刷新就能更新数据(即局部更新);
②异步与服务器通信;
③前端和后端负载平衡;
④基于标准被广泛支持;
⑤界面与应用分离;
缺点:
①使浏览器的back(回退)和history(历史)功能失效;
②因为跨域,可能存在安全问题;
③对搜索引擎支持较弱;
④对移动端支持较差。
⑤客户端代码冗余。
闭包是什么,有什么缺点?
闭包:一个函数内部函数在作用域外部被访问,即将函数内部与函数外部建立关系的桥梁。
优点:
①避免造成全局污染,
②函数外部能够访问到函数内部的变量
缺点:
使用过多的闭包,可能会造成内存泄漏。!!闭包本身不是造成内存泄漏的原因。
说说你对this的理解?
this是一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。
①作为纯粹的函数调用,this指向全局对象
②作为对象的方法调用,this指向调用对象
③作为构造函数被调用,this指向新的对象(new会改变this的指向)
④作为箭头函数被调用,this指向他外层父级作用域上下文。(即父级的运行环境)
事件委托原理,以及事件委托的好处?
事件委托:利用浏览器的冒泡机制,将子级元素的事件函数编写在父级元素上,以此实现来用父级管理子级集合的事件。
优点:
①可以大量节省内存占用,减少事件注册。
②新增子元素不需要再次绑定事件。