移动开发时遇到的一些小问题总结
1、弹出模态框,底部内容禁止滑动。
一开始想到的就是点击按钮,模态框出现时,给body内容加上overflow:hidden,在谷歌模拟器上这样是没有问题的,但是真机测试中不行,需要在当前模态框中加入
1 | $('模态框').on('touchmove', function(e) { |
这个问题在移动开发中经常遇到,网上也有很多解决方法,但是今天终于找到便捷的解决方法了!
2、可输入的div
应用场景:在表单页面,需要输入文字很多的文本框,input不能换行,textarea虽然可以,但是它的高度不能随文本增加而增高(当然js可以实现),但是可以css实现的就不需要js了
处理方法:给div增加 contenteditable=”true” 属性,但无法去除从网页粘贴过来内容的格式,用contenteditable=”plaintext-only”,既可以只粘贴文字了,需要注意的是,在ios中,需要给当前元素加-webkit-user-select:text;属性,否则,会弹出软键盘,但是输入不了文字。
1 | <!DOCTYPE html> |
3、 打电话,发短信
1 | <a href="tel:0755-10086">打电话给:0755-10086</a> |
4、rem px 移动端适配问题
移动端字体单位font-size选择px还是rem
对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可
对于需要适配各种移动设备,使用rem,例如只需要适配iPhone和iPad等分辨率差别比较大的设备
1 | -width: 321px) { screen and (max |
5、移动端 1px border 实现
部分安卓机器(比如小米)的分辨率低,如果border的宽度小于1px。安卓机出现一种边框消失了的现象。样式上有点奇怪,IOS没有这个问题。
由于设备高分辨率屏的原因,逻辑像素的 1px 的 border 在移动设备上会用两个或三个物理像素来表示,所以看起来会感觉很粗。解决方案有很多,但兼容性最好的方案是用伪元素的 box-shadow 或 border 实现 border,然后用 transform: scale(.5) 缩小到原来的一半
6、键盘
1 | <input type="number" pattern="[0-9]*" /> |
注意:只有number或者tel还是不够,只有加入正则,ios才会出现九宫格
7、flex布局
1 | display: flex; |
注: 如果用flx布局必须要加后面两行,不加的话,ios版本为8的苹果机子页面会错乱(很严重!!!)
8、添加meta,使得网页在手机端能正常浏览
1 | <!-- 设置缩放 --> |
9、使用rem时js动态计算自动生成meta标签,这里是一段阿里高清方案,使用时需要放到文档头部,此时就不用再写meta标签了
1 | !(function(e) { |