xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

You Don't Know the Hack tech in the frontend development

You Don't Know the Hack tech in the frontend development

你所不知道的前端黑科技

css in js animation

https://www.ifchange.com/

live demo

js hover/over event

https://www.ifchange.com/about#done

onmouseover

https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseover_event

// 单行写一个评级组件
let rate = 1;
"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
// "★☆☆☆☆"

JavaScript 错误处理

// JavaScript Error & StackOverflow

const log = console.log;

try {
  // throw new Error(`ts`);// ts
  const err = {
    type: "ts",
    message: "ts error",
  };
  // throw new Error(err);
  throw new Error(JSON.stringify(err));
} catch (e) {
  log(e, typeof e, e.message)
  // Error: {"type":"ts","message":"ts error"}
  // "object" "{"type":"ts","message":"ts error"}"
  const obj = JSON.parse(e.message)
  log(obj)
  const {
    type,
    message,
  } = obj;
  window.parent.location.href = `https://stackoverflow.com/search?q=[${type}]+${message}`;
}

// JavaScript Error & StackOverflow

const log = console.log;

try {
  const err = {
    type: "ts",
    message: "ts error",
  };
  throw new Error(JSON.stringify(err));
} catch (e) {
 //  log(e, typeof e, e.message)
  const {
    type,
    message,
  } = JSON.parse(e.message);
  window.parent.location.href = `https://stackoverflow.com/search?q=[${type}]+${message}`;
}

CSS 黑科技

UI 结构检测,加 1px 边框

// UI 结构检测,加 1px 边框

[].forEach.call($$("*"), function(a){ 
   a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)
})

// OR
Array.prototype.forEach.call(document.querySelectorAll('*'),  dom => dom.style.outline = `1px solid #${parseInt(Math.random() * Math.pow(2,24)).toString(16)}`);

void 0 === undefined
// true

Array(6).fill(8)

//  (6) [8, 8, 8, 8, 8, 8]

// 金融数字格式化
// 1234567890 --> 1,234,567,890

// 正则实现

const test1 = '1234567890'
const format = test.replace(/\B(?=(\d{3})+(?!\d))/g, ',');

console.log(format);
// 1,234,567,890

// 非正则实现

 function formatCash(str) {
       return str.split('').reverse().reduce((prev, next, index) => {
            return ((index % 3) ? next : (next + ',')) + prev
       })
}

console.log(formatCash('1234567890'));
// 1,234,567,890

refs

https://juejin.im/entry/5998f8396fb9a0247c6ec9cd


©xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


posted @   xgqfrms  阅读(189)  评论(7编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-06-19 vuex & redux
2019-06-19 circle menus & solutions
2019-06-19 web & js & touch & gesture
2019-06-19 CSS3 & transition & animation
2018-06-19 Fetch & POST & CORS & cookie
2018-06-19 lighthouse & PWA & AMP All In One
点击右上角即可分享
微信分享提示