使用 %c 声明可以给 console 的输出添加 CSS 样式,日志太多的话,给不同种类的日志设置不同的样式,可以极大的提升阅读体验。
什么是 %c
%c: 标识将 CSS 样式应用于 %c 之后的 console 消息。
给 console 消息设置多个样式
可以给同一条 Console 消息设置多种颜色。
console.log(
'Nothing here %cHi Cat %cHey Bear', // Console Message
'color: blue', 'color: red' // CSS Style
);
给其他 console 消息设置样式
这里有五种 console 类型的消息:
console.log
console.info
console.debug
console.warn
console.error
你可以自定义自己的日志样式,例如:
console.log('%cconsole.log', 'color: green;');
console.info('%cconsole.info', 'color: green;');
console.debug('%cconsole.debug', 'color: green;');
console.warn('%cconsole.warn', 'color: green;');
console.error('%cconsole.error', 'color: green;');
处理多种 CSS 样式
如果要输出的样式比较多,字符串会比较长,这里有一个小技巧, 生成一个 CSS Array ,通过 join(‘;’) 来合并成一个 CSS String。
例如:
// 1.将css样式传递给数组
const styles = [
'color:green',
'background:yellow',
'font-size:30px',
'border:1px solid red',
'text-shadow:2px 2px black',
'padding:10px',
]。join(';');
// 2.连接单个数组项并将它们连接成一个用分号分隔的字符串(;)
// 3.传递样式变量
console.log('%cHello There',styles);
// or
console.log('%c%s', styles, 'Some Important Message Here');
在 Node.js 中设置 console 消息样式
在 node.js 环境,你可以使用 Color Reference 来设置样式。例如:
// Cyan
console.log('\x1b[36m%s\x1b[0m', 'I am cyan');
// Yellow
console.log('\x1b[33m%s\x1b[0m', 'yellow' );
注意:\x1b[36m%s\x1b[0m,36m为开始颜色,0m为重置,若不重置,此后的颜色则全为36m。因此必须要有一个“闭合”,才能控制颜色显示。
Color Reference
Reset = "\x1b[0m" //重置
Bright = "\x1b[1m" // 加粗加宽
Dim = "\x1b[2m" // 加宽
Underscore = "\x1b[4m" // 下划线
Blink = "\x1b[5m" // 阴影
Reverse = "\x1b[7m" // 反转
Hidden = "\x1b[8m" // 隐藏
字体颜色
FgBlack = "\x1b[30m"
FgRed = "\x1b[31m"
FgGreen = "\x1b[32m"
FgYellow = "\x1b[33m"
FgBlue = "\x1b[34m"
FgMagenta = "\x1b[35m" // 洋红
FgCyan = "\x1b[36m" // 兰绿
FgWhite = "\x1b[37m"
背景颜色
BgBlack = "\x1b[40m"
BgRed = "\x1b[41m"
BgGreen = "\x1b[42m"
BgYellow = "\x1b[43m"
BgBlue = "\x1b[44m"
BgMagenta = "\x1b[45m"
BgCyan = "\x1b[46m"
BgWhite = "\x1b[47m"
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>Ding Jianlong Html</title>
<style>
</style>
</head>
<body>
<h2>请在开发者工具查看console</h2>
<script>
//基本用法
console.log('最常见用法\n换行');
console.error('输出错误信息 会以红色显示');
console.warn('打印警告信息 会以黄色显示');
console.info('打印一般信息');
console.clear();//清空上面的console显示
//进阶用法
//console.assert(bool,”info”) 如果bool为false 打印出info 否则不打印
console.assert(false,'判断为false才显示的信息');
//传入的对象或数组以表格方式显示
console.table([['中国','美国'],['好']]);
//打印 调用链 fn2()调用fn1(),fn1()调用fn()
function fn(){ console.trace(); }
function fn1(){ fn(); }
function fn2(){ fn1(); }
fn2();
//格式化输出
/*
console.log支持的格式标志有:
%s 占位符
%d 或 %i 整数
%f 浮点数
%o%O object对象
%c css样式
*/
console.log('%d + %d = %d',1,2,3);
//%o%O打印dom节点时就不一样
console.log('%o',document.body);
console.log('%O',document.body);
// %c 后面的内容,增加css样式
//附:console.log输出的超链接会被自动识别并加上灰色字体颜色和下划线的样式,而这个无法用%c覆盖
console.log('123 %c 456','font-size:36px;color:red;');
console.log('123 %c 4 http://www.google.com 56 %c 789','font-size:20px;color:#ff8400;','font-size:12px;color:#000');
//利用css样式加载图片
//没法直接设置width和height样式,line-height图片高度,再调padding
console.log('%c ','background-image:url("http://iyeslogo.orbrand.com/150902Google/005.gif");background-size:120% 120%;background-repeat:no-repeat;background-position:center center;line-height:60px;padding:30px 120px;');
//高级用法
//计时,单位毫秒
console.time();
for(var i=0;i<100000;i++){
var j=i*i;
}
console.timeEnd();
//统计代码或函数被调用了多少次
var fn_ = function(){ console.count('hello world'); }
for(var i=0;i<5;i++){
fn_();
}
//查看内存使用情况,是属性,不带括号
//console.memory;
//在浏览器开发者工具中使用
//分组输出,可嵌套
console.group('分组1');
console.log('语文');
console.log('数学');
console.group('其他科目');
console.log('化学');
console.log('地理');
console.log('历史');
console.groupEnd('其他科目');
console.groupEnd('分组1');
</script>
</body>
</html>