canvas-畫(huà)板

閑來(lái)無(wú)趣寫(xiě)了個(gè)網(wǎng)頁(yè)版的畫(huà)圖

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

<style>

*{padding:0;

margin:0;}

#mc{

display:block;

border:1px solid red;

box-shadow:0 0 10px yellow;

background:#fff;

margin-left:100px;

}

.left1 {

width:100px;

background:lightgreen;

height:600px;

position:absolute;

top:0;

left:0;

}

button {

width:80px;

text-align:center;

padding:5px 0;

margin:10px;

}

.colorPicker{

width:100px;

height:50px;

background-color:#000;

cursor:pointer;

}

.ylColor {

position:absolute;

z-index:99999;

width:250px;

background:#fff;

box-shadow:1px 1px 2px #c6d9f1, -1px -1px 2px #c6d9f1;

font-size:14px;

color:#000;

}

.ylColor .aCol {

display:inline-block;

float:left;

width:15px;

height:15px;

margin:0 7px 7px 0;

border:1px solid #eee;

cursor:pointer;

}

.ylColor .aCol:nth-child(10n) {

margin-right:0;

}

.ylColor-default {

padding:7px;

}

.ylColor-custom ul {

overflow:hidden;

padding:7px 7px 0;

}

.ylColor .title {

padding:7px;

background-color:#f4f4f8;

}

</style>

</head>

<body>

<div class="left1">

<button id="btn1">直線</button>

<button id="btn2">曲線</button>

<button id="btn3">實(shí)心矩形</button>

<button id="btn4">空心矩形</button>

<button id="btn5">實(shí)心圓</button>

<button id="btn6">空心圓</button>

<button id="btn7">清除畫(huà)板</button>

<button id="btn8">橡皮</button>

<div class="colorPicker"></div>

</div>

<canvas id="mc" width="700" height="600"></canvas>

<script src="jquery.js"></script>

<script>

var btn = document.querySelectorAll('button');

var mc = document.getElementById('mc');

var ctx=mc.getContext('2d');

//點(diǎn)擊事件锄列,為不同的按鈕綁定不同的事件

? ? for(var i =0;i

btn[i].onclick =function () {

var id =this.getAttribute('id');

var? a = $('.colorPicker').css('background-color');

console.log(a)

switch (id){

case 'btn1':

zhixian();

ctx.strokeStyle = a;

break;

case 'btn2':

xuxian();

ctx.strokeStyle = a;

break;

case 'btn3':

shixin();

ctx.fillStyle = a;

break;

case 'btn4':

kongxin();

ctx.strokeStyle = a;

break;

case 'btn5':

shiyuan();

ctx.fillStyle = a;

break;

case 'btn6':

kongyuan();

ctx.strokeStyle = a;

break;

case 'btn7':

qingchu();

break;

case 'btn8':

xiangpi();

break;

}

}

}

//直線

? ? function zhixian(){

mc.onmousedown =function (ev) {

var e = ev || window.event;

var mx = e.offsetX;

var my = e.offsetY;

ctx.beginPath();

ctx.moveTo(mx,my);

mc.onmouseup =function (ev) {

var e = ev || window.event;

ctx.lineTo(e.offsetX,e.offsetY);

ctx.stroke();

}

}

}

//虛線

? ? function xuxian(){

mc.onmousedown =function (ev) {

var e = ev || window.event;

ctx.beginPath();

ctx.moveTo(e.offsetX,e.offsetY);

mc.onmousemove =function (ev) {

var e = ev||window.event;

ctx.lineTo(e.offsetX,e.offsetY);

ctx.stroke();

}

mc.onmouseup =function(ev) {

var e = ev || window.event;

mc.onmousemove = mc.onmouseup? =null;

//? ? ? ? ? ? ? ? ctx.closePath();

? ? ? ? ? ? }

}

}

//實(shí)心矩形

? ? function shixin(){

mc.onmousedown =function (ev) {

console.log(1);

var e = ev|| window.event;

var x= e.offsetX;

var y = e.offsetY;

ctx.beginPath();

ctx.moveTo(x,y);

mc.onmouseup =function (ev) {

var e = ev||window.event;

var w =? e.offsetX - x;

var h = e.offsetY - y;

ctx.rect(x,y,w,h);

ctx.fill();

mc.onmouseup =null;

}

}

}

