今天在群里看到一个极其无聊的面试题,当时我能想到的方法就是用ps拉一个渐变,后来一个突然有人冒出用canvas,现将代码整理出来,希望对大家有所帮助
原题:
给定两个css的颜色值,比如#CCC和#f0bc89,求两个颜色之间的10个等分色
var canvas = document.createElement_x('canvas'),
ctx = canvas.getContext('2d'),
colorWrap = document.createElement_x('div'),
i = 0,
point = 10,
width = 100,
grad,
html='';
canvas.width = width;
canvas.height = width;
ctx.beginPath();
grad = ctx.createLinearGradient(0,0, 0, width);
grad.addColorStop(0, '#CCC');
grad.addColorStop(1, '#F0BC89');
ctx.fillStyle = grad;
ctx.fillRect(0, 0, width, width);
ctx.fill();
// 取得10个点
for(var i=0;i<10;i++){
var pixel = ctx.getImageData(0, point*i, 1, 1).data;
console.log('#'+pixel[0].toString(16)+pixel[1].toString(16)+pixel[2].toString(16));
}
// document.body.appendChild( canvas );
// colorWrap.id = 'J_color_wrap';
// colorWrap.innerHTML = html;
// document.body.appendChild( colorWrap );