日历控件,可以在此基础上做更多的扩展,如实现行程安排等<html>
<head>
<title>日历控件</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
<style type="text/css">
.rili {
margin: 30px 0px;
overflow: hidden;
text-align: center;
color: #666
}
.low_calendar {
overflow: hidden;
border: 1px solid #c8d2dc;
}
.low_calendar h1 {
width: 100%;
background: #ff6f7e;
font-size: 14px;
height: 30px;
line-height: 30px;
text-align: center;
color: #fff;
font-weight: 100;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
position: relative
}
.calgrid table {
width: 100%;
border-collapse: collapse;
margin: 0;
padding: 0;
}
.calgrid table th {
background-color: #fff;
border-left: 1px solid #whitesmoke;
font-size: 12px;
height: 30px;
line-height: 30px;
text-align: center;
vertical-align: middle;
color: #999;
color: #505050;
border-bottom: 1px solid #c8c8c8;
}
.calgrid table td {
width: 12%;
height: 40px;
line-height: 40px;
font-size: 16px;
font-weight: 700 text-align : center;
color: #4a5056;
border-bottom: 1px solid #c8c8c8;
border-left: 1px solid #ccc;
position: relative;
overflow: hidden;
cursor: pointer;
text-align: center;
}
.calgrid table td img {
position: absolute;
left: 0;
top: 0;
display: none
}
.calgrid table td.curr img {
display: block
}
.calgrid table td.disable {
color: #ed5565;
}
.calgrid table td:first-child {
border-left: none;
}
.calgrid table tr:last-child td {
border-bottom: none;
}
.calgrid table td.holiday {
font-size: 12px;
}
.calgrid table th.week_day, .calgrid table td.week_day {
color: #ed5565
}
.calgrid table td.curr {
line-height: 25px;
font-size: 13px;
color: #fff;
background: #ff6f7e;
-moz-box-shadow: 2px #7d92a7 inset;
-webkit-box-shadow: 2px #7d92a7 inset;
box-shadow: 2px #7d92a7 dcdeeb;
}
.calgrid table td.curr span {
display: block;
font-size: 12px;
line-height: 10px;
}
.low_calendar h1 .ldate {
width: 25px;
height: 25px;
background: url(images/ldate.png) no-repeat;
float: left;
position: absolute;
top: 2px;
left: 10px;
overflow: hidden;
text-indent: -99999px
}
.low_calendar h1 .rdate {
width: 25px;
height: 25px;
background: url(images/rdate.png) no-repeat;
float: right;
position: absolute;
top: 2px;
right: 10px;
overflow: hidden;
text-indent: -99999px
}
</style>
<script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
<?php
/**
* user: yuluo
* date: 2015-05-08
* time: 下午3:08
* desc:实现生成指定月份的日历信息 在此基础上可以无限遐想和扩展...
*/
date_default_timezone_set("asia/shanghai");
$time_now = time(); //strtotime("2015-02-04");
if($_request["date"]){
$time_now = strtotime($_request["date"]);
}
function getcurmonthfirstday($date)
{
return date('y-m-01', strtotime($date));
}
function getcurmonthlastday($date)
{
return date('y-m-d', strtotime(date('y-m-01', strtotime($date)) . ' +1 month -1 day'));
}
$current_y = date("y", $time_now);
$current_m = date("m", $time_now);
$next_m = date('ymd', strtotime(date('y-m-01', $time_now) . ' +1 month'));
$pre_m = date('ymd', strtotime(date('y-m-01', $time_now) . ' -1 month'));
?>
<p class="rili">
<p class="chosedate">
<p class="low_calendar">
<h1><a class="ldate" href="date_ctrl.php?date=<?php echo($pre_m); ?>">上一月</a><span><?php echo($current_y); ?>年<?php echo($current_m); ?>月</span><a class="rdate" href="date_ctrl.php?date=<?php echo($next_m); ?>">下一月</a></h1>
<p class="calgrid">
<table cellspacing="1" cellpadding="1">
<tbody>
<tr>
<th class="week_day">周日</th>
<th>周一</th>
<th>周二</th>
<th>周三</th>
<th>周四</th>
<th>周五</th>
<th class="week_day">周六</th>
</tr>
<?php
//$time_now = strtotime("2015-05-11");
$str_time_now = date("y-m-d", $time_now); ////////字符串格式的当前时间
$current_month_first_day = getcurmonthfirstday($str_time_now); /////////当前月的第一天
$current_month_first_w_val = intval(date("w", strtotime($current_month_first_day))); //////当前月第一天是一周的第几天 周日(0)是第一天
$current_month_last_day = getcurmonthlastday($str_time_now); ////////当前月的最后一天
$current_week_val = date("w", $time_now);
$current_day_val = date("j", $time_now);
$last_day_val = date("j", strtotime($current_month_last_day)); ////////当前月最后一天的天索引
$strart_time = false;
$int_day_val = 1;
$ctrl_step = $last_day_val + $current_month_first_w_val; ////////控件结束的位置索引
for ($i = 0; $i < 42; $i++) {
if($i == 0){ ?>
<tr>
<?php }
if ($i == $current_month_first_w_val) {
$strart_time = true;
}
if ($i >= $ctrl_step) {
$strart_time = false;
}
if ($strart_time) {
$tem_current_date = date("y-m-d",strtotime(date("y-m", $time_now).("-").strval($int_day_val)));
$str_td_class = "";
if (($i%7)==0 || (($i + 1) % 7) == 0){
$str_td_class = "week_day";
}
?>
<td date="<?php echo($tem_current_date); ?>" class="<?php echo($str_td_class); ?>"><?php echo($int_day_val); ?></td>
<?php
$int_day_val++;
} else {
?>
<td class="null"> </td>
<?php
}
if ((($i + 1) % 7) == 0) {
?>
</tr>
<?php
}
}
?>
</tbody>
</table>
</p>
</p>
</p>
</p>
<script type="text/javascript">
$(function(){
console.log($("td [date='2015-05-12']"));
});
</script>
</body>
</html>