- 运行javascript小技巧
// 1.直接在浏览器的地址栏中输入一下代码:
javascript:alert('hello world')
// 2.注意事项
ie和chrom回自动去掉开头的 【javascript:】需要手动添加
火狐浏览器不支持这个技巧
// 3.场景
快速测试一段js代码
- 运行HTML代码的神奇技巧
// 1.直接在浏览器中运行
data:text/html,<h1>Hello,world</h1>
// 2.玩转HTML代码
可以尝试输入更复杂的代码,样式、脚本
// 3.兼容性和注意事项
不是所有的浏览器都支持
// 4.使用场景
没有专门的编辑器,想快速验证一段HTML代码的效果
- 将浏览器地址栏的秘密功能:将浏览器变身原始编辑器
// 1.怎么做
data:text/html,<html contenteditable>
// 2.功能
不仅仅只限于文字,可以写HTML,CSS,JS
// 注意事项
适合快速编辑和测试
- 一行代码使整个页面成为你的编辑器
// 1.鼠标右键或者f12打开编辑器 在控制台输入
document.body.contentEditable="true"
// 2.创造和探索
不仅仅可以让页面可编辑
可以轻松的修改页面内容,实时查看效果
// 3.注意事项
编辑页面的时候,要确保保存了重要的更改
// 4.场景
快速编辑页面、演示效果、临时调整
- .利用a标签轻松解析URL,轻松提取所需信息
// 1.怎么做
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href=""></a>
</body>
<script>
var a = document.createElement('a')
a.href = "http://www.baidu.com"
console.log(a.host)
console.log(a.pathname)// 获取路径
console.log(a.search)// 获取查询字符串
</script>
</html>
// 2.场景
获取当前页面的域名
解析一个包含参数的url
// 3.注意事项
兼容性
- HTML元素ID与全局变量:JavaScript中的巧妙链接
// 1.怎么用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="box"></div>
</body>
<script>
console.log(box)
</script>
</html>
// 2.注意事项
id属性就是创建全局变量 可能导致命名冲突 谨慎使用id确保代码的可读性和可维护性
// 3. 常规做法
document.getElementById
// 4.场景
在小型项目或者个人实验
- 优雅而安全:CDN文件加载时省略HTTP标识
// 1.怎么做
<script src="https://baidu.com/path/to/jq.js"></script>
通过省略协议标识,加载文件,这样会让浏览器自动去匹配对应的协议 提升安全性
<script src="//baidu.com/path/to/jq.js"></script>
// 2.注意事项
实际使用时注意CDN服务器是否支持这两种协议
// 3.应用
JQ , Bootstap..这些常用库
- script标签的隐秘功能:利用type=‘text’ 存储任意信息
// 1.怎么用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body></body>
<script type="text" id="box">
<h1>122456</h1>
789
<p>我们的祖国是花园花园的花朵真鲜艳</p>
</script>
<script>
var text = document.getElementById('box').innerHTML
console.log(text)
</script>
</html>
// 2.场景
在页面中存入一些配置信息、模板内容
// 3.注意事项
注意不要存储敏感信息
- 隐藏鼠标光标,开启无形模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
* {
cursor: none !important;
}
</style>
<body></body>
</html>
- 用两行代码打造文字模糊效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
p {
color: transparent;
text-shadow: #111 0 0 5px;
}
</style>
<body>
<div>关关雎鸠,在河之洲</div>
<div>窈窕淑女,君子好逑</div>
<div>参差荇菜,左右流之</div>
<div>窈窕淑女,寤寐求之。</div>
<p>求之不得, 寤寐思服</p>
<div>悠哉悠哉,辗转反侧</div>
<div>参差荇菜, 左右采之。</div>
<div>窈窕淑女, 琴瑟友之</div>
</body>
</html>
- CSS3打造多重边框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
div {
width: 400px;
height: 200px;
margin: 50px auto;
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)
}
</style>
<body>
<div></div>
</body>
</html>
- CSS实时编辑:逆天技巧让样式在眼前变换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<style contentEditable style="display: block;height: 100px;overflow: auto;">
div {
width: 100px;
height: 100px;
}
</style>
<div>(。・∀・)ノ゙嗨</div>
</body>
</html>
// 1. 显示编辑区域
把style标签的contentEditable属性设置位可编辑,可以让变迁样式成为一个实时编辑区域
// 2.实时调试效果
- CSS运算:calc方法让样式动起来
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
div {
width: calc(200px - 50px);
height: calc(200px - 50px);
border: 1px solid;
}
</style>
<body>
<div>(。・∀・)ノ゙嗨</div>
</body>
</html>
// 1.calc 方法
简单的数学运算
// 2.动态指定
// 3.适用性和响应式
// 4.兼容考虑
适度的选用calc方法
// 5.注意
calc方法 运算符 两端需要空格 没有空格不生效
- 用Math.random和toString打造随机字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.div-style {
width: calc(200px - 50px);
height: calc(200px - 50px);
border: 1px solid;
}
</style>
<body>
<div class="div-style">
(。・∀・)ノ゙嗨
<div id="math"></div>
</div>
</body>
<script>
// 1.Math.random的随机性
// 2.toString方法的妙用(36 代表转换成36进制的字符串)
// 3.循环拼接字符串 利用substr()截取字符串
// 4.返回指定长度的随机字符串
function getStrNum(len) {
var rdmStr = '';
for (; rdmStr.length < len; rdmStr += Math.random().toString(36).substr(2));
return rdmStr.substr(0, len)
}
var div = document.getElementById('math')
div.innerHTML = getStrNum(15)
</script>
</html>
- 高效处理整数,妙用 | 0和 ~~!
// 1.位操作符还是双取反 都会巧妙的把浮点数转换成整数
// 2.高效性能 在处理像素和动画位移 提高运算效率
// 3.对比性 它们都能快速的把结果转成整数,比传统的方法更为高效(传统的方法:parseInt,math.random 等等)
// 4.轻松转换 在需要浮点转成整数的情况下 我们使用位操作符更快更有效率
// 5.在前端开发中 特别时在性能要求较高的一些场景,合理运用这些操作符,能够使代码更为精炼,并且运行更为迅速
var a = (12.4 / 4.13) | 0
var b = ~~(12.4 / 4.13)
console.log(a, b) // 3 3
- 突破枷锁,快速转换布尔值的巧妙方法
// 快速判断真假
// 简洁高效
// 对象存在性检测
var win = !!0
console.log(win)// false
- 通过重写浏览器方法揭秘弹窗次数的奇妙秘密
(function () {
var oldAlert = window.alert, count = 0;
window.alert = function (a) {
count++;
oldAlert(a + '\n 弹出次数:' + count + '快停下')
}
})()
alert('hello word 0')
alert('hello word 1')
alert('hello word 2')
alert('hello word 3')
- console.log搞笑恶作剧
// 1.重写console.log方法
var _log = console.log;
console.log = function () {
_log.call(console, '%c' + [].slice.call(arguments).join(' '), 'color:transparent;text-shadow:0 0 9px rgba(0,0,0,.5);')
}
console.log('123456哈哈哈哈哈')
- JavaScript变量值的不寻常交换方式:巧用数据解构
// 1.数据结构
var a = 1, b = 2;
a = [b, b = a][0]
console.log(a, b)// a=2 b=1
- 禁止iframe加载页面
// 防范iframe加载
// 这行代码就是当前页面是否是作为iframe的子页面加载的 如果是 那就通过父页面的location设置位当前页面的location
// 迫使整个页面跳转到当前页面从而达到放在在iframe当中加载的目的
// 安全性增强 可以有效的减少不必要的嵌套风险 给网站带来更安全的一个性能 代码简洁高效 易于理解和维护
if (window.location != window.parent.location) window.parent.location = window.location
- console.table
var table = [
{
name: 'zs', age: '18'
},
{
name: 'ls', age: '16'
},
]
console.table(table)
22. HTML中被忽略的宝藏 -<datalist>元素</title>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input list="animalslist" name="animal" id="animal">
<datalist id="animalslist">
<option value="cat"></option>
<option value="dog"></option>
<option value="cow"></option>
<option value="pig"></option>
</datalist>
</body>
<script>
</script>
</html>
23. lable元素与复选框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
<input type="checkbox" name="" checkbox id="checkbox_id" value="value" />
<label for="checkbox_id">我同意</label>
-->
<label>
<input type="checkbox" name="" checkbox id="checkbox_id" value="value" />
我同意
</label>
</body>
</html>
24.Writing Mode
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.box1 {
width: 200px;
}
.box2 {
writing-mode: vertical-lr;
}
</style>
<body>
<div class="box1">日照香炉生紫烟</div>
<div class="box2">日照香炉生紫烟</div>
</body>
</html>
- JavaScript的In操作符
// 通过 in 轻松检查是否存在索引
// in 操作符提供了一种简洁的方式来检查数组中特定索引是否存在,避免了繁琐的遍历操作
// 一行代码就完成了索引的检查,减少了冗余代码
let cars = ['audi', 'bmw', 'mini', 'bentley', 'porsche']
console.log(0 in cars)// true
console.log(3 in cars)// true
console.log(6 in cars)// false
console.log(9 in cars)// false
- 巧用逗号,JavaScript中的if语句省略大括号
// 利用逗号省略大括号,代码看起来更为简洁,适用于短小的if语句 在某些情况下,避免了输入大括号的冗余,提高了代码的整体可读性
<script>
if (1 === 1)
alert('alert 1'), alert('alert 2')
if (abc)
alert('alert 1'), alert('alert 2')
else
alert('no')
</script>
- inset属性的妙用 简洁明了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.box1 {
width: 50px;
height: 50px;
border: 1px solid;
position: relative;
}
.box2 {
position: absolute;
width: 20px;
height: 20px;
border: 1px solid red;
inset: 5px 0 0 10px;
}
</style>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
<script>
</script>
</html>
- 不借助CSS和JavaScript,元素本地消失
// 无需额外代码,使用hidden属性,就可以轻松实现
<div hidden>
鹅鹅鹅
</div>
- 将我JavaScript黑科技:轻松检测你的网络带宽
<body>
网络带宽
指在一定时间内通过互联网链接传输的数据量
通常以兆位每秒位单位Mbps
</body>
<script>
var banWidth = navigator.connection.downlink
console.log('带宽位:' + banWidth + ' Mpbs')
</script>
- 护航隐私
// 1.阻止F12快捷键
window.onkeydown = function (e) {
if (e.keyCode = 123) {
return false
}
}
// 2.禁用右键菜单
document.addEventListener('contextmenu', function (e) {
e.preventDefault()
})
- JavaScript中的无穷奇迹:解析 a===a-1的神秘真相
<script>
// 在js中 无穷大 减去或者加上任意数值 仍然是无穷大
let a = Infinity
console.log(a === a - 1) //true
let b = -Infinity
console.log(b === b - 1) //true
</script>
- JavaScript之冰封守卫:Object.freeze()的神奇力量
// 即便对当前对象做各种行为 初始对象都不会改变
// 确保对象不被更改
const obj = {
name: '张三',
age: 20
}
Object.freeze(obj)
obj.name = '李四'
obj.age = 18
delete obj.age
console.log(obj)// {name: '张三', age: 20}
- JavaScript巧思:用闭包谱写防抖函数
<script>
// 防抖:防抖函数的作用就是确保某个时间段内,无论触发多少次时间,只执行一次回调
function debounce(callback, delay) {
let timer;
return function (...args) {
clearTimeout(timer)
timer = setTimeout(() => {
callback.apply(this, args)
}, delay)
}
}
// 使用
const fun = debounce(() => {
console.log('防抖函数触发,执行一次')
}, 3000)
for (let i = 0; i < 10; i++) {
fun()
}
</script>
- …扩展运算符
<script>
const arr1 = [1, 2, 3]
const arr2 = [2, 4, 5, 6]
const arr3 = [...arr1, ...arr2]
console.log(arr3)// [1, 2, 3, 2, 4, 5, 6]
</script>
.