前端开发中,常见的bug解决方案(一)

bug虐我千百遍,我待bug如初恋;

今天整理了一下前端常用的代码片段,相信你肯定能需要的到~

前端开发中,常见的bug解决方案(一)_第1张图片
下雨啦,你带伞了没?.jpg

一、关于移动端1px问题

前端这个活,真的是被产品虐到脑海中每天都有上千只小动物飘过,然而不让你省心的还有UI,总是跑过来告诉你,“你这和我设计图不一样呀?我这是1px,你这设备上显示的是2px”,然而,你能怎么办,改吧,笔者给你整理几种解决办法,让你扬眉吐气。

先说原因

写过移动端的小伙伴都知道,在页面的开头,我们都会加一个viewport,然而viewport的设置和屏幕物理分辨率是按比例而不是相同的. 移动端window对象有个devicePixelRatio属性, 它表示设备物理像素和css像素的比例, 在retina屏的iphone手机上, 这个值为2或3, css里写的1px长度映射到物理像素上就有2px或3px那么长,所以1px看上去就变宽了。

解决办法有很多,但是我这里介绍两个最方便且常用的

第一种,flexible.js(后续不断更新其他方法)

引入flexible.js 加上rem布局,那可是对于移动端开发方便了不少,根据不同的设备是可以达到前端开发对页面的要求的,所以引入这个js,在处理1px问题的时候,只需要正常书写1px就可以了,而且你 不需要再添加等等,因为这个js都帮你动态的添加好了,是不是很方便,来来来,举个栗子




    
    
    
    


    

效果


01.jpg

二、关于文本的溢出隐藏

这个是前端使用频率极高的一段代码,可选择自行收藏,记得给标签设置宽度哦~

单行文本溢出显示省略号




    
    
    


    
哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,

效果


02.jpg

多行文本溢出显示省略号




    
    
    


    
哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,哈哈,就是这样啦,

效果

03.jpg

三,关于使用overflow:hidden,在ios下卡顿的问题解决

这个问题可是找到解决办法的我眼泪掉下来,尝试了n中方法,什么用swipter之类的,但是最后效果都不好,结果最终的解决办法就是一行代码

在css 属性上添加 -webkit-overflow-scrolling: touch;

效果我就不演示了,肯定超过你的预期。小伙伴可以在ios中前端开发时但用无妨。

四,判断用户设备

h5前端开发的时候,经常需要安卓和ios各种适配,经常书写的一段代码就是要判断用户设备,从而在不同的设备上执行不同的代码。so,还是记下无妨

        var u = navigator.userAgent.toLowerCase();;
        if (u.indexOf('android') > -1 || u.indexOf('linux') > -1) { 
              //安卓手机
        } else if (u.indexOf('iphone') > -1) {
             //苹果手机
        } else if (u.indexOf('windows phone') > -1) {
             //winphone手机
        }

五,判断页面的打开环境,同时区别站内站外

开发的时候,有时候需要区别是在用户是在app里打开的,还是在手机浏览器里打开的,从而判断用户是能直接进行更深入的操作还是直接点击按钮进入app下载页

                var browser = {
                  versions: function () {
                    var u = navigator.userAgent, app = navigator.appVersion;
                    return {   //移动终端浏览器版本信息
                      trident: u.indexOf('Trident') > -1, //IE内核
                      presto: u.indexOf('Presto') > -1, //opera内核
                      webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                      gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                      mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                      ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                      android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
                      iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
                      iPad: u.indexOf('iPad') > -1, //是否iPad
                      webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
                      };
                    }(),
                  language: (navigator.browserLanguage || navigator.language).toLowerCase()
                }

               //判断之后即可进行操作
                var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
                if (ua.match(/MicroMessenger/i) == "micromessenger") {
                  
                }
                if (ua.match(/WeiBo/i) == "weibo") {
                  
                }
                if (ua.match(/QQ/i) == "qq") {
                  
                }
                if (browser.versions.ios) {
                  
                }
                if(browser.versions.android){
                  
                }

六,ios下动态改动h5页面title

有时候,根据需要,我们经常需要动态的更改ios页面的title,所以经常是在接口中返回信息之后我们才知道页面的title是撒,但是此时dom已基本加载完毕,ios下更改title就费尽了,不过笔者亲测有效

                                document.title = "我是接口返回的页面title";
                                if (/ip(hone|od|ad)/i.test(navigator.userAgent)) {
                                    var i = document.createElement('iframe');
                                    i.style.display = 'none';
                                    i.onload = function() {
                                        setTimeout(function(){
                                            i.remove();
                                        }, 0)
                                    }
                                    document.body.appendChild(i);
                                }

七,好用的小效果

比如点击页面上的电话号码,可直接提示拨号;
比如点击页面上的短信,可直接提示发短信;
比如点击页面上的邮箱,可直接提示发邮件;

1、拨打电话
2、发送短信
3、发送邮件

本该出去浪,又加班一天,555~~

喜欢就点赞 ~ 关注我就和你一块打王者荣耀(别怕我坑)哈哈

你可能感兴趣的:(前端开发中,常见的bug解决方案(一))