11. 响应式布局,怎么做移动端适配
使用媒体查询可以实现响应式布局。
移动端适配方案:
width=device-width:
让当前viewport宽度等于设备的宽度
user-scalable=no:
禁止用户缩放
initial-scale=1.0:
设置页面的初始缩放值为不缩放
maximum-scale=1.0:
允许用户的最大缩放值为1.0
minimum-scale=1.0:
允许用户的最小缩放值为1.0
(2)媒体查询(响应式)
(3)动态 rem 方案
1. 怎么做一个实时的聊天系统
使用WebSocket和nodejs,《nodejs实战》这本书详细介绍了这个项目。
2. 当消息有延迟的时候,怎么保证消息的正确顺序
每个消息在被创建时,都将被赋予一个全局唯一的、单调递增的、连续的序列号(SerialNumber,SN)。可以通过一个全局计数器来实现这一点。通过比较两个消息的SN,确定其先后顺序。
3. 怎么做一个登陆窗口,input有哪些兼容性
使用form表单。
4. input按钮如何校验
使用正则表达式。
5. 如何实现水平垂直居中,relative、absolute、fixed
6. 写一个函数,1s之后依次输出1,2,3,4,5
直接使用了let和定时器。
for(let i = 1 ; i < 6; i++){
setTimeout(() => {
conosle.log(i)
}, 1000)
}
7. 事件队列(宏任务、微任务)
8. 如何每隔三个数加一个逗号,还要考虑小数点的情况
function transform(number){
var num = number.toString()
var numArr = num.split(‘.’)
var [num, dotNum] = numArr
var operateNum = num.split(‘’).reverse()
var result = [], len = operateNum.length
for(var i = 0; i< len; i++){
result.push(operateNum[i])
if(((i+1) % 3 === 0) && (i !== len-1)){
result.push(‘,’)
}
}
if(dotNum){
result.reverse().push(‘.’, …dotNum)
return result.join(‘’)
}else{