来自 前端知识 2019-11-21 21:27 的文章
当前位置: 金沙澳门官网网址 > 前端知识 > 正文

前端不为人知的一面

至于console的调戏

至于重写原生方法,这里有个恶作剧大家能够拿去寻欢悦。Chrome的 console.log 是支撑对文字增多样式的,以至log图片都足以。于是能够重写掉暗中同意的log方法,把就要log的文字应用到CSS的混淆效果,那样当有人考虑调用console.log()的时候,出来的是模糊不清的文字。好冷,小编表示一向不笑。

是从这篇G+帖子的评论和介绍里看看的。使用今后的效果与利益是再度调用log会输出字迹模糊不清的文字。

JavaScript

var _log = console.log; console.log = function() { _log.call(console, '%c' + [].slice.call(arguments).join(' '), 'color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);'); };

1
2
3
4
var _log = console.log;
console.log = function() {
  _log.call(console, '%c' + [].slice.call(arguments).join(' '), 'color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);');
};

澳门金莎娱乐手机版 1

使用这意气风发原理,微微扩充一下,就获得了三个非常健康的解析UEvoqueL各部分的通用方法了。上边代码来自詹姆斯的博客。

有关作者:刘哇勇

澳门金莎娱乐手机版 2

放浪不急爱自由 个人主页 · 笔者的篇章 · 17 ·   

澳门金莎娱乐手机版 3

推而广之,将以下代码放到console试行后,整个页面将变得可编写制定,随便践踏吧~

实时编辑CSS

透过安装style标签的 display:block 样式能够让页面包车型客车style标签展现出来,况兼增长content艾德itable 属性后得以让体制作而成为可编写制定状态,修改后的体制效果也是实时更新呈现的。此本领在IE下无效。具有此技术者,逆天也!

<!DOCTYPE html> <html> <body> <style style="display:block" contentEditable> body { color: blue } </style> </body> </html>

1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
    <body>
        <style style="display:block" contentEditable>
         body { color: blue }
        </style>
    </body>
</html>

澳门金莎娱乐手机版 4

JavaScript中是绝非整型概念的,但运用好位操作符能够轻松管理,同有时间获得效用上的晋升。

采纳a标签自动深入剖析U奇骏L

重重时候大家有从一个ULX570L中领取域名,查询关键字,变量参数值等的急需,而绝对没悟出能够让浏览器方便地帮大家完毕这一任务而不用大家写正则去抓取。方法就在JS代码里先成立叁个a 标签然后将急需剖判的ULX570L赋值给 a 的 href 属性,然后就获取了全方位大家想要的了。

JavaScript

var a = document.createElement('a'); a.href = ''; console.log(a.host);

1
2
3
var a = document.createElement('a');
a.href = 'http://www.cnblogs.com/wayou/p/';
console.log(a.host);

澳门金莎娱乐手机版 5

运用这风流倜傥原理,微微扩充一下,就赢得了叁个更是健康的解析U宝马X3L各部分的通用方法了。下边代码来自James的博客。

JavaScript

