jQuery写的日历(包括日历的样式及功能)


Posted in Javascript onApril 23, 2013
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<title></title> 
<script src="../JS/connotation.js" type="text/javascript"></script> 
<script type="text/javascript"> 
var c = new Calendar("c"); 
document.write(c); 
</script> 
</head> 
<body> 
<div> 
普通调用:<input type="text" name="txt2" onclick="c.showMoreDay = true; c.show(this);" /><br /> 
<div style="height: 262px"> 
</div> 
按钮调用:<input type="text" name="btntxt" id="btntxt" /><input name="button" value="*" 
id="button" type="button" onclick="c.showMoreDay = true; c.show(getObjById('btntxt'), '1982-1-1', this)" /> 
<br /> 
<input type="text" name="btntxt3" id="btntxt3" /><input name="button3" value="*" 
id="button3" type="button" onclick="c.showMoreDay = true; c.show(this, getObjById('btntxt3'))" /> 
</div> 
</body> 
</html>

需要的jQuery文件
function Calendar(objName) 
{ 
this.style = { 
borderColor : "#909eff", //边框颜色 
headerBackColor : "#909EFF", //表头背景颜色 
headerFontColor : "#ffffff", //表头字体颜色 
bodyBarBackColor : "#f4f4f4", //日历标题背景色 
bodyBarFontColor : "#000000", //日历标题字体色 
bodyBackColor : "#ffffff", //日历背景色 
bodyFontColor : "#000000", //日历字体色 
bodyHolidayFontColor : "#ff0000", //假日字体色 
watermarkColor : "#d4d4d4", //背景水印色 
moreDayColor : "#cccccc" 
}; 
this.showMoreDay = false; //是否显示上月和下月的日期 
this.Obj = objName; 
this.date = null; 
this.mouseOffset = null; 
this.dateInput = null; 
this.timer = null; 
}; 
Calendar.prototype.toString = function() 
{ 
var str = this.getStyle(); 
str += '<div Author="alin" class="calendar" style="display:none;" onselectstart="return false" oncontextmenu="return false" id="Calendar">\n'; 
str += '<div Author="alin" class="cdrWatermark" id="cdrWatermark"></div><div id="cdrBody" style="position:absolute;left:0px;top:0px;z-index:2;width:140px;">'; 
str += this.getHeader(); 
str += this.getBody(); 
str += '</div><div Author="alin" id="cdrMenu" style="position:absolute;left:0px;top:0px;z-index:3;display:none;" onmouseover="' + this.Obj + '.showMenu(null);" onmouseout="' + this.Obj + '.hideMenu();"></div></div>'; 
return str; 
}; 
Calendar.prototype.getStyle = function() 
{ 
var str = '<style type="text/css">\n'; 
str += '.calendar{position:absolute;width:140px!important;width :142px;height:184px!important;height :174px;background-color:'+this.style.bodyBackColor+';border:1px solid ' + this.style.borderColor + ';left:0px;top:0px;z-index:9999;}\n'; 
str += '.cdrHeader{background-color:'+ this.style.headerBackColor +';width:140px;height:22px;font-size:12px;color:'+this.style.headerFontColor+';}\n'; 
str += '.cdrWatermark{position:absolute;left:0px;top:55px;width:140px;font-family: Arial Black;font-size:50px;color:'+this.style.watermarkColor+';z-index:1;text-align:center;}\n'; 
str += '.cdrBodyBar{background-color:' + this.style.bodyBarBackColor + ';font-size:12px;color:' + this.style.bodyBarFontColor + ';width:140px;height:20px;}\n'; 
str += '.cdrBody{width:140px;height:122px!important; height :110px;font-size:12px;cursor:pointer;color:' + this.style.bodyFontColor + ';}\n'; 
str += '.dayOver{height:16px;padding:0px;border:1px solid black;background-color:#f4f4f4;}\n'; 
str += '.dayOut{padding:1px;border:none;height:16px;}\n'; 
str += '.menuOver{background-color:'+this.style.headerBackColor+';color:'+this.style.headerFontColor+';font-size:12px;}\n'; 
str += '.headerOver{border:1px solid black;background-color:#f4f4f4;color:black;cursor:default;}\n'; 
str += '.cdrMenu{font-size:12px;border:1px solid #000000;background-color:#ffffff;cursor:default;width:100%}\n'; 
str += 'html>body #Calendar{width:142px;174px;}'; 
str += '</style>\n'; 
return str; 
}; 
Calendar.prototype.getHeader = function() 
{ 
var str = '<table Author="alin" class="cdrHeader" cellSpacing="2" cellPadding="0"><tr Author="alin" align="center">\n'; 
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="previousYear" title="上一年份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeYear(false);"><<</td>\n'; 
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="previousMonth" title="上一月份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeMonth(false);"><</td>\n'; 
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" id="currentYear" style="width:50px;" onclick="' + this.Obj + '.showMenu(true);" onmouseout="' + this.Obj + '.hideMenu();this.className=\'\';">0</td>\n'; 
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" id="currentMonth" onclick="' + this.Obj + '.showMenu(false);" onmouseout="' + this.Obj + '.hideMenu();this.className=\'\';">0</td>\n'; 
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="nextMonth" title="下一月份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeMonth(true);">></td>\n'; 
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="nextYear" title="下一年份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeYear(true);">>></td></tr>\n'; 
str += '</table>\n'; 
return str; 
}; 
Calendar.prototype.getBody = function() 
{ 
var n = 0; 
var str = this.getBodyBar(); 
str += '<table Author="alin" class="cdrBody" cellSpacing="2" cellPadding="0">\n'; 
for(i = 0; i < 6; i++) 
{ 
str += '<tr Author="alin" align="center">'; 
for(j = 0; j < 7; j++) 
{ 
str += '<td Author="alin" class="dayOut" id="cdrDay'+(n++)+'" width="13%"></td>\n'; 
} 
str += '</tr>'; 
} 
str += '</table>\n'; 
str += '<table Author="alin" class="cdrBodyBar" cellSpacing="2" cellPadding="0"><tr align="center" Author="alin"><td Author="alin" style="cursor:pointer;" onclick="'+this.Obj+'.getToday();">今天:'+new Date().toFormatString("yyyy年mm月dd日")+'</td></tr></table>\n'; 
return str; 
}; 
Calendar.prototype.getBodyBar = function() 
{ 
var str = '<table Author="alin_bar" id="cdrBodyBar" class="cdrBodyBar" style="cursor:move;" cellSpacing="2" cellPadding="0"><tr Author="alin_bar" align="center">\n'; 
var day = new Array('日','一','二','三','四','五','六'); 
for(i = 0; i < 7; i++) 
{ 
str += '<td Author="alin_bar">' + day[i] + '</td>\n'; 
} 
str += '</tr></table>'; 
return str; 
} 
Calendar.prototype.getYearMenu = function(year) 
{ 
var str = '<table Author="alin" cellSpacing="0" class="cdrMenu" cellPadding="0">\n'; 
for(i = 0; i < 10; i++) 
{ 
var _year = year + i; 
var _date = new Date(_year,this.date.getMonth(),this.date.getDate()); 
str += '<tr Author="alin" align="center"><td Author="alin" width="13%" height="16" '; 
if(this.date.getFullYear() != _year) 
{ 
str += 'onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" '; 
} 
else 
{ 
str += 'class="menuOver"'; 
} 
str += 'onclick="' + this.Obj + '.bindDate(\'' + _date.toFormatString("-") + '\')">' + _year + '年</td>\n'; 
str += '</tr>'; 
} 
str += '<tr Author="alin" align="center"><td Author="alin"><table Author="alin" style="font-size:12px;width:100%;" cellSpacing="0" cellPadding="0">\n'; 
str += '<tr Author="alin" align="center"><td Author="alin" onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" onclick="'+this.Obj+'.getYearMenu('+ (year - 10) + ')"><<</td>\n'; 
str += '<td Author="alin" onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" onclick="'+this.Obj+'.getYearMenu('+ (year + 10) +')">>></td><tr>\n'; 
str += '</table></td></tr>\n'; 
str += '</table>'; 
var _menu = getObjById("cdrMenu"); 
_menu.innerHTML = str; 
}; 
Calendar.prototype.getMonthMenu = function() 
{ 
var str = '<table Author="alin" cellSpacing="0" class="cdrMenu" cellPadding="0">\n'; 
for(i = 1; i <= 12; i++) 
{ 
var _date = new Date(this.date.getFullYear(),i-1,this.date.getDate()); 
str += '</tr><tr Author="alin" align="center"><td Author="alin" height="16" '; 
if(this.date.getMonth() + 1 != i) 
{ 
str += 'onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" '; 
} 
else 
{ 
str += 'class="menuOver"'; 
} 
str += 'onclick="' + this.Obj + '.bindDate(\'' + _date.toFormatString("-") + '\')">'+i+'月</td></tr>\n'; 
} 
str += '</table>'; 
var _menu = getObjById("cdrMenu"); 
_menu.innerHTML = str; 
}; 
Calendar.prototype.show = function() 
{ 
if (arguments.length > 3 || arguments.length == 0) 
{ 
alert("对不起!传入参数不对!" ); 
return; 
} 
var _date = null; 
var _evObj = null; 
var _initValue = null 
for(i = 0; i < arguments.length; i++) 
{ 
if(typeof(arguments[i]) == "object" && arguments[i].type == "text") 
{_date = arguments[i];} 
else if(typeof(arguments[i]) == "object") 
{_evObj = arguments[i];} 
else if(typeof(arguments[i]) == "string") 
{_initValue = arguments[i];} 
} 
_evObj = _evObj || _date; 
inputObj = _date; 
targetObj = _evObj 
if(!_date){alert("传入参数错误!"); return;} 
this.dateInput = _date; 
_date = _date.value; 
if(_date == "" && _initValue) _date = _initValue; 
this.bindDate(_date); 
var _target = getPosition(_evObj); 
var _obj = getObjById("Calendar"); 
_obj.style.display = ""; 
_obj.style.left = _target.x + 'px'; 
if((document.body.clientHeight - (_target.y + _evObj.clientHeight)) >= _obj.clientHeight) 
{ 
_obj.style.top = (_target.y + _evObj.clientHeight) + 'px'; 
} 
else 
{ 
_obj.style.top = (_target.y - _obj.clientHeight) + 'px'; 
} 
}; 
Calendar.prototype.hide = function() 
{ 
var obj = getObjById("Calendar"); 
obj.style.display = "none"; 
}; 
Calendar.prototype.bindDate = function(date) 
{ 
var _monthDays = new Array(31,30,31,30,31,30,31,31,30,31,30,31); 
var _arr = date.split('-'); 
var _date = new Date(_arr[0],_arr[1]-1,_arr[2]); 
if(isNaN(_date)) _date = new Date(); 
this.date = _date; 
this.bindHeader(); 
var _year = _date.getFullYear(); 
var _month = _date.getMonth(); 
var _day = 1; 
var _startDay = new Date(_year,_month,1).getDay(); 
var _previYear = _month == 0 ? _year - 1 : _year; 
var _previMonth = _month == 0 ? 11 : _month - 1; 
var _previDay = _monthDays[_previMonth]; 
if (_previMonth == 1) _previDay =((_previYear%4==0)&&(_previYear0!=0)||(_previYear@0==0))?29:28; 
_previDay -= _startDay - 1; 
var _nextDay = 1; 
_monthDays[1] = ((_year%4==0)&&(_year0!=0)||(_year@0==0))?29:28; 
for(i = 0; i < 40; i++) 
{ 
var _dayElement = getObjById("cdrDay" + i); 
_dayElement.onmouseover = Function(this.Obj + ".onMouseOver(this)"); 
_dayElement.onmouseout = Function(this.Obj + ".onMouseOut(this)"); 
_dayElement.onclick = Function(this.Obj + ".onClick(this)"); 
this.onMouseOut(_dayElement); 
_dayElement.style.color = ""; 
if(i < _startDay) 
{ 
//获取上一个月的日期 
if(this.showMoreDay) 
{ 
var _previDate = new Date(_year,_month - 1,_previDay); 
_dayElement.innerHTML = _previDay; 
_dayElement.title = _previDate.toFormatString("yyyy年mm月dd日"); 
_dayElement.value = _previDate.toFormatString("-"); 
_dayElement.style.color = this.style.moreDayColor; 
_previDay++; 
}else 
{ 
_dayElement.innerHTML = ""; 
_dayElement.title = ""; 
} 
} 
else if(_day > _monthDays[_month]) 
{ 
//获取下个月的日期 
if(this.showMoreDay) 
{ 
var _nextDate = new Date(_year,_month + 1,_nextDay); 
_dayElement.innerHTML = _nextDay; 
_dayElement.title = _nextDate.toFormatString("yyyy年mm月dd日"); 
_dayElement.value = _nextDate.toFormatString("-"); 
_dayElement.style.color = this.style.moreDayColor; 
_nextDay++; 
}else 
{ 
_dayElement.innerHTML = ""; 
_dayElement.title = ""; 
} 
} 
else if(i >= new Date(_year,_month,1).getDay() && _day <= _monthDays[_month]) 
{ 
//获取本月日期 
_dayElement.innerHTML = _day; 
if(_day == _date.getDate()) 
{ 
this.onMouseOver(_dayElement); 
_dayElement.onmouseover = Function(""); 
_dayElement.onmouseout = Function(""); 
} 
if(this.isHoliday(_year,_month,_day)) 
{ 
_dayElement.style.color = this.style.bodyHolidayFontColor; 
} 
var _curDate = new Date(_year, _month, _day); 
_dayElement.title = _curDate.toFormatString("yyyy年mm月dd日"); 
_dayElement.value = _curDate.toFormatString("-"); 
_day++; 
} 
else 
{ 
_dayElement.innerHTML = ""; 
_dayElement.title = ""; 
} 
} 
var _menu = getObjById("cdrMenu"); 
_menu.style.display = "none"; 
}; 
Calendar.prototype.bindHeader = function() 
{ 
var _curYear = getObjById("currentYear"); 
var _curMonth = getObjById("currentMonth"); 
var _watermark = getObjById("cdrWatermark"); 
_curYear.innerHTML = this.date.toFormatString("yyyy年"); 
_curMonth.innerHTML = this.date.toFormatString("mm月"); 
_watermark.innerHTML = this.date.getFullYear(); 
}; 
Calendar.prototype.getToday = function() 
{ 
var _date = new Date(); 
this.bindDate(_date.toFormatString("-")); 
}; 
Calendar.prototype.isHoliday = function(year,month,date) 
{ 
var _date = new Date(year,month,date); 
return (_date.getDay() == 6 || _date.getDay() == 0); 
}; 
Calendar.prototype.onMouseOver = function(obj) 
{ 
obj.className = "dayOver"; 
}; 
Calendar.prototype.onMouseOut = function(obj) 
{ 
obj.className = "dayOut"; 
}; 
Calendar.prototype.onClick = function(obj) 
{ 
if(obj.innerHTML != "") this.dateInput.value = obj.value; 
this.hide(); 
}; 
Calendar.prototype.onChangeYear = function(isnext) 
{ 
var _year = this.date.getFullYear(); 
var _month = this.date.getMonth() + 1; 
var _date = this.date.getDate(); 
if(_year > 999 && _year <10000) 
{ 
if(isnext){_year++;}else{ _year --;} 
} 
else 
{ 
alert("年份超出范围(1000-9999)!"); 
} 
this.bindDate(_year + '-' + _month + '-' + _date); 
}; 
Calendar.prototype.onChangeMonth = function(isnext) 
{ 
var _year = this.date.getFullYear(); 
var _month = this.date.getMonth() + 1; 
var _date = this.date.getDate(); 
if(isnext){ _month ++;} else {_month--;} 
if(_year > 999 && _year <10000) 
{ 
if(_month < 1) {_month = 12; _year--;} 
if(_month > 12) {_month = 1; _year++;} 
} 
else 
{ 
alert("年份超出范围(1000-9999)!"); 
} 
this.bindDate(_year + '-' + _month + '-' + _date); 
}; 
Calendar.prototype.showMenu = function(isyear) 
{ 
var _menu = getObjById("cdrMenu"); 
if(isyear != null) 
{ 
var _obj = (isyear)? getObjById("currentYear") : getObjById("currentMonth"); 
if(isyear) 
{ 
this.getYearMenu(this.date.getFullYear() - 5); 
} 
else 
{ 
this.getMonthMenu(); 
} 
_menu.style.top = (_obj.offsetTop + _obj.offsetHeight) + 'px'; 
_menu.style.left = _obj.offsetLeft + 'px'; 
_menu.style.width = _obj.offsetWidth + 'px'; 
} 
if (this.timer != null) clearTimeout(this.timer); 
_menu.style.display=""; 
} 
Calendar.prototype.hideMenu = function() 
{ 
var _obj = getObjById("cdrMenu"); 
this.timer = window.setTimeout(function(){_obj.style.display='none';},500); 
} 
Number.prototype.NaN0 = function() 
{ 
return isNaN(this) ? 0 : this; 
} 
Date.prototype.toFormatString = function(fs) 
{ 
if(fs.length == 1) 
{ 
return this.getFullYear() + fs + (this.getMonth() + 1) + fs + this.getDate(); 
} 
fs = fs.replace("yyyy",this.getFullYear()); 
fs = fs.replace("mm",(this.getMonth() + 1)); 
fs = fs.replace("dd",this.getDate()); 
return fs; 
} 
var inputObj = null; 
var targetObj = null; 
var dragObj = null; 
var mouseOffset = null; 
function getObjById(obj) 
{ 
if(document.getElementByIdx_x) 
{ 
return document.getElementByIdx_x(obj); 
} 
else 
{ 
alert("浏览器不支持!"); 
} 
} 
function mouseCoords(ev) 
{ 
if(ev.pageX || ev.pageY){ 
return {x:ev.pageX, y:ev.pageY}; 
} 
return { 
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
y:ev.clientY + document.body.scrollTop - document.body.clientTop 
}; 
} 
function getPosition(e) 
{ 
var left = 0; 
var top = 0; 
while (e.offsetParent){ 
left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0); 
top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0); 
e = e.offsetParent; 
} 
left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0); 
top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0); 
return {x:left, y:top}; 
} 
function getMouseOffset(target, ev) 
{ 
ev = ev || window.event; 
var docPos = getPosition(target); 
var mousePos = mouseCoords(ev); 
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y}; 
} 
function closeCalendar(evt){ 
evt = evt || window.event; 
var _target= evt.target || evt.srcElement; 
if(!_target.getAttribute("Author") && _target != inputObj && _target != targetObj) 
{ 
getObjById("Calendar").style.display = "none"; 
} 
} 
function dragStart(evt){ 
evt = evt || window.event; 
var _target= evt.target || evt.srcElement; 
if(_target.getAttribute("Author") == "alin_bar") 
{ 
dragObj = getObjById("Calendar"); 
mouseOffset = getMouseOffset(dragObj, evt); 
} 
} 
function drag(evt) 
{ 
evt = evt || window.event; 
if(dragObj) 
{ 
var mousePos = mouseCoords(evt); 
dragObj.style.left = (mousePos.x - mouseOffset.x) + 'px'; 
dragObj.style.top = (mousePos.y - mouseOffset.y) + 'px'; 
} 
} 
//拖动结束 
function dragEnd(evt) 
{ 
dragObj = null; 
} 
document.onclick = closeCalendar; 
document.onmousedown = dragStart; 
document.onmousemove = drag; 
document.onmouseup = dragEnd;
Javascript 相关文章推荐
checkbox 复选框不能为空
Jul 11 Javascript
javascript 二维数组的实现与应用
Mar 16 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
Nov 17 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
使用vue构建移动应用实战代码
Aug 02 Javascript
Vue中组件之间数据的传递的示例代码
Sep 08 Javascript
老生常谈JS中的继承及实现代码
Jul 06 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
Apr 23 #Javascript
js事件冒泡实例分享(已测试)
Apr 23 #Javascript
js绑定事件this指向发生改变的问题解决方法
Apr 23 #Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 #Javascript
修改file按钮的默认样式实现代码
Apr 23 #Javascript
js随机颜色代码的多种实现方式
Apr 23 #Javascript
js对象与打印对象分析比较
Apr 23 #Javascript
You might like
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
chrome调试javascript详解
2015/10/21 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
图片加载完成再执行事件的实例
2017/11/16 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
课堂教学改革实施方案
2014/03/17 职场文书
委托书范本
2014/04/02 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
你需要掌握的20个Python常用技巧
2022/02/28 Python
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
mysql中关键词exists的用法实例详解
2022/06/10 MySQL
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技