面试移动端知识点
viewport标签知识点
|
|
// width 设置viewport宽度,为一个正整数,或字符串‘device-width’
// device-width 设备宽度
// height 设置viewport高度,一般设置了宽度,会自动解析出高度,可以不用设置
// initial-scale 默认缩放比例(初始缩放比例),为一个数字,可以带小数
// minimum-scale 允许用户最小缩放比例,为一个数字,可以带小数
// maximum-scale 允许用户最大缩放比例,为一个数字,可以带小数
// user-scalable 是否允许手动缩放
注意:移动端1px被渲染成2px。
1 局部处理
mate标签中的 viewport属性 ,initial-scale 设置为1rem 按照设计稿标准走,外加利用transfrome 的scale(0.5) 缩小一倍即可;
2 全局处理
mate标签中的 viewport属性 ,initial-scale 设置为 0.5rem 按照设计稿标准走即可
字体font-family
@ 宋体 SimSun
@ 黑体 SimHei
@ 微信雅黑 Microsoft Yahei
@ 微软正黑体 Microsoft JhengHei
@ 新宋体 NSimSun
@ 新细明体 MingLiU
@ 细明体 MingLiU
@ 标楷体 DFKai-SB
@ 仿宋 FangSong
@ 楷体 KaiTi
@ 仿宋_GB2312 FangSong_GB2312
@ 楷体_GB2312 KaiTi_GB2312
@
@ 说明:中文字体多数使用宋体、雅黑,英文用Helvetica
body { font-family: Microsoft Yahei,SimSun,Helvetica; }
一些meta标签
|
|
其他meta标签
消除transition闪屏
启动硬件加速
最常用的方式:translate3d、translateZ、transform
opacity属性/过渡动画(需要动画执行的过程中才会创建合成层,动画没有开始或结束后元素还会回到之前的状态)
will-chang属性(这个比较偏僻),一般配合opacity与translate使用(而且经测试,除了上述可以引发硬件加速的属性外,其它属性并不会变成复合层),
弊端:硬件加速会导致 CPU性能占用量过大,电池电量消耗加大 ;因此 尽量避免泛滥使用硬件加速。
css实现单行文本溢出显示 …
方法:
实现多行文本溢出显示…
1、WebKit浏览器及移动端
(1)、-webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。常见结合属性:
(2)、display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
(3)、-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
2、其它
绝对定位加:after实现多行超出隐藏
让图文不可复制
|
|
复制加入自己的文本
1、区域监听copy事件,并阻止这个事件的默认行为。
2、获取选中的内容(window.getSelection())加上版权信息,然后设置到剪切板(clipboarddata.setData())。
垂直居中
方法1、已知宽高的。position: absolute; left: 50%; top: 50%; margin-left:-自身一半宽度; margin-top: -自身一半高度;
方法2、table-cell布局 父级 display: table-cell; vertical-align: middle; 子级 margin: 0 auto;
方法3、定位 + transform ; 适用于 子盒子 宽高不定时;
position: relative / absolute;
/top和left偏移各为50%/
top: 50%;
left: 50%;
/translate(-50%,-50%) 偏移自身的宽和高的-50%/
transform: translate(-50%, -50%);
方法4、flex 布局
/flex 布局/
display: flex;
/实现垂直居中/
align-items: center;
/实现水平居中/
justify-content: center;
iponeX适配
安全区域:一个可视窗口范围,处于安全区域的内容不受圆角(corners)、齐刘海(sensor housing)、小黑条(Home Indicator)影响
面试js知识点
js跨域几种方式
1、出现跨域问题是因为浏览器之间存在同源策略,所谓同源是”协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略是浏览器为了防止XSS、CSFR等攻击。
2、如何解决跨域问题
(1)jsonP
<script>
var script = document.createElement('script');
script.type = 'text/javascript';
//传参并指定回调执行函数为onBack
script.src = 'http://www.....:8080/login?user=admin&callback=onBack';document.head.appendChild(script);
//回调执行函数
function onBack(res) {
alert(JSON.stringify(res));
}
</script>
(2)nginx代理跨域
(3)nodejs中间件代理跨域
(4)后端在头部信息里面设置安全域名
查看更多:更多跨域
渲染优化
1.禁止使用iframe(阻塞父文档onload事件);
iframe会阻塞主页面的Onload事件;
搜索引擎的检索程序无法解读这种页面,不利于SEO;
*iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。
2.禁止使用gif图片实现loading效果(降低CPU消耗,提升渲染性能);
3、使用CSS3代码代替JS动画(尽可能避免重绘重排以及回流);
4、对于一些小图标,可以使用base64位编码,以减少网络请求。但不建议大图使用,比较耗费CPU;小图标优势在于:
(1)。减少HTTP请求;
(2)。避免文件跨域;
(3)。修改及时生效;
5、页面头部的 会阻塞页面;(因为 Renderer进程中 JS线程和渲染线程是互斥的);
6、页面头部
事件的各个阶段
1:捕获阶段 —> 2:目标阶段 —> 3:冒泡阶段
document —> target目标 —-> document
addEventListener的第三个参数设置为true和false的区别已经非常清晰了:
true表示该元素在事件的“捕获阶段”(由外往内传递时)响应事件;
false表示该元素在事件的“冒泡阶段”(由内向外传递时)响应事件。
var let const
var:声明变量的作用域限制在其声明位置的上下文中。但是会声明变量提前到代码开头
let:允许你声明一个作用域被限制在块级中的变量、语句或者表达式。且不受变量声明提前影响。
const:声明创建一个值的只读引用 (即指针)。基本数据当值发生改变时,那么其对应的指针也将发生改变,故造成 const申明基本数据类型时,再将其值改变时,将会造成报错。如果是复合类型时,如果只改变复合类型的其中某个Value项时, 将还是正常使用;
js判断设备来源
|
|
audio元素和video元素在ios和andriod中无法自动播放
|
|
小结
1.audio元素的autoplay属性在IOS及Android上无法使用,在PC端正常;
2.audio元素没有设置controls时,在IOS及Android会占据空间大小,而在PC端Chrome是不会占据任何空间;
3.注意不要遗漏微信的兼容处理需要引用微信JS;