1. 程式人生 > >CANVAS標籤效果

CANVAS標籤效果

  通過JS來向CANVAS畫布中插入文字標籤,並定義顏色陣列和內容陣列,通過Math.floor(Math.random()*n)來隨機取出內容,迴圈n次,在畫布上隨機位置生成隨機大小和顏色的標籤。

 新標籤的新增通過jquery-ui的drag方法來實現,當輸入框被拖入到新標籤中時,自動向標籤內容陣列中新增輸入框的內容,並重新生成canvas畫布。

<html>

	<head>
		<title>blog</title>
		<meta http-equiv=content-type content="text/html; charset=utf-8">
		<link rel="stylesheet" href="css/style.css">
		<link href="css/blog.css" rel="stylesheet" type="text/css">
		<title>生命不息 折騰不止</title>

		 <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
		<style> 
			body {
				border: 0px;
				margin: 0px;
				overflow: hidden;
				background-color: transparent;
				font-family: 宋體;
			}
		</style>
	</head>

	<body onselectstart="return false;">
		<script>
			$(function() {
				$("#drag").draggable();
				$("#myCanvas").droppable({
					drop: function(event, ui) {
					//	alert(ui.draggable.children()[0].value);
						c = document.getElementById("myCanvas");
					context = c.getContext("2d");
					context.clearRect(0, 0, c.width, c.height);
					data2[data2.length] = ui.draggable.children()[0].value; 
					draw();
					} 
				});
			});
		</script>
		<div class="img-col hover-me">
			<div class="img-wrap parallax-demo-4" style="float: left; width: 100%; height: 950px; margin: 0; padding: 0;">
				<div class="parallax-inner back-img" style="background-image: url('img/bg.jpg')">

				</div>
			</div>
		</div>

		<div class="mes">
			<canvas id="myCanvas" width="900" height="700" style="float: left; background: rgba(0,0,0,0.5); overflow: hidden; position: absolute; top:50px; left: 30px; ">
			</canvas>
			<div id="drag" style="float: left; background: rgba(0,0,0,0.5); overflow: hidden; position: absolute; top:50px; left: 950px;  width: 160px; height: 160px;">
				<input type="text" style="background: none; color: white;" placeholder="此處輸入內容" />
			</div>
			<script type="text/javascript">
				var c = document.getElementById("myCanvas");
				var context = c.getContext("2d");
				// 設定字型
				/*var colorArr = [ //顏色選擇
					'#3C6B15',
					'#6b4b38',
					'#eb9a2f',
					'#12acab',
					'#666',
				];*/
				var colorArr = ["Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue"];
				var data2 = ["數學建模", "Java", "直男", "程式碼", "圖書館", "PHP", "專案", "健康", "JS", 'html', 'CODE', 'MODE',
					'資訊', '開發', '設計', '軟體開發', '瀏覽器', '大學', '大三', '中國', '濟南', '一般', '冷', '好', '我愛學習', '苟利國家生死以', '一川晚照人閒立', '新垣結衣', '石原里美',
				];

				function draw() {
					var width = 0;
					var height = 0;
					var maxsize = 0;
					var maxwidth = 100;
					for(var i = 0; i < 150; i++) {
						var size = Math.floor(15 + Math.random() * 28);
						context.font = size + "px " + "bold 黑體";
						// 設定顏色
						context.fillStyle = colorArr[Math.floor(Math.random() * 20)];
						// 設定對齊方式
						context.textAlign = "left";
						context.textBaseline = "top";
						var text = data2[Math.floor(Math.random() * data2.length)];
						if(width < 900) {
							context.fillText(text, width, height);
						}
						if(size > maxsize)
							maxsize = size;
						width += size * text.length;
						if(width > 800) {
							width = 0;
							height += maxsize;
							maxsize = 0;
						}
					}
				}
				window.onload = function() {
					draw();
				};

				function add() {
					c = document.getElementById("myCanvas");
					context = c.getContext("2d");
					context.clearRect(0, 0, c.width, c.height);
					data2[data2.length] = (document.getElementById('content').value);
					draw();
				}
			</script>
		</div>
		

</html>