function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, protocol: a.protocol.replace(':',''), host: a.hostname, port: a.port, query: a.search, params: (function(){ var ret = {}, seg = a.search.replace(/^?/,'').split('&'), len = seg.length, i = 0, s; for (;i<len;i++) { if (!seg[i]) { continue; } s = seg[i].split('='); ret[s[0]] = s[1]; } return ret; })(), file: (a.pathname.match(//([^/?#]+)$/i) || [,''])[1], hash: a.hash.replace('#',''), path: a.pathname.replace(/^([^/])/,'/$1'), relative: (a.href.match(/tps?://[^/]+(.+)/) || [,''])[1], segments: a.pathname.replace(/^//,'').split('/') }; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function parseURL(url) {
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(//([^/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^/])/,'/$1'),
        relative: (a.href.match(/tps?://[^/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^//,'').split('/')
    };
}

在一张HTML页面中,全数安装了ID属性的要素会在JavaScript的推行情形中创设对应的全局变量,那象征 document.getElementById 像人的阑尾相近显得多余了。但事实上项目中最棒规矩该怎么写就怎么写,毕竟常规代码出乱子的火候要小得多。

不证明第四个变量的值交流

大家都知道交流八个变量值的例行做法,那就是声称多个中等变量来暂存。但鲜有人去挑衅不注脚中间变量的气象,上面包车型大巴代码给出了这种完成。蛮有新意 的。

JavaScript

var a=1,b=2;a=[b,b=a][0];

1
var a=1,b=2;a=[b,b=a][0];

澳门金莎娱乐手机版 6

<script type="text" id="template">
<h1>This won't display</h1>
</script>

REFERENCE

  • What are the most interesting HTML/JS/DOM/CSS hacks that most web developers don’t know about?
  • 45 Useful JavaScript Tips, Tricks and Best Practices
  • 10 Small Things You May Not Know About Javascript

    6 赞 43 收藏 13 评论

明确命令禁绝别人以iframe加载你的页面

笔直居中

有好数十次博主皆有那样的供给,垂直居中展现某些DIV,我们领会CSS中自然有品位居中的样式 text-align:center 。唯独这几个垂直居中无解。

自然你能够将容器设置为 display:table ,然后将子成分也正是要笔直居中彰显的因素设置为 display:table-cell ,然后加上来兑现,但此种实现多次会因为 display:table 而损坏全体布局,那还不比直接用table标签了啊。

上边这一个样式利用了translate来都行完结了僵直居中样式,需IE9+。

CSS

.center-vertical { position: relative; top: 50%; transform: translateY(-50%); }

1
2
3
4
5
.center-vertical {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}

相比来讲,水平居中要轻便得多,像上边提到的text-align:center,日常利用的本事还恐怕有margin:0 auto 。但对于margin大法也只在子成分宽度小于容器宽度时管用,当子成分宽度超越容器宽度时此法失效。

照猫画虎,利用left和transform同样可达成程度居中,然而意义比很小,究竟text-align和margin大致满足须求了。

CSS

.center-horizontal { position: relative; left: 50%; transform: translateX(-50%); }

1
2
3
4
5
.center-horizontal {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
}

 

<div style="width: 100%; position: relative; padding-bottom: 20%;">
<div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;">
     this content will have a constant aspect ratio that varies based on the width.
</div>
</div>

If语句的变形

当你必要写八个if语句的时候,不妨尝试另生机勃勃种更方便人民群众的格局,用JavaScript中的逻辑操作符来代表。

JavaScript

var day=(new Date).getDay()===0; //传统if语句 if (day) { alert('Today is Sunday!'); }; //运用逻辑与代表if day&&alert('Today is Sunday!');

1
2
3
4
5
6
7
var day=(new Date).getDay()===0;
//传统if语句
if (day) {
alert('Today is Sunday!');
};
//运用逻辑与代替if
day&&alert('Today is Sunday!');

诸如上面的代码,首先得到先天的日子,如若是星期六,则弹窗,不然怎么也不做。我们驾驭逻辑操作存在隔阂的状态,对于逻辑与表达式,唯有双方都真才结果才为真,假诺前边的day变量被判别为假了,那么对于整个与表明式来讲结果正是假,所以就不会持续去奉行后边的 alert 了,若是前方day为真,则还要继续推行前边的代码来明确整个表明式的真假。利用这一点到达了if的作用。

对于金钱观的if语句,固然推行体代码超越了1 条语句,则必要加花括号,而接收逗号表达式,能够实践自便条代码而不用加花括号。

JavaScript

if(conditoin) alert(1),alert(2),console.log(3);

1
if(conditoin) alert(1),alert(2),console.log(3);

上边if语句中,假使条件创设则推行三个操作,但大家无需用花括号将那三句代码括起来。当然,那是不引入的,这里是冷知识堂上:)

if (window.location != window.parent.location) window.parent.location = window.location;

CSS中也能够做轻松运算

透过CSS中的calc方法能够扩充局地简约的演算,进而到达动态内定成分样式的目标。

CSS

.container{ background-position: calc(100% - 50px) calc(100% - 20px); }

1
2
3
.container{
background-position: calc(100% - 50px) calc(100% - 20px);
}

 

至于console的恶作剧

有关CSS的调戏

深信您看完以下代码后能够预料到会现身哪些效果与利益。

CSS

*{ cursor: none!important; }

1
2
3
*{
    cursor: none!important;
}

澳门金莎娱乐手机版 7

多种边框

变化随机字符串

利用 Math.random 和 toString 生成自由字符串,来自前黄金时代阵子看见的生机勃勃篇博文。这里的手艺是利用了 toString 方法能够接纳二个基数作为参数的原理,那些基数从2到36封顶。假使不点名,私下认可基数是10进制。略屌!

JavaScript

function generateRandomAlphaNum(len) { var rdmString = ""; for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdmString.substr(0, len); }

1
2
3
4
5
function generateRandomAlphaNum(len) {
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
}

澳门金莎娱乐手机版 8

万物皆对象

重写原生浏览器方法以完成新职能

下载的代码通过重写浏览器的 alert 让它能够记下弹窗的次数。

JavaScript

(function() { var oldAlert = window.alert, count = 0; window.alert = function(a) { count++; oldAlert(a + "n You've called alert " + count + " times now. Stop, it's evil!"); }; })(); alert("Hello World");

1
2
3
4
5
6
7
8
9
(function() {
    var oldAlert = window.alert,
        count = 0;
    window.alert = function(a) {
        count++;
        oldAlert(a + "n You've called alert " + count + " times now. Stop, it's evil!");
    };
})();
alert("Hello World");

 

实时编辑CSS

不许外人以iframe加载你的页面

下边包车型地铁代码已经不问可知了,没什么相当多说的。

JavaScript

if (window.location != window.parent.location) window.parent.location = window.location;

1
if (window.location != window.parent.location) window.parent.location = window.location;

通过安装style标签的 display:block 样式能够让页面包车型客车style标签展现出来,况兼增进 contentEditable 属性后能够让体制作而成为可编写制定状态,校订后的样式效果也是实时更新显示的。此本领在IE下无效。具有此技巧者,逆天也!

浏览器地址栏运维JavaScript代码

本条很三个人应有仍然驾驭的,在浏览器地址栏能够一向运维JavaScript代码,做法是以 javascript: 最前后相继跟要举办的语句。比方:

JavaScript

javascript:alert('hello from address bar :)');

1
javascript:alert('hello from address bar :)');

将上述代码贴到浏览器地址栏回车的前面alert不奇怪施行,三个弹窗神现。

内需潜心的是假设是通过copy paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开首的javascript:,所以供给手动增加起来本领准确推行,而Firefox中就算不会活动去掉,但它根本就不辅助在地方栏运营JS代码,sigh~

这一技术在自个儿的另一篇博文《让Chrome 接管邮件连接,收发邮件更有益了》中有选用到,利用在浏览器地址栏中实行JavaScript代码将Gmail设置为系统的邮件接管程序。

var day=(new Date).getDay()===0;
//传统if语句
if (day) {
alert('Today is Sunday!');
};
//运用逻辑与代表if
day&&alert('Today is Sunday!');

万物皆对象

在JavaScript的世界,万物皆对象。除了 null 和 undefined ,其余主题项目数字,字符串和布尔值皆有对应当包装对象。对象的三个表征是您能够在它身上从来调用方法。对于数字为主类型,当试图在其身上调用 toString 方法会退步,但用括号括起来后再调用就不会失利了,内部得以完结是用相应的包裹对象将基本类型转为对象。所以 (1).toString() 也就是 new Number(1).toString() 。由此,你真正能够把宗旨类型数字,字符串,布尔等当指标使用的,只是潜心语法要切合。

并且咱们注意到,JavaScript中数字是不分浮点和整形的,全数数字其实均是浮点类型,只是把小数点轻便了而以,比方你看见的1能够写成1.,那也等于为什么当您筹划1.toString()时会报错,所以准确的写法应该是那般:1..toString(),或然如上边所述加上括号,这里括号的效劳是改过JS解析器,不要把1后头的点当成小数点。内部落实如上边所述,是将1.用包装对象转成对象再调用方法。

CSS中也足以做轻巧运算

console.table

Chrome专门项目,IE绕道的 console 方法。能够将JavaScript关联数组以表格方式出口到浏览器 console ,效果很惊赞,界面很雅观。

JavaScript

//购买发卖景况 var data = [{'品名': '杜雷斯', '数量': 4}, {'品名': '冈本', '数量': 3}]; console.table(data);

1
2
3
//采购情况
var data = [{'品名': '杜雷斯', '数量': 4}, {'品名': '冈本', '数量': 3}];
console.table(data);

澳门金莎娱乐手机版 9

那点在以前风华正茂篇译文物博物客《jQuery编程最棒推行》中也会有关联。

CSS篇

有样学样,利用left和transform相符可完结程度居中,可是意义超级小,终究text-align和margin大约知足急需了。

大致的文字模糊效果

以下两行简单的CSS3代码可到达将文字模糊化处理的指标,出来的效果有一点点像使用PS的滤镜,so cool!

CSS

p { color: transparent; text-shadow: #111 0 0 5px; }

1
2
3
4
p {
    color: transparent;
    text-shadow: #111 0 0 5px;
}

澳门金莎娱乐手机版 10

var a = document.createElement('a');
a.href = '';
console.log(a.host);

页面具备ID的因素会创建全局变量

在一张HTML页面中,全数安装了ID属性的因素会在JavaScript的试行遇到中创制对应的全局变量,那意味着 document.getElementById 像人的阑尾同样显得多余了。但实际上项目中最棒规矩该怎么写就怎么写,究竟常规代码出乱子的机会要小得多。

<div id="sample"></div> <script type="text/javascript"> console.log(sample); </script>

1
2
3
4
<div id="sample"></div>
<script type="text/javascript">
        console.log(sample);
</script>

澳门金莎娱乐手机版 11

上边那几个样式利用了translate来都行达成了僵直居中样式,需IE9+。

JavaScript篇

关于CSS的揶揄

卡尺头的操作

JavaScript中是从未整型概念的,但运用好位操作符能够轻巧管理,同有时间拿到成效上的升官。

|0 和 ~~ 是很好的二个例证,使用这两侧能够将浮点转成整型且作用方面要比同类的 parseInt , Math.round  要快。在管理像素及动漫位移等作用的时候会很有用。质量相比较见此。

JavaScript

var foo = (12.4 / 4.13) | 0;//结果为3 var bar = 澳门金莎娱乐手机版 ,~~(12.4 / 4.13);//结果为3

1
2
var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3

附带说句, !! 将一个值方便高效转变为布尔值 !!window===true  。

加载CDN文件时,能够节约HTTP标志

HTML篇

<script src="//domain.com/path/to/script.js"></script>

浏览器地址栏运转HTML代码

若是说上边那条小秘密接头的人还算多的话,那条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏能够平昔运营HTML代码!

比如说在地点栏输入以下代码然后回车运转,会出现钦定的页面内容。

data:text/html,<h1>Hello, world!</h1>

1
data:text/html,<h1>Hello, world!</h1>

澳门金莎娱乐手机版 12

CSS篇

多种边框

选拔再度钦点box-shadow来完结三个边框的效劳

在线演示

CSS

/*CSS Border with Box-Shadow Example*/ div { box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2); height: 200px; margin: 50px auto; width: 400px }

1
2
3
4
5
6
7
/*CSS Border with Box-Shadow Example*/
div {
    box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2);
    height: 200px;
    margin: 50px auto;
    width: 400px
}

澳门金莎娱乐手机版 13

举个例子上边的代码,首先拿到前几日的日子,假使是星期天,则弹窗,不然怎么也不做。大家通晓逻辑操作存在鸿沟的情事,对于逻辑与表明式,唯有双方都真才结果才为真,假设前边的day变量被判别为假了,那么对于整个与表明式来讲结果就是假,所以就不会持续去实施后边的 alert 了,假诺前方day为真,则还要继续实施前边的代码来鲜明整个表明式的真真假假。利用这一点完结了if的效率。

你造么,能够把浏览器当编辑器

照旧浏览器地址栏上做文章,将以下代码贴到地址栏运维后浏览器产生了多个原始而轻松的编辑器,与Windows自带的notepad同样,吼吼。

data:text/html, <html contenteditable>

1
data:text/html, <html contenteditable>

澳门金莎娱乐手机版 14

到底多亏损HTML第55中学新加的 contenteditable 属性,当成分内定了该属性后,成分的剧情成为可编写制定状态。

强盛,将以下代码放到console推行后,整个页面将变得可编写制定,随便践踏吧~

JavaScript

document.body.contentEditable='true';

1
document.body.contentEditable='true';

澳门金莎娱乐手机版 15

var _log = console.log;
console.log = function() {
_log.call(console, '%c' + [].slice.call(arguments).join(' '), 'color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);');
};

应用script标签保存大肆消息

将script标签设置为 type='text' 然后能够在里头保存跋扈音讯,之后能够在JavaScript代码中很有益于地收获。

 

<script type="text" id="template"> <h1>This won't display</h1> </script>

1
2
3
<script type="text" id="template">
<h1>This won't display</h1>
</script>

JavaScript

var text = document.getElementById('template').innerHTML

1
var text = document.getElementById('template').innerHTML

Chrome专项,IE绕道的 console 方法。能够将JavaScript关联数组以表格格局出口到浏览器 console ,效果很惊赞,分界面很巧妙。

创制长度宽度比固定的成分

由此设置父级窗口的 padding-bottom 能够达到规定的标准让容器保持自然的长度比的指标,那在响应式页面设计中相比有用,能够保证成分不改变形。

<div style="width: 100%; position: relative; padding-bottom: 20%;"> <div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;background-color:yellow;"> this content will have a constant aspect ratio that varies based on the width. </div> </div>

1
2
3
4
5
<div style="width: 100%; position: relative; padding-bottom: 20%;">
    <div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;background-color:yellow;">
        this content will have a constant aspect ratio that varies based on the width.
    </div>
</div>

澳门金莎娱乐手机版 16

板寸的操作

前端无人问津的黄金年代派–前端冷知识汇总

2015/09/08 · CSS, HTML5, JavaScript · 13 评论 · 冷知识

正文小编: 伯乐在线 - 刘哇勇 。未经小编许可,制止转发!
应接参加伯乐在线 专栏撰稿者。

前者已经被嘲讽坏了!像console.log()可以向决定台出口图片等绚烂的东西已经不是什么样音信了,像用||操作符给变量赋暗许值也是人尽皆知的旧闻了,后天看到Quora上一个帖子,刹那间又GET了比超多前端技艺,一些归属手艺,一些则是奇形怪状的冷知识,不常间还消化吸取可是来。现分类整理出来分享给大家,也补充了有的日常的储存和扩大了生机勃勃部分内容。

前端已经被嗤笑坏了!像console.log()能够向调节台出口图片等炫丽的钱物已经不是怎么新闻了,像用||操作符给变量赋暗中同意值也是人尽皆知的旧闻了,前几日见到Quora上一个帖子,须臾间又GET了无数前端手艺,一些归属技巧,一些则是奇形异状的冷知识,一时间还消化吸收可是来。现分类收拾出来分享给大家,也补充了风度翩翩部分日常的储存和增添了一些内容。

加载CDN文件时,能够节约HTTP标记

今昔超级火的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全着想部分CDN服务器使用HTTPS格局连接,而众多守旧的HTTP,其实我们在动用时能够忽视掉这几个,将它从U逍客L中节约。

<script src="//domain.com/path/to/script.js"></script>

1
<script src="//domain.com/path/to/script.js"></script>

那一点在前头风流倜傥篇译文物博物客《jQuery编制程序最好执行》中也可能有关系。

<div id="sample"></div>
<script type="text/javascript">
console.log(sample);
</script>

在线演示:

有繁多次博主皆好似此的必要,垂直居中展现有些DIV,大家精通CSS中自然有等级次序居中的样式 text-align:center 。唯独这几个垂直居中无解。

console.table

以下两行轻松的CSS3代码可直达将文字模糊化管理的目标,出来的效果与利益有一些像使用PS的滤镜,so cool!

div {
box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2);
height: 200px;
margin: 50px auto;
width: 400px
}