//空心矩形

? ? function kongxin(){

mc.onmousedown =function (ev) {

console.log(1);

var e = ev|| window.event;

var x= e.offsetX;

var y = e.offsetY;

ctx.beginPath();

ctx.moveTo(x,y);

mc.onmouseup =function (ev) {

var e = ev||window.event;

var w =? e.offsetX - x;

var h = e.offsetY - y;

ctx.rect(x,y,w,h);

ctx.stroke();

mc.onmouseup =null;

}

}

}

//實(shí)心圓

? ? function shiyuan(){

mc.onmousedown =function (ev) {

var e = ev||window.event;

var x = e.offsetX;

var y = e.offsetY;

ctx.beginPath();

//? ? ? ? ? ? ctx.moveTo(x,y);

? ? ? ? ? ? mc.onmouseup =function (ev) {

var e = ev || window.event;

var w = e.offsetX;

var h = e.offsetY;

var r = Math.sqrt(Math.pow(w-x,2)+Math.pow(h-y,2));

var d = r /2;

var x2 = (w - x) /2 + x;

var y2 = (h - y) /2 + y;

//? ? ? ? ? ? ? ? console.log(r);

? ? ? ? ? ? ? ? ctx.arc(x2,y2,d,0,Math.PI*2);

ctx.fill()? ;

mc.onmouseup =null;

}

}

}

//空心圓

? ? function kongyuan(){

mc.onmousedown =function (ev) {

var e = ev||window.event;

var x = e.offsetX;

var y = e.offsetY;

ctx.beginPath();

//? ? ? ? ? ? ctx.moveTo(x,y);

? ? ? ? ? ? mc.onmouseup =function (ev) {

var e = ev || window.event;

var w = e.offsetX;

var h = e.offsetY;

var r = Math.sqrt(Math.pow(w-x,2)+Math.pow(h-y,2));

var d = r /2;

var x2 = (w - x) /2 + x;

var y2 = (h - y) /2 + y;

//? ? ? ? ? ? ? ? console.log(r);

? ? ? ? ? ? ? ? ctx.arc(x2,y2,d,0,Math.PI*2);

ctx.stroke();

mc.onmouseup =null;

}

}

}

//清除畫(huà)板

? ? function qingchu(){

ctx.clearRect(0,0,700,600);

}

//橡皮

? ? function xiangpi(){

mc.onmousedown =function (e) {

mc.onmousemove =function (e) {

ctx.clearRect(e.offsetX,e.offsetY,30,30);

}

}

mc.onmouseup =function (e) {

mc.onmousedown =null;

mc.onmousemove =null;

}

}

</script>

<script>

