今天在群里看到一个极其无聊的面试题,当时我能想到的方法就是用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 );