学了点技术,我要开始装X了(一)

简介: 大家好,我是零一。今天不看技术文,而是带大家装x,就从我同事 獨釣寒江雪 的《前端装逼技巧 108 式》偷师几招吧~ 绝对让你过把瘾!

第一式:你见过页面跳舞吗?


还记得魔性的小苹果和抖音吗,作为前端的你,有想过让页面也 High 起来、舞动起来吗?


先看效果:


ceffd57ef2d0dddb9ba368d5aa3d38b8.jpg


页面舞动


下面这段代码可直接在控制台执行,略长。可直接跳到本小节末,使用简短 JS 引入的方式进行体验(带音乐效果哟


setTimeout(letDance, 1000);
var bgmSrc =
  'https://nd002723.github.io/carnival/audio/Martin%20Jensen%20-%20Fox%20(Loop%20Remix).mp3';
var cssHref = 'https://nd002723.github.io/carnival/css/high.css';
function letDance() {
  function loadCss() {
    //将css文件引入页面
    var myCss = document.createElement('link');
    myCss.setAttribute('type', 'text/css');
    myCss.setAttribute('rel', 'stylesheet');
    myCss.setAttribute('href', cssHref); //css文件地址
    myCss.setAttribute('class', l);
    document.body.appendChild(myCss);
  }
  function h() {
    var e = document.getElementsByClassName(l);
    for (var t = 0; t < e.length; t++) {
      document.body.removeChild(e[t]);
    }
  }
  function p() {
    var e = document.createElement('div');
    e.setAttribute('class', a);
    document.body.appendChild(e);
    setTimeout(function () {
      document.body.removeChild(e);
    }, 100);
  }
  function getSize(e) {
    //获取目标的宽高
    return {
      height: e.offsetHeight,
      width: e.offsetWidth,
    };
  }
  function checkSize(i) {
    //判断目标大小是否符合要求
    var s = getSize(i); //获取目标的宽高
    return (
      s.height > minHeight &&
      s.height < maxHeight &&
      s.width > minWidth &&
      s.width < maxWidth
    ); //判断目标是否符合条件
  }
  function m(e) {
    var t = e;
    var n = 0;
    while (!!t) {
      n += t.offsetTop;
      t = t.offsetParent;
    }
    return n;
  }
  function g() {
    var e = document.documentElement;
    if (!!window.innerWidth) {
      return window.innerHeight;
    } else if (e && !isNaN(e.clientHeight)) {
      return e.clientHeight;
    }
    return 0;
  }
  function y() {
    if (window.pageYOffset) {
      return window.pageYOffset;
    }
    return Math.max(
      document.documentElement.scrollTop,
      document.body.scrollTop
    );
  }
  function E(e) {
    var t = m(e);
    return t >= w && t <= b + w;
  }
  function setBgm() {
    //设置音乐
    var e = document.createElement('audio');
    e.setAttribute('class', l);
    e.src = bgmSrc; //bgm地址
    e.loop = false;
    e.addEventListener(
      'canplay',
      function () {
        setTimeout(function () {
          x(k);
        }, 500);
        setTimeout(function () {
          N();
          p();
          for (var e = 0; e < O.length; e++) {
            T(O[e]);
          }
        }, 15500);
      },
      true
    );
    e.addEventListener(
      'ended',
      function () {
        N();
        h();
      },
      true
    );
    e.innerHTML =
      ' <p>If you are reading this, it is because your browser does not support the audio element. We recommend that you get a new browser.</p> <p>';
    document.body.appendChild(e);
    e.play();
  }
  function x(e) {
    e.className += ' ' + s + ' ' + o;
  }
  function T(e) {
    e.className += ' ' + s + ' ' + u[Math.floor(Math.random() * u.length)];
  }
  function N() {
    var e = document.getElementsByClassName(s);
    var t = new RegExp('\\b' + s + '\\b');
    for (var n = 0; n < e.length; ) {
      e[n].className = e[n].className.replace(t, '');
    }
  }
  var minHeight = 3; //最小高度
  var minWidth = 3; //最小宽度
  var maxHeight = 800; //最大高度
  var maxWidth = 1400; //最大宽度
  var s = 'mw-harlem_shake_me';
  var o = 'im_first';
  var u = ['im_drunk', 'im_baked', 'im_trippin', 'im_blown'];
  var a = 'mw-strobe_light';
  var l = 'mw_added_css'; //最终要移除的css
  var b = g();
  var w = y();
  var C = document.getElementsByTagName('*');
  var k = null;
  for (var L = 0; L < C.length; L++) {
    var targetDiv = C[L];
    if (checkSize(targetDiv)) {
      if (E(targetDiv)) {
        k = targetDiv;
        break;
      }
    }
  }
  if (targetDiv === null) {
    //如果没找到合适大小的
    console.warn('没能找到合适的大小. 换一个页面试试?.');
    return;
  }
  loadCss(); //将自定义css文件引入页面
  setBgm(); //添加背景音乐
  var O = [];
  for (var L = 0; L < C.length; L++) {
    var targetDiv = C[L];
    if (checkSize(targetDiv)) {
      O.push(targetDiv);
    }
  }
  //网页整体倾斜效果(这块儿本来是JQuery实现的,为了避免引入JQuery,做了改动。)
  var style = document.createElement('style');
  style.type = 'text/css';
  try {
    style.appendChild(
      document.createTextNode(
        'body{overflow-x:hidden;transform: rotate(1deg);-webkit-transform: rotate(1deg);-moz-transform: rotate(1deg);-o-transform: rotate(1deg);-ms-transform: rotate(1deg)}'
      )
    );
  } catch (ex) {
    style.styleSheet.cssText = 'body{background-color:red}'; //针对IE
  }
  var head = document.getElementsByTagName('head')[0];
  head.appendChild(style);
}


或者更简洁一点,在页面 URL 栏或者控制台键入以下代码直接体验:


在浏览器地址栏黏贴以下内容的话,有三点需要注意,一是必须是已有内容的页面;二是如果是通过复制黏贴代码到浏览器地址栏的话,IE 及 Chrome会自动去掉代码开头的javascript:,所以需要手动添加起来才能正确执行,而 Firefox 中虽然不会自动去掉,但它根本就不支持在地址栏运行 JS 代码;三是引用的carnival.js会依赖JQuery(没有的话也没事,只是页面少了一个倾斜的效果)。


javascript: void (function () {
  var d = document,
    a = 'setAttribute',
    s = d.createElement('script');
  s[a]('tyle', 'text/javascript' "a");
  s[a]('src', 'https://nd002723.github.io/carnival/js/carnival.js' "a");
  d.head.appendChild(s);
})();


  • 一个能让你的网站 high 起来的 js[1]


第二式:一个可以拿来装逼的题库


作为程序员,需求无处不在,bug 无处不在,自然,装逼也可以无处不在。回想你的每一次面试,是否曾被面试官鄙视或者秀一脸?回想你和同事的每一次交流,是否曾被同事展示的古怪面试题或者奇技淫巧搞的无语难受 😓,想秀回去却苦于一时“脑中羞涩”,JavaScript Puzzlers![2]就是一个收录的各种表态 JavaScript 题目的网站,有了它,现在妈妈再也不怕我找不到可以装逼的代码/题目了。


我们不妨先看几道题目:


var min = Math.min(),
  max = Math.max();
min < max; // 答案: false
// 有趣的是, Math.min 不传参数返回 Infinity, Math.max 不传参数返回 -Infinity 😆
// 这个还是相对容易的
var name = 'World!';
(function () {
  if (typeof name === 'undefined') {
    var name = 'Jack';
    console.log('Goodbye ' + name);
  } else {
    console.log('Hello ' + name);
  }
})();
// 答案:Goodbye Jack
'1 2 3'.replace(/\d/g, parseInt); // 答案: 1, NaN, 3


不,我是一个前端工程师,工程师的事儿,能叫装逼么?也许它是没有太大用处的脑筋急转弯,但是这叫小技巧后面藏着的大智慧,哈哈~


话说回来,这些变态题目涉及的知识点很广,如果你能掌握这些题目背后的原理,也许就会对 JavaScript 的理解有一个不小的提升,下面将题目奉上,供诸君参阅:


目前由于未知原因,也许是去装逼答题的太多了吧 😄,JavaScript Puzzlers![3]网站已不可访问,所幸您还可以通过下面两个 GitHub 链接查看具体的题目及解析。


  • 44 个 Javascript 变态题解析 (上)[4]


  • 44 个 Javascript 变态题解析 (下)[5]


  • JavaScript Puzzlers![6]


第三式:浏览器地址栏,🐂🍺克拉斯


作为一名前端开发者,我们甚至每天与浏览器相伴的时间比女朋友/男朋友(如果有的话 😄)陪伴你的都要久,想想那每一个令人“不是那么期待”的早晨,每一个争分夺秒完成任务的黄昏,只有浏览器和编辑器一直是你忠实的伙伴,那么,你了解浏览器吗?了解那个每天都要输入http://localhost:3000/的地址栏吗?本节带你认识那些关于地址栏的好玩儿的细节。


浏览器地址栏运行 JavaScript 代码


对,你没看错,在“浏览器地址栏运行 JavaScript 代码”,做法是以javascript:开头后跟要执行的语句。需要注意的是如果是通过复制、黏贴代码到浏览器地址栏的话,IE 及 Chrome 会自动去掉代码开头的 javascript:,所以需要手动添加起来才能正确执行。并且,你需要在网站的地址栏运行javascript:,而不能在新打开的空标签页面上运行,那样也不会生效。


// 点击确定后,会接着弹出:孤舟蓑笠翁,独钓寒江雪,点击取消则不会弹出
javascript: if (confirm('千山鸟飞绝,万径人踪灭'))
  alert('孤舟蓑笠翁,独钓寒江雪');


df1fcd270f28d902f053df30fab4eded.jpg


浏览器地址栏运行 JavaScript 代码


浏览器地址栏运行 HTML 代码


如果说在“浏览器地址栏运行 JavaScript 代码”知道的人还算多的话,在“浏览器地址栏运行 HTML 代码”知道的人就要少一些了,在非 IE 内核的浏览器地址栏可以直接运行 HTML 代码!在地址栏输入以下代码然后回车运行,会出现下图所示的页面:


data:text/html,
<h1>Nothing is given, Everything is earned!</h1>


b450c54ff6b46edb08d679ad4a7c3d0c.png


浏览器可以是你的记事本


这个还是在浏览器地址栏上面做文章,将以下代码复制粘贴到浏览器地址栏,运行后浏览器就变成了一个简单原始的编辑器,话不多说,直接试试吧。


data:text/html,
<html contenteditable></html>


66445f47feb1bc1655b568acb162329e.jpg


另外,补充一个万能的浏览器撤销关闭页快捷键:MAC OS 下,command + shift + t;Windows:ctrl + shift + t。这个重新打开被关闭的页面的快捷键,可以一直按,会依次恢复被关闭的页面哟~,要不,看看小伙伴都干了些什么,看看会不会被打 😜


参考资料:这些鲜为人知的前端冷知识,你都 GET 了吗?


相关文章
|
3月前
1003 我要通过
1003 我要通过
26 0
|
3月前
|
人工智能 物联网 大数据
还记得当初自己为什么选择计算机?
还记得当初自己为什么选择计算机?
33 0
|
2天前
|
安全 Linux Windows
网工小白,一定要焊死在电脑上的6款工具!
网工小白,一定要焊死在电脑上的6款工具!
|
10月前
|
存储 缓存 数据安全/隐私保护
偶然间发现C盘爆红,几个办法超详细教你轻松解决,电脑小白也不用为此而烦恼!
今天无意间打开“我的电脑”发现作为驱动盘的**C盘爆红**!!!导致自己的血压飙升,在网上查了很多的处理办法之后,苦苦花费数小时之后自己顺利解决,以下方法教你轻松解决“C盘爆红”。**以下方法本人亲测,放心使用****清理和扩容C盘的方法还有很多,我觉得值得注意的是在平时安装软件的时候,要注意对安装路径的选择更改,而不是一股脑的点击“下一步”,这样你的C盘会减小很大的压力! 大家还有什么清理和扩容C盘的好办法呢?欢迎在评论区分享出来 ~ :)**
688 0
偶然间发现C盘爆红,几个办法超详细教你轻松解决,电脑小白也不用为此而烦恼!
|
3月前
|
移动开发 JavaScript C#
分享53戏源代码总有一个是你想要的(亲测每一个均可用)
分享53戏源代码总有一个是你想要的(亲测每一个均可用)
68 0
|
存储 编解码 数据处理
还在为搞不懂笔记本电脑参数而苦恼么?一篇文章就够啦
还在为搞不懂笔记本电脑参数而苦恼么?一篇文章就够啦
259 4
|
Windows
谈一谈|电脑(Windows系统)隐藏神技
谈一谈|电脑(Windows系统)隐藏神技
112 0
真香!端午节到来,我用Python画了几个粽子送给女票,女票差点吃了我的电脑...
真香!端午节到来,我用Python画了几个粽子送给女票,女票差点吃了我的电脑...
|
数据安全/隐私保护
小白也能重装系统?写给小白的一封信--重装纯净版Win10系统
小白也能重装系统?写给小白的一封信--重装纯净版Win10系统
283 0
|
测试技术 定位技术
1424:我要送人头
题目描述: 废话他呆了,打了那么久DOTA 2 ,没见过这样的局。队友手了炸弹人和小娜迦,这局是要拖到什么时候啊。因此,废话决定要不停地送人头,让对面赶紧结束这场令他煎熬的比赛。 废话现在有一个软件,可以让他的英雄按照输入的矩阵行走。已知DOTA 2的地图是一个正方形,他只要输入单位转置矩阵就可以无限送人头了。
74 0