jQuery實(shí)現(xiàn)簡(jiǎn)單日歷效果
本文實(shí)例為大家分享了jQuery實(shí)現(xiàn)簡(jiǎn)單日歷效果的具體代碼,供大家參考,具體內(nèi)容如下
日歷效果如下圖:

css部分:
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.main {
width: 380px;
height: 370px;
margin: 30px auto;
position: relative;
}
button {
width: 30px;
height: 30px;
border-radius: 50%;
background: pink;
font-size: 12px;
text-align: center;
line-height: 30px;
border: none;
position: absolute;
color: #fff;
outline: none;
cursor: pointer;
user-select: none;
}
.prev {
top: 10px;
left: 6%;
}
.next {
top: 10px;
right: 6%;
}
.nowTime {
width: 90px;
position: absolute;
top: 15px;
right: calc(50% - 45px);
font-size: 14px;
font-weight: bold;
background: linear-gradient(to right, rgb(247, 149, 190), rgb(248, 204, 228));
-webkit-background-clip: text;
color: transparent;
}
.container {
width: 350px;
margin: 50px auto;
border: 1px solid #ccc;
position: absolute;
top: calc(50% - 190px);
left: calc(50% - 175px);
}
.container ul:first-of-type {
background: rgb(245, 195, 195);
color: rgb(43, 40, 40);
}
.container ul {
width: 350px;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
text-align: center;
}
.container li {
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
cursor: pointer;
}
.container li:not(.disabled):hover {
background: rgb(255, 174, 208);
}
li.disabled {
background: rgb(252, 238, 238);
cursor: not-allowed;
color: rgb(206, 206, 206);
}
li.active {
background: rgb(255, 206, 214);
}
</style>
html部分:
<div class="main">
<button class="prev">上月</button>
<p class="nowTime"></p>
<button class="next">下月</button>
<div class="container">
<ul>
<li>日</li>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
<li>六</li>
</ul>
<ul class="content">
</ul>
</div>
</div>
js部分:
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(function () {
let allDays = 0
let now = new Date()
let global_month = now.getMonth() + 1
let global_year = now.getFullYear()
let today = now.getDate()
$('.prev').click(function () {
now.setMonth(now.getMonth() - 1)
calendar()
})
$('.next').click(function () {
now.setMonth(now.getMonth() + 1)
calendar()
})
function calendar() {
$('.content').empty()
let month = now.getMonth() + 1
let year = now.getFullYear()
//得到每個(gè)月多少天
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
allDays = 31
break;
case 4:
case 6:
case 9:
case 11:
allDays = 30
break;
default:
//判斷閏年 得到二月份的天數(shù)
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
allDays = 29
} else {
allDays = 28
}
break;
}
//獲取當(dāng)前月份有多少天 生成相應(yīng)個(gè)數(shù)的li
for (let i = 1; i <= allDays; i++) {
let li = $('<li/>').text(i)
//給對(duì)應(yīng)今天的li添加高亮效果
if (i === today && year === global_year && month === global_month) li.addClass('active')
$('.content').append(li)
}
//思路:每個(gè)月一號(hào)前面空幾個(gè) 空的個(gè)數(shù)為周幾就空幾個(gè)
now.setDate(1) //將時(shí)間設(shè)置成本月的一號(hào)
let firstDay = now.getDay() // 獲取一號(hào)是周幾
for (let i = 0; i < firstDay; i++) { // 循環(huán)次數(shù)為對(duì)應(yīng)的是周幾
now.setDate(now.getDate() - 1) //每循環(huán)一次 日期往前倒一天
let li = $('<li/>').text(now.getDate()).addClass('disabled') //生成相對(duì)應(yīng)的空格
$('.content').prepend(li)
}
now.setDate(now.getDate() + firstDay) //將時(shí)間設(shè)置回當(dāng)前時(shí)間 否則影響后面時(shí)間的獲取
now.setDate(allDays)
//思路:每個(gè)月最后一天后面空幾個(gè) 空的個(gè)數(shù)為6減周幾就空幾個(gè)
now.setDate(allDays) //將時(shí)間設(shè)置成每月最后一天
let lastDay = 6 - now.getDay() //最后空的個(gè)數(shù)
for (let i = 0; i < lastDay; i++) {
now.setDate(now.getDate() + 1) //每循環(huán)一次 日期往后加一天
let li = $('<li/>').text(now.getDate()).addClass('disabled') //生成相對(duì)應(yīng)的空格
$('.content').append(li)
}
now.setDate(now.getDate() - lastDay) //將時(shí)間設(shè)置回當(dāng)前時(shí)間 否則影響后面時(shí)間的獲取
now.setDate(1)
$('.nowTime').html(now.getFullYear() + '年' + (now.getMonth() + 1) + '月')
}
calendar()
})
</script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JQuery的ajax基礎(chǔ)上的超強(qiáng)GridView展示
前面有個(gè)例子是使用jQuery的datatable插件來實(shí)現(xiàn)的能夠展開個(gè)詳細(xì)信息表的樣子。事實(shí)上.net的數(shù)據(jù)展示模式很好,如果配上jQuery的那些效果和AJAX功能是相當(dāng)?shù)貌诲e(cuò)。2009-09-09
JQuery DataTable刪除行后的頁面更新利用Ajax解決
使用Jquery的DataTable進(jìn)行數(shù)據(jù)表處理非常方便,常遇到的一個(gè)問題就是刪除一行后頁面必須進(jìn)行更新,下面與大家分享下使用Ajax的解決方法2013-05-05
jquery實(shí)現(xiàn)走馬燈特效實(shí)例(撲克牌切換效果)
本文主要介紹了jquery實(shí)現(xiàn)走馬燈特效實(shí)例(撲克牌切換效果),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
jQuery實(shí)現(xiàn)動(dòng)態(tài)控制頁面元素的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)控制頁面元素的方法,結(jié)合實(shí)例形式分析了jQuery事件響應(yīng)及頁面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
jquery插件bootstrapValidator表單驗(yàn)證詳解
這篇文章主要為大家詳細(xì)介紹了jquery插件bootstrapValidator表單驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
多功能jQuery樹插件zTree實(shí)現(xiàn)權(quán)限列表簡(jiǎn)單實(shí)例
這篇文章主要介紹了多功能jQuery樹插件zTree實(shí)現(xiàn)權(quán)限列表簡(jiǎn)單實(shí)例,優(yōu)異的性能、靈活的配置、多種功能的組合,是樹插件zTree最大的優(yōu)勢(shì),感興趣的小伙伴們可以參考一下2016-07-07
jquery創(chuàng)建并行對(duì)象或者合并對(duì)象的實(shí)現(xiàn)代碼
如果有對(duì)象A ,B 現(xiàn)在我想要合并成對(duì)象C 從C里面可以找到A , B 及其子對(duì)象 怎么做2012-10-10