;(function($){

$.fn.ylColor =function(options){

var defaults = {

containerId:'ylColor',

left:50,

top:0,

defaultColor:'#000'

? ? ? ? ? ? };

defaults.customColor = [

'#fff','#000','#eeece1','#1f497d','#4f81bd',

'#c0504d','#9bbb59','#8064a2','#4bacc6','#f79646',

'#f2f2f2','#808080','#ddd9c3','#c6d9f1','#dce6f2',

'#f2dcdb','#ebf1de','#e6e0ec','#dbeef4','#fdeada',

'#d9d9d9','#595959','#c4bd97','#8eb4e3','#b9cde5',

'#e6b9b8','#d7e4bd','#ccc1da','#b7dee8','#fcd5b5',

'#bfbfbf','#404040','#948a54','#558ed5','#95b3d7',

'#d99694','#c3d69b','#b3a2c7','#93cddd','#fac090',

'#a6a6a6','#262626','#4a452a','#17375e','#376092',

'#953735','#77933c','#604a7b','#31859c','#e46c0a',

'#7f7f7f','#0d0d0d','#1e1c11','#10243f','#254061',

'#632523','#4f6228','#403152','#215968','#984807'

? ? ? ? ? ? ];

defaults.formatColor = [

'#c00000','#ff0000','#ffc000','#ffff00','#92d050',

'#00b050','#00b0f0','#0070c0','#002060','#7030a0'

? ? ? ? ? ? ];

var settings = $.extend(defaults,options);

var elems =this;

var cur_elem;

var event =function(){

$(elems).each(function(){

$(this).click(function(){

show(this);

});

});

$('#' + settings.containerId).find('.aCol').click(function(){

onSelect(this);

});

};

var build =function(){

var containerId = settings.containerId;

var containerDiv = $('<div id="'+ containerId+'" class="ylColor" style="display: none"></div>');

var defaultDiv = $('<div class="ylColor-default"></div>');

var customDiv = $('<div class="ylColor-custom"></div>');

var formatDiv = $('<div class="ylColor-format"></div>');

defaultDiv.append('<span class="aCol" style="background-color: '+ settings.defaultColor +'" title="'+settings.defaultColor +'"></span>自動(dòng)');

var liHtml ='';

$.each(settings.customColor,function(i,e){

liHtml +='<li class="aCol" data-color="'+e+'" style="background-color: '+ e +'" title="'+ e +'"></li>';

});

customDiv.append('<div class="title">主題顏色</div><ul>'+liHtml+'</ul>');

liHtml ='';

$.each(settings.formatColor,function(i,e){

liHtml +='<li class="aCol" data-color="'+e+'" style="background-color: '+e+'" title="'+ e +'"></li>';

});

customDiv.append('<div class="title">標(biāo)準(zhǔn)色</div><ul>'+liHtml+'</ul>');

if($('#' + containerId).length ==0){

//不存在桅打,則創(chuàng)建

? ? ? ? ? ? ? ? ? ? $('body').append(containerDiv);

}

containerDiv.append(defaultDiv,customDiv,formatDiv);

}

var show =function(elem){

cur_elem = elem;

var top = $(elem).offset().top;

var left = $(elem).offset().left;

$('#' + settings.containerId).css({

top: top + settings.top,

left: left + settings.left,

}).fadeIn();

};

var onSelect =function(selectOne){

$('#'+ settings.containerId).fadeOut();

if(options.onSelect){

options.onSelect(selectOne,cur_elem);

}

};

build();

event();

return this;

};

})(jQuery);

$('.colorPicker').ylColor({

left:220,

onSelect:function(oCol,elem){

var color = $(oCol).attr('data-color');

$('.colorPicker').css({'background-color':color});

}

});

</script>

</body>

</html>

此處的jquery需要自己從網(wǎng)上下埠褪,自己重新導(dǎo)入進(jìn)去就可以


效果圖


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脏款,一起剝皮案震驚了整個(gè)濱河市雅倒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闽烙,老刑警劉巖日缨,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異家卖,居然都是意外死亡眨层,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)上荡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)趴樱,“玉大人,你說(shuō)我怎么就攤上這事∫恋瑁” “怎么了窜司?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)航揉。 經(jīng)常有香客問(wèn)我塞祈,道長(zhǎng),這世上最難降的妖魔是什么帅涂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任议薪,我火速辦了婚禮,結(jié)果婚禮上媳友,老公的妹妹穿的比我還像新娘斯议。我一直安慰自己,他們只是感情好醇锚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布哼御。 她就那樣靜靜地躺著,像睡著了一般焊唬。 火紅的嫁衣襯著肌膚如雪恋昼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天赶促,我揣著相機(jī)與錄音液肌,去河邊找鬼。 笑死鸥滨,一個(gè)胖子當(dāng)著我的面吹牛嗦哆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播婿滓,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼老速,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了空幻?” 一聲冷哼從身側(cè)響起烁峭,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秕铛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體缩挑,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡但两,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了供置。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谨湘。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出紧阔,到底是詐尸還是另有隱情坊罢,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布擅耽,位于F島的核電站活孩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏乖仇。R本人自食惡果不足惜憾儒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乃沙。 院中可真熱鬧起趾,春花似錦、人聲如沸警儒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蜀铲。三九已至缭保,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝙茶,已是汗流浹背艺骂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隆夯,地道東北人钳恕。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蹄衷,于是被迫代替她去往敵國(guó)和親忧额。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容