html
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/my.css" />
<script src="js/jquery-2.1.1.min.js"></script>
<script src="js/testCalender.js"></script>
</head>
<body>
<div id="main" class="current">
<div id="Calender1" class="calenderContent">
<div id="labelCalender1">2月</div>
<div id="testCalender" class="calender">
</div>
</div>
<div id="Calender2" class="calenderContent">
<div id="labelCalender2">3月</div>
<div id="testCalender2" class="calender">
</div>
</div>
</div>
<div id="modal" class="showModal">
<div class="modal">
<input type="text" class="txtbox">
<input type="submit">
</div>
</div>
</body>
</html>
js
var FEBRUARY = 1;
var MARCH = 2;
$(function () {
var testCalender = document.getElementById('testCalender');
var testCalender2 = document.getElementById('testCalender2');
viewBackground(testCalender, 2015, FEBRUARY);
viewBackground(testCalender2, 2015, MARCH);
document.getElementById('labelCalender1').textContent = "February";
document.getElementById('labelCalender2').textContent = "March";
});
function viewBackground(canvas, year, month) {
drawSquares(0, 0, canvas, "日", 'red');
drawSquares(1, 0, canvas, "月", 'white');
drawSquares(2, 0, canvas, "火", 'white');
drawSquares(3, 0, canvas, "水", 'white');
drawSquares(4, 0, canvas, "木", 'white');
drawSquares(5, 0, canvas, "金", 'white');
drawSquares(6, 0, canvas, "土", 'blue');
var dayData = getDayData(year, month);
for (y = 1; y < 6; y++) {
for (x = 0; x < 7; x++) {
var day = (dayData[(y - 1) * 7 + x + 1] != undefined ? dayData[(y - 1) * 7 + x + 1] : "");
if (x != 0 && x != 6) {
drawSquares(x, y, canvas, day, 'white');
} else {
drawSquares(x, y, canvas, day, 'grey');
}
}
}
}
function getDayData(year, month) {
var targetDate = new Date(year, month, 1);
var MAX_DAY = new Date(year, month + 1, 0).getDate();
var dayData = new Array();
for (i = 0; i <= MAX_DAY; i++) {
var monthlyDeff = targetDate.getDay();
var day;
if (i - monthlyDeff <= 0) {
day = "";
} else if (i - monthlyDeff > MAX_DAY) {
day = "";
} else {
day = i - monthlyDeff;
}
dayData.push(day);
}
return dayData;
}
function drawSquares(x, y, canvas, message, color) {
var newCanvas = document.createElement("canvas");
newCanvas.width = 60;
newCanvas.height = 60;
canvas.appendChild(newCanvas);
if (y != 0) {
newCanvas.addEventListener("mousedown", doMouseDown, false);
}
var ctx = newCanvas.getContext('2d');
ctx.beginPath();
ctx.fillStyle = color;
ctx.fillRect(0, 0, 60, 60);
ctx.fillStyle = 'black';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillText(message, 30, 30);
ctx.fill();
}
function doMouseDown(event) {
showDialog(getClickedDay(this.offsetLeft - this.parentNode.offsetLeft, this.offsetTop - this.parentNode.offsetTop));
}
function getClickedDay(x, y) {
var clickedAreaX = Math.ceil(x / 60) + 1;
var clickedAreaY = Math.ceil(y / 60) - 1;
var clickedDay = clickedAreaY * 7 + clickedAreaX
return clickedDay
}
function showDialog(day) {
alert(day);
}
css
.current {
overflow: hidden;
}
.calenderContent {
width:430px;
height:390px;
float:left;
}
.calenderContent:after {
content: '';
display: block;
clear:both;
}
.calender {
height:370px;
}
.hiddenModal {
display:none;
}
.showModal {
position:absolute;
top:0px;
left:0px;
width:100%;
height:100%;
z-index:1;
background-color:rgba(180,180,180,0.7);
}
.modal {
position:absolute;
top:10%;
left:40%;
width:300px;
height:500px;
background:#00ffff;
opacity:1.0;
}
.txtbox {
margin:10px;
}
最終更新:2015年02月27日 17:32