移动端开发调试技巧:解决input placeholder和line-height兼容性问题

2025-01-22
来源:网络整理

关联:

我参与过许多移动项目。在开发和调试过程中,一个好的调试工具会大大提高效率。博主之前已经推荐过一款神器:

接下来我们总结一下移动端遇到的坑。

1. 问题

在模拟移动端【左图】调试时,显示很正常,但是在真实设备【右图】上,里面的内容明显偏高,非常不美观。

在国外网站上,该属性的兼容性是不设计line-或设置line-。

我试了一下,虽然在模拟调试中稍微向上,但在“真机”上垂直居中~

2.线-

line-常用于文字居中,不同手机显示效果有所不同。什么鬼啊~

它在模拟器上完美显示,但是!和IOS又‘抵消’了。如果在行-上添加 1px,文本将稍微“正常”地显示。由于我们应用程序的大多数 iOS 用户拥有太多型号,不同型号的显示会有所不同,因此我们只能退而求其次。 line-的兼容性问题不好解决。容器的高度越小,显示效果的差异越明显。

解决方案:稍微大一点的高度,最好设置line-为高度+1px,这样在两个平台上的显示都不会太“奇怪”。

3.使用rem(兼容:ie9+)

原理:浏览器默认字体高度为16px,未调整的浏览器显示1em=16px。

rem只是相对于根元素的font-size,即只需要设置根元素的font-size,其他元素可以使用rem单位设置为相应的百分比;

一般用途:

将html的font-size设置为62.5%

html{

字体大小:62.5%;

身体{

字体大小:12px;

字体大小:1.2rem;

p{

字体大小:14px;

字体大小:1.4rem;

4. 实现原生控件的自定义样式

因为移动端原生的样式比较丑,所以原生的弹窗样式才符合我们的设计原则。

解决办法:将原图设置为透明,设置z-high,然后用更好看的样式在表面‘假装’

5.在移动端使用绘图

绘制一大段之后,您想要获取 HTML 的 ID 节点。事实上,你无法得到它。这个问题在动态创建DOM的时候经常会出现。

这也是工件的问题。博主自己写了一个手机轮播插件。在网上浏览很正常,但是在真机上使用时却显示空白。各种百度,终于发现了这么个坑……

解决方案:尝试了很多方法之后,我老老实实直接在页面上使用了HTML结构。如果有更好的方法请告诉我。

6. 延迟

选项 1:禁用缩放

当 HTML 文档标头包含以下元标记时:

缺点——需要完全禁用缩放才能达到消除点击延迟的目的。然而,完全禁用缩放并不是我们的初衷。我们只是想禁用默认的双击缩放行为,这样我们就不必等待确定当前操作是否是双击。

选项 2:更改默认视口宽度

如果设置了上述meta标签,浏览器就可以假设网站已经针对移动设备进行了适配和优化,无需双击缩放操作。

该方案相对于方案一的优点在于,它并没有完全禁用缩放,而只是禁用了浏览器默认的双击缩放行为,但用户仍然可以通过捏合缩放操作来缩放页面。

兼容性问题:

对于选项1和选项2,它是第一个支持的,紧随其后。不过麻烦的是,它除了双击缩放之外,还有双击滚动操作。如果采用这两个选项,双击滚动也将被禁用。 。

7.点击穿透

常见问题场景:假设页面上有两个元素A和B。 B 元素位于 A 元素之上。我们在 B 元素的事件上注册了一个回调函数。回调函数的作用是隐藏B元素。我们发现,当我们点击B元素时,B元素被隐藏了,然后A元素触发了事件。

这是因为在移动浏览器中,事件执行的顺序是>>。

活动有延迟。当事件隐藏B元素时,浏览器触发事件​​,但此时B元素消失,因此事件被分派到A元素。

如果A元素是链接,此时页面会意外跳转。

解决方案:

1.不要混合和

2.食用后

解决方案:

1. 只需将页面中的所有内容替换为事件( 、 ''、 'tap')。注意:a标签的href也需要替换为js跳转。

2. 最小的改变 - 稍后隐藏 B 元素

8. 虚拟键盘导致元素错位

元素肯定会与虚拟键盘一起出现,但虚拟键盘只是“附加”到它上面。表面上看,它不会对 DOM 产生“任何”影响,但此时,元素行为变得怪异且错位。

解决原理:虚拟键盘弹出时设置该元素,虚拟键盘消失时设置回来。

解决方案:由于出现了虚拟键盘并且没有抛出事件,所以检测或者事件会有一定的延迟,并且会出现闪烁。如果当前焦点元素是文本元素,则将该元素设置为 。

9. 移动手势

手指在屏幕上: 手指在屏幕上滑动: 手指离开屏幕:

原则:

1. 事件触发时,记录手指按下的时间以及本次滑动的初始位置。

2、事件触发时,记录当前位置(实时移动元素)、滑动距离(当前位置与初始位置的差值),判断正负数,然后决定向左还是向右移动。

3. 事件触发时,记录手指离开屏幕的时间,获取手指在屏幕上停留的时间(-),以及滑动的距离。

判断是否滑动:

如果停留时间小于10秒,则认为是快速滑动,无论滑动多远,都会转到下一页。

滑动距离与“容器”的大小进行比较。如果超过“容器”大小的 1/3,请转至下一页。

10.动态生成html元素失败

这也是一个神奇的坑。查了很久资料,也没有很合理的解释。

解决方案:给绑定元素添加css样式:;

专栏作者简介()

陈申丹:热爱前端,欢迎交流

提示支持作者写出更多好文章,谢谢!

- - - - - - - - - 推荐 - - - - - - - - -

饭品社推出了十几款极客T恤,主题涉及程序员、电影、美剧、物理等。单件59.9元,两件立减12元,四件立减28元。详情请参阅网上商店的产品页面。

网店地址:

淘宝密码:复制以下红色内容,然后打开淘宝购买

饭品社,先用¥极客T恤¥预览(长按复制整篇文案,手机打开淘宝进入活动内容)

分享