【前端面试题】—21道有关移动端的面试题
前端发展到今天,移动端的流量已经超越了PC端。比如对绝大部分人来说,每天使用手机上网的时间要远高于使用笔记本电脑、计算机的上网时间。因此移动端变得越来越重要。每个人的手机屏幕大小不同、系统不同,因此移动端屏幕的响应式适配、移动端兼容性、浏览器的操作Bug等是移动端部分的面试题主要考察的内容。
1、在移动端,单击穿透是什么?
单击穿透现象有3种。
单击穿透问题:单击蒙层(mask)上的“关闭”按钮,蒙层消失后,发现触发了按钮下面元素的 click事件。
页面单击穿透问题:如果按钮下面恰妤是一个有href属性的a标签,那么页面就会发生跳转。
跨页面单击穿透问题:这次没有蒙层了,直接单击页内按钮跳转至新页,然后发现新页面中对应位置元素的 click事件被触发了。
有4种解决方案。
(1)只用 touch。
这是最简单的解决方案,完美解决单击穿透问题,把页面内所有 click都换成 touch事件( touchstart、 touched、tap)。
(2)只用 click
因为单击会带来300ms的延迟,所以页面内任何一个自定义交互都将增加300ms的延迟。
(3)轻触〔tap)后延迟350ms再隐藏蒙层。
改动最小,缺点是隐藏蒙层变慢了,350ms还是能感觉到慢的。
(4)添加 pointer-events:none样式。
这比较麻烦且有缺陷,不建议使用。蒙层隐藏后,给按钮下面的元素添上pointer-events:none样式,让 click穿过去,350ms后去掉这个样式。恢复响应的缺陷是蒙层消失后的350ms内,用户单击按钮下面的元素没反应,如果用户单击速度很快,一定会发现。
2、如何实现自适应布局?
通过以下几种方式实现。
(1)可以使用媒体查询做响应式页面。
(2)用 Bootstrap的栅格系统。
(3)使用弹性盒模型。
3、在移动端( Android、ioS)怎么做好用户体验?
从以下几方面做好用户体验
(1)清晰的视觉纵线。
(2)信息的分组。
(3)极致的减法。
(4)利用选择代替输入。
(5)标签及文字的排布方式。
(6)依靠明文确认密码。
(7)合理地利用键盘。
4、如何解决 Android浏览器查看背景图片模糊的问题?
这个问题是 devicePixelRatio的不同导致的,因为手机分辨率太小,如果按照分辨率来显示网页,字会非常小,所以苹果系统当初就把 iPhone4的960×640像素的分辨率在网页里更改为480×320像素,这样 devicePixelRatio=2。
而 Android的 device PixelRatio比较乱,值有1.5、2和3。
为了在手机里更为清晰地显示图片,必须使用2倍宽高的背景图来代替img标签(一般情况下都使用2倍)。
例如一个div的宽高是100px×100px,背景图必须是200px×200px,然后设置 background-size;contain样式,显示出来的图片就比较清晰了。
5、如何解决长时间按住页面出现闪退的问题?
通过以下代码设置样式。
element {
-webkit-touch-callout:none;
}
6、如何解决 iPhone及iPad下输入框的默认内阴影问题?
通过以下代码设置样式。
element
{
-webkit-appearance:none;
}
7、在iOS和 Android下,如何实现触摸元素时出现半透明灰色遮罩?
通过以下代码设置样式。
element {
-webkit-tap-highiight-color:rgba (255, 255, 255, 0)
}
8、在旋转屏幕时,如何解决字体大小自动调整的问题?
通过以下代码设置样式。
html, body, form, fieldset, p, div, hl, h2, h3, h4, h5, h6 {
-webkit-text-size-adjust:100%;
}
9、如何解决 Android手机圆角失效问题?
通过 background-clip:padding-box为失效的元素设置样式。
10、如何解决0S中 input键盘事件 keyup失效问题?
通过以下代码解决。
<input type='text' id='testInput">
<script type="text/javascript">
document. getElementById('testInput') .addEventListener('input', function(e){var value =e .target .value;
});
</script>
11、如何解决iOS设置中 input按钮样式会被默认样式覆盖的问题?
设置默认样式为none。解决方式如下。
input,
textarea {
border:0;
-webkit-appearance:none;
}
12、如何解决通过 transform进行skew变形、 rotate旋转会出现锯齿现象的问题?
通过以下代码设置样式。
-webkit-transform:rotate(-4deg) skew(10deg) translateZ(0);
transform:rotate(-4deg) skew(10deg) translateZ(0);
outline:lpx solid rgba(255, 255, 255, 0);
13、如何解决移动端 click事件有300ms延迟的问题?
300ms延迟导致用户体验不好。为了解决这个问题,一般在移动端用 touchstart、 touchend、 touchmove、tap(模拟的事件)事件来取代 click事件。
14、在iOS中,以中文输入法输入英文时,如何解决字母之间可能会出现六分之一空格的问题?
可以用正则表达式去掉空格。
this .value =this .value .replace ( / \u2006/g,' ')
15、如何解决移动端HTML5音频标签audio的 autoplay属性失效问题?
因为自动播放网页中的音频或视频会给用户带来一些困扰或者不必要的流量消耗,所以苹果系统和 Android系统通常都会禁止自动播放和使用 JavaScript的触发播放,必须由用户来触发才可以播放。
解决这个问题的代码如下。
document addEventListener (' touchstart', function( ) {
//播放音频
document .getElementsByTagName ('audio ) [0]. play ( );
//暂停音频
document getElementsByTagName ('audio) [0]. pause ( );
});
16、如何解决移动端HTML5中date类型的input标签不支持 placeholder属性的问题?
代码如下。
< input placeholder = "请输入日期 " type="text" onfocus="(this .type='date')" name="date">
17、如何通过HTML5调用 Android或iOS的拨号功能?
HTML5提供了自动调用拨号的标签,只要在a标签的href中添加tel:协议就可以了。
拨打固定电话的代码如下。
< a href="te1:021-12345678">单击拨打021-12345678</a>
拨打手机号码的代码如下。
< a href="te1:12345678901">单击拨打12345678901</a>
18、如何解决上下拖动滚动条时的卡顿问题?
通过以下代码设置样式。
body {
-webkit-overflow-scrolling:touch;
overflow-scrolling:touch;
Android3+和iOS5+支持CSS3的新属性 overflow- scrolling,该属性也可以解决上述问题。
19、如何禁止复制或选中文本?
通过以下代码设置样式。
Element {
-webkit-user-select:none;
-moz-user-select:none ;
-khtml-user-select:none ;
user-select:none;
20、如何解决 Android手机的默认浏览器不支持 websocket的问题?
解决办法就是把通信层的websocket改成websocket+http双协议,对外封装成Net。业务层对 websocket的调用都改成对Net的调用。
Net默认连接websocket,如果不攴持,就自动切换到http长轮询。
http的长轮询在使用的时候会有卡顿现象。
21、说说你所知道的移动端响应式适配的方法。
对于简单一点的页面,一般高度直接设置成固定值,宽度一般撑满整个屏幕。
对于稍复杂一些的页面,利用百分比设置元素的大小来进行适配,或者利用flex等CSS属性设置一些需要定制的宽度。
对于再复杂一些的响应式页面,需要利用CSS3的媒体查询属性来进行适配,大致思路是根据屏幕的大小,设置相应的CSS。
【前端面试题】—21道有关移动端的面试题相关推荐
- 【前端面试题】21道有关移动端的面试题(附答案)
[前端面试题]21道有关移动端的面试题(附答案) 前端发展到今天,移动端的流量已经超越了PC端.比如对绝大部分人来说,每天使用手机上网的时间要远高于使用笔记本电脑.计算机的上网时间.因此移动端变得越来 ...
- 【前端面试题】—21道有关移动端的面试题(附答案)
前端发展到今天,移动端的流量已经超越了PC端.比如对绝大部分人来说,每天使用手机上网的时间要远高于使用笔记本电脑.计算机的上网时间.因此移动端变得越来越重要.每个人的手机屏幕大小不同.系统不同,因此移 ...
- 你要知道的21道软件设计 + 面向对象的面试题
不管大家参加任何的编程面试,都逃不过关于系统设计和软件设计的问题.如果你想做的更好,你可以试试准备这个话题.以前我分享过我的一个关于编程面试问题的清单,也分享了一些关于系统设计的问题,但好多人比较感兴 ...
- 华为计算机c面试题,几道华为经典C语言面试题
<几道华为经典C语言面试题>由会员分享,可在线阅读,更多相关<几道华为经典C语言面试题(6页珍藏版)>请在人人文库网上搜索. 1.1.找错void test1()char st ...
- 【前端面试题】10—21道关于性能优化的面试题
随着前端项目不断扩大,浏览器渲染的压力变得越来越重.配置好一点的计算机可以顺利地展现页面:配置低一些的计算机渲染页面的性能就不那么可观了. 性能优化部分的面试题主要考察应试者对网站性能优化的了解.如何 ...
- 21道关于性能优化的面试题(附答案)
别走开!文末送书! 点击上方"前端壹栈",选择"设为星标" 第一时间关注技术干货! 随着前端项目不断扩大,浏览器渲染的压力变得越来越重.配置好一点的计算机可以顺 ...
- 【前端面试题】—53道常见NodeJS基础面试题(附答案)
说到前端就不得不提到后端,我们给用户展示页面所需的数据正是从后端获取的,所以了解后端的运行原理和技术的实现很有必要. Node. js是一个不错的选择,它是基于JavaScript语法的一套服务器端( ...
- 2023高薪前端面试题(一、前端基础——HTTP/HTML/浏览器)
说一下http和https? http:超文本传输协议,是一个基于请求与响应.无状态的应用层协议,以明文方式发送信息,最初设计目的是提供一种发布和接收 HTML 页面的方法. https:是http的 ...
- 一年半经验的前端面经总结
点击关注下方卡片关注我???????? 回复"面试"查阅 面试精选文章 面试之前 先说好,问题的答案都不是唯一的,大部分只提供题目哈,后面有答案会慢慢补上!当时回答的都不是特别完全 ...
最新文章
- java右移位_java、、移位操作方法
- Cookies揭秘 [Asp.Net, Javascript]
- hdu 4714 树+DFS
- python编程入门单例_Python单例模式实例详解
- 由于找不到appvisvsubsystems32.dll_终于熬到孩子上幼儿园,宝妈却找不到工作了,背后原因让人心酸...
- python网站设计中接口的作用_python接口自动化(三)--如何设计接口测试用例(详解)...
- php访问数据库例子,PHP访问MSSQL数据库(实例代码)
- (项目笔记)opencv人脸识别
- Python给gif图片加文字水印
- 同步助手java_八大平台全覆盖 QQ同步助手Java版发布
- MAC hosts 文件修改流程
- 英国正在大举进军AI,看懂其三大投资走向
- 计算机启用远程桌面连接失败,解决办法:如何处理win10远程桌面连接失败?
- 超星网站服务器,云服务器 超星
- 【云和恩墨大讲堂】黄宸宁 - 一次特殊的 ORA-04030 故障处理
- C# F23.StringSimilarity库 字符串重复度、文本相似度、防抄袭
- ppt编辑器android,ppt编辑器
- 怎样隐藏计算机中的文件夹,电脑上的文件夹不想被别人看到怎么办?如何隐藏电脑文件夹?-电脑文件夹怎么加密...
- https://docs.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2022 安装 Visual
- macbook A1181 小白 换键盘记