很粗劣,适合新手看吧,总来思想就是类似java动态日历
很多是美化
script 写在div里,
/*
` 是 键盘 ESC 下面的 ~ 另外一个符号
` ` :键盘上1前面的符号
用 ` ` 括起来的html代码在使用元素进行表示的时候,可以将${值}输出 将获取到的没一天写在这个class名为 item 的小盒子里
document.write(`<div class="item">${i}</div>`);
*/
(适合新手观看哈,欢迎留言)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>获取到本月的日历</title>
<style type="text/css">
.calender{
//定位
position: absolute;
width: 714px;
height: 510px;
left: 50%;
top: 50%;
//外边距
margin: -350px 0 0 -350px;
background-color: black;
}
.item{
position: relative;
top: -9%;
/*
inline(行内元素):
使元素变成行内元素,拥有行内元素的特性,即可以与其他行内元素共享一行,不会独占一行.
不能更改元素的height,width的值,大小由内容撑开.
可以使用padding上下左右都有效,margin只有left和right产生边距效果,但是top和bottom就不行.
block(块级元素):
使元素变成块级元素,独占一行,在不设置自己的宽度的情况下,块级元素会默认填满父级元素的宽度.
能够改变元素的height,width的值.
可以设置padding,margin的各个属性值,top,left,bottom,right都能够产生边距效果.
inline-block(融合行内于块级):
结合了inline与block的一些特点,结合了上述inline的第1个特点和block的第2,3个特点.
用通俗的话讲,就是不独占一行的块级元素
*/
display: inline-block;
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
background:rgba(112,128,144,0.4);
color: #FFFFFF;
border: 1px solid rgba(255,255,255,0.4);
/* 所有的边向外进行扩大,经过0.5s之后完成效果 */
transition: all .5s;
}
/* 鼠标放上去时,变化颜色,大小 */
.item:hover{
background: rgba(112,128,144,0.7);
/* 扩大为原来的1.1倍 */
transform: scale(1.1);
}
</style>
</head>
<body>
<div class="calender">
<script type="text/javascript">
var nowDate = new Date();
console.info(nowDate);
/* 获取到年 */
var year = nowDate.getFullYear();
console.info(year);
var month = nowDate.getMonth() + 1;
/* 获取到当前的月 */
console.info(month);
//从1900年1月1日,到当前的月份的上一个月的总天数
var totalDay = 0;
//目标月份(当前月份)的总天数
var day = 0;
//上面获取到的当前月份前面的空格数
var space = 0;
//统计整年的总天数
for(var i = 1900;i < year;i++){
totalDay += (i % 4 == 0 && i % 100 != 0 || i % 400 == 0 ? 366 : 365)
}
console.info(totalDay);
//统计整月的总天数
for(var i = 1;i < month;i++){
switch(i){
case 4 :
case 6 :
case 9 :
case 11:
totalDay += 30;
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12:
totalDay += 31;
case 2 :
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
totalDay += 29;
}else{
totalDay += 28;
}
break;
}
}
console.info(totalDay);
//计算空格数
space = totalDay % 7;
//获取目标月份的总天数
switch(month){
case 4 :
case 6 :
case 9 :
case 11:
day += 30;
break;
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12:
day += 31;
break;
case 2 :
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
day += 29;
}else{
day += 28;
}
break;
}
console.info(day);
// 设置计数器
var count = 0;
//打印空格
for(var i = 0;i < space; i++){
count++;//记数打了几个空格
/* 这里是王页面中写代码 */
/* 代码以字符串的形式传入进去 */
/* visibility:hidden:这里设置元素是否隐藏,元素隐藏的同时占用元素的位置
display:none 隐藏元素,但是不占用元素的位置
*/
document.write('<div class="item" style = "visibility: hidden;"></div>');
for(var i = 1;i <= day;i++){
count++;
/*
` ` :键盘上1前面的符号
用 ` ` 括起来的html代码在使用元素进行表示的时候,可以将${值}输出
*/
document.write(`<div class="item">${i}</div>`);
if(count == 7){
document.write('<br>');
count = 0;
}
}
}
//打印元素
</script>
</div>
</body>
</html>
这个是效果图