可能浏览器地址栏上做小说,将以下代码贴到地址栏运维后浏览器形成了三个原始而简易的编辑器,与Windows自带的notepad同样,吼吼。

在JavaScript的社会风气,万物皆对象。除了 null 和 undefined ,别的基本项目数字,字符串和布尔值都有对应该包装对象。对象的多个风味是你能够在它身上一贯调用方法。对于数字为主类型,当试图在其随身调用 toString 方法会战败,但用括号括起来后再调用就不会倒闭了,内部落到实处是用相应的卷入对象将基本项目转为对象。所以 (1).toString() 相当于 new Number(1).toString() 。由此,你确实能够把基本项目数字,字符串,布尔等当对象使用的,只是专心语法要体面。

<!DOCTYPE html>
<html>
<body>
    <style style="display:block" contentEditable>
      body { color: blue }
    </style>
</body>
</html>

javascript:alert('hello from address bar :)');

经过设置父级窗口的 padding-bottom 能够直达让容器保持自然的长短比的目标,那在响应式页面设计中相比有用,能够维持元素不改变形。

if(conditoin) alert(1),alert(2),console.log(3);

.center-vertical {
position: relative;
top: 50%;
transform: translateY(-50%);
}

下载的代码通过重写浏览器的 alert 让它能够记下弹窗的次数。

(function() {
var oldAlert = window.alert,
      count = 0;
window.alert = function(a) {
     count++;
     oldAlert(a + "n You've called alert " + count + " times now. Stop, it's evil!");
};
})();
alert("Hello World");

data:text/html,<h1>Hello, world!</h1>

重写原生浏览器方法以实现新职能

页面具备ID的成分会创设全局变量

是从那篇G+帖子的批评里看见的。使用之后的机能是再一次调用log会输出字迹模糊不清的文字。

相比较而言,水平居中要简明得多,像上边提到的text-align:center,平日利用的本领还会有margin:0 auto 。但对此margin大法也只在子元素宽度小于容器宽度时管用,当子成分宽度超过容器宽度时此法失效。

本文由金沙澳门官网网址发布于前端知识,转载请注明出处:前端不为人知的一面

关键词: