前端解决方案工具集



移动适配方案之 --postcss-px2rem + getRem多终端适配方案适配js


1、安装  npm install postcss-pxtorem -D

 // 蓝湖上设计稿自定义为375px 测量值直接写入即可 若设计稿为750px 则rootValue: 32

2、项目根目录postcss.config.js   

module.exports = {

    plugins: {

      "postcss-pxtorem": {

        rootValue: 16, //结果为:设计稿元素尺寸/16,比如元素宽320px,最终页面会换算成 20rem

        propList: ["*"], //是一个存储哪些将被转换的属性列表,这里设置为['*']全部,假设需要仅对边框进行设置,可以写['*', '!border*']

        unitPrecision: 5, //保留rem小数点多少位

        //selectorBlackList: ['.radius'],  //则是一个对css选择器进行过滤的数组,比如你设置为['fs'],那例如fs-xl类名,里面有关px的样式将不被转换,这里也支持正则写法。

        replace: true, //这个真不知到干嘛用的。有知道的告诉我一下

        mediaQuery: false, //媒体查询( @media screen 之类的)中不生效

        minPixelValue: 12, //px小于12的不会被转换

      },

    },

  };


3、新建一个rem.js的文件,在main.js中引用

(function(){

    window.onload = () =>{

        getRem(375,100)

    }

    window.onresize = () =>{

        getRem(375,100)

    }

    /**

     * 

       代表设计稿的宽度,375/750/1920

     * @param {*} desginWide 

       代表换算比例一般写100,100的话比较好换算,

       比如,你测量的一个宽度是100px,就可以写为1rem,以及1px=0.01rem

     * @param {*} pxRem 

     */

    const getRem = (desginWide,pxRem) =>{

        // 获取设备的宽度

        let clineWidth = document.body.clientWidth || document.documentElement.clientWidth;

        //获取html根元素

        let htmlDom = document.getElementsByName("html")[0];

        htmlDom.style.fontSize = clineWidth / desginWide * pxRem + 'px'

    }

})()



发送验证码封装


/**

 *

 * @param {*} e 要操作的dom

 * @param {*} callBack 处理发送验证码的逻辑

 * @param {*} num 几秒后可以重新获取

 * @param {*} delay 多少秒掉一次

 */

export const sendCode = (e, callBack, num = 10, delay = 1000) => {

    var target = e.target || e.srcElement;

    let timer = null;

    target.disabled = true;

    target.innerHTML = `${num}秒后可重新获取`;

    callBack();

    timer = setInterval(() => {

        num--;

        if(num > 0) {

            target.innerHTML = `${num}秒后可重新获取`;

        }else{

            clearInterval(timer);

            target.disabled = false;

            target.innerHTML = `点击发送验证码`;

            num = num;

        }

    }, delay)

}

使用方式:

import { sendCode } from './utils.js'

<button @click="sendCodeBtn($event)">发送验证码</button>

methods: {

    sendCodeBtn(e) {

      sendCode(e, () => {

        console.log('调用后台发送验证码的接口逻辑处理')

      }, 20)

    }

  }



防抖节流,前端常见面试题


解决场景:短信验证码倒计时、浏览器缩放、减少请求等

1、函数防抖

function debounce(callback,waite){

    let content = this;

    let args = [...arguments];

    let timeout;

    return function(){

        if(timeout) clearTimeout;

        timeout = setTimeout(() =>{

            callback.call(content,args);

        },waite)

    }

}

2、 函数节流,在一段时间内只执行一次函数,时间戳版本

function throlte(callback,delay){

    let pre = Date.now();

    return function(){

        let args = arguments;

        let content = this;

        let now = Date.now();

        if((now - pre) >= delay){

            callback.applay(content,args);

        }

        pre = Date.now();

    }

}



前端常见面试题


1、字符串反方向

/**

 * 倒序遍历实现

 * @param {*} str 

 * @returns 

 */

function reverseStr(str){

    let strs = "";

    for(let i = str.length -1;i >= 0;i--){

          strs += str[i];  

    }

    return strs

}

2、判断是否是回文

/**

 * 判断是否是回文

 * @param {*} str 

 * @returns 

 */

function isPalindrome2(str){

    return str === str.split().reverse().join();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容