1.列举css的几种选择器 以及各种选择器的优先级 标签选择器=1 h1 span p 类选择器=10 .acitive id选择器=100 #myapp 属性选择器=10 [name="uname"] 内联样式>1000 style="color:#f00" !important 大于1000 是最高选择器 高于内联样式 标签选择器<类选择器=属性选择器<id选择器
后代选择器 h1 span 子代选择器 h1>span 伪类选择器 :hover :link :visited :active 相邻兄弟选择器 span+span 通用兄弟选择器 span~span 不一定紧跟着 但是必须有一个共同的父元素 通用选择器 * 很少使用 群组选择器 span,p,h1 结构伪类选择器 :first-child :nth-child(n) :last-child
伪元素选择器 :after :before
内部样式和外部样式 采用就近原则
2.权重计算规则 !important >1000 内联 =1000 id =100 类 =10 伪类 =10 元素 =1 * =0 继承 无
3.阐述清除浮动的几种方式,以及他们的优缺点 1)给父元素设置高度 但这种情况 有些时候不能精确的计算出父元所需要的高度 2)父元素也浮动 这又会影响父类元素的同级元素了 3)父元素写 overflow:hidden 如果父元素需要 溢出显示的话 就不行了 4)在父元素的后面加空的div元素 设置样式clear:both 4.列举js的几种数据类型 undefined null number string boolean object es7中的 symbol null是原型链的起点 math没构造方法 没有constructor 5.如何使用原生的js给一个按钮绑定多个onclick事件 elem.addEventListener("click",handler1); elem.addEventListener("click",handler2); function handler1(){ console.log("事件添加!"); } function handler2(){ console.log("事件添加!"); } 6.阐述cookies,sessionStorage和localstroage区别
cookies是用来跟踪浏览器上用户身份的会话方式,Cookie是服务器发给客户端的特殊信息, cookie是以文本的方式保存在客户端,单个cookie保存的数据不能超过4kb, 应用:判断用户是否登陆过网站,以便下次能够实现直接登陆 sessionStorage和localstroage是html5的新特性
sessionStorage:将数据保存在session对象中。所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据。
localStorage:将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。
两者都保存在客户端,不会发送到服务器端 sessionStorage为临时保存,而localStorage为永久保存 cookie的存储限制是 4kb 但是 localStorage是 5MB cookie每次都随着http请求到服务器端 占带宽和网速
7.编写一个方法去掉数组里面重复的内容 function qc(arr){ var obj={}; for(val of arr){ obj[val]=val; } arr=[]; var i=0; for(var val in obj){ arr[i++]=val; } return arr; } 8.简述get和post的相同点和不同点 相同点:都可以向服务器发送带参数的请求,HTTP请求底层协议都是TCP/IP,所以两者没有本质的区别 不同点:GET提交的数据放在URL中,POST则不会。这是最显而易见的差别。这点意味着GET更不安全(POST也不安全,因为HTTP是明文传输抓包就能获取数据内容,要想安全还得加密) GET回退浏览器无害,POST会再次提交请求(GET方法回退后浏览器再缓存中拿结果,POST每次都会创建新资源) GET提交的数据大小有限制(是因为浏览器对URL的长度有限制,GET本身没有限制),POST没有 GET可以被保存为书签,POST不可以。这一点也能感受到。 GET能被缓存,POST不能 GET只允许ASCII字符,POST没有限制 GET会保存再浏览器历史记录中,POST不会。这点也能感受到。
9.阐述mvc和mvvm的原理和区别 MVVM即Model-View-ViewModel的简写。即模型-视图-视图模型。模型(Model)指的是后端传递的数据。视图(View)指的是所看到的页面。视图模型(ViewModel)是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。 MVC是Model-View- Controller的简写。即模型-视图-控制器。M和V指的意思和MVVM中的M和V意思一样。C即Controller指的是页面业务逻辑。使用MVC的目的就是将M和V的代码分离。MVC是单向通信。也就是View跟Model,必须通过Controller来承上启下。MVC和MVVM的区别并不是VM完全取代了C,只是在MVC的基础上增加了一层VM,只不过是弱化了C的概念,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用,使开发更高效,结构更清晰,增加代码的复用性。