左右滑动的日历(移动端 jquery-3.6.0 AmazeUI-2.7.2)

        第一版,待重新调整。

效果图:

 

 代码:

css: workAttendance.css

header{
    font-size: 2rem;
    color:white;
    background-color: #4873C1;
    height: 5rem;
}
.top{
    text-align: center;
}
.cancel{
    float:left;
    margin-top: 1.5rem;
    margin-left: 1rem;
    font-size: 2rem;
}
.title{
    font-size: 3rem;
}
main{
    width:100%;
    height:10rem;
}
.dateTable td{
    width: 3rem;
    height: 3rem;
}

html: workAttendance.html

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="workAttendance.css">
  <script src="jquery-3.6.0/jquery-3.6.0.min.js"></script>
  <script src="AmazeUI-2.7.2/assets/js/amazeui.min.js"></script>
</head>

<body>
  <header>
  </header>
  <main>
    <div>
      <div class="selectDate" style="display: none;">
        <select style="width: 10rem;height:3rem;font-size:2rem;" id="ayear">
        </select><b style="height:3rem;font-size:2rem;">年</b>
        <select style="width: 10rem;height:3rem;font-size:2rem;" id="bmonth">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
          <option value="5">5</option>
          <option value="6">6</option>
          <option value="7">7</option>
          <option value="8">8</option>
          <option value="9">9</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
        </select><b style="height:3rem;font-size:2rem;">月</b>
      </div>
      <div id="date" style="background-color:#4873C1;font-size: 2.5rem;margin: 0;padding: 0;color: white;"></div>
      <table id="dateTable"
        style="height:60rem;width:100%;text-align: center;background-color: #4873C1;color: white;font-size:2rem;border-spacing:3rem;">
      </table>
    </div>
  </main>

  <script type="text/javascript">
    var userData;
    var clickDayId;
    $(document).ready(function () {
      var date = new Date;
      var ayear = document.getElementById("ayear");
      for (var i = 2200; i > 1970; i--) {
        ayear.add(new Option(i, i));
      }
      $("#ayear").val(date.getFullYear());
      $("#bmonth").val(date.getMonth() + 1)
      var dateSelect = document.getElementById("date");
      dateSelect.innerText = date.getFullYear() + "年" + (date.getMonth() + 1) + "月";
      selectDate();
    })

    function timehtml(yeargoal, monthgoal) {
      //月末
      var time = new Date(yeargoal, monthgoal, 0);
      //获得这个月由多少天
      var date = time.getDate();
      var time2 = new Date(yeargoal, monthgoal - 1, 1);
      //获得这个月的一号是星期几
      var day = time2.getDay();

      //月
      var mon = time.getMonth() + 1;
      //年
      var year = time.getFullYear();
      //行标签头
      var hangT = "<tr style=''>";
      //空的td块
      var lieK = "<td style=''></td>";
      var timestr = hangT;
      //日历表头
      timestr = timestr + "<td style='width:12%;'>" + "日" + "</td>";
      timestr = timestr + "<td style='width:12%;'>" + "一" + "</td>";
      timestr = timestr + "<td style='width:12%;'>" + "二" + "</td>";
      timestr = timestr + "<td style='width:12%;'>" + "三" + "</td>";
      timestr = timestr + "<td style='width:12%;'>" + "四" + "</td>";
      timestr = timestr + "<td style='width:12%;'>" + "五" + "</td>";
      timestr = timestr + "<td style='width:12%;'>" + "六" + "</td>";
      timestr = timestr + "</tr><tr style='heigth:3rem;'>";
      for (var i = 0; i < day; i++) {
        timestr = timestr + lieK;
      }
      var dayNum = 0;
      for (var j = 1; j <= date; j++) {
        timestr = timestr + "<td style='background-color: #4873C1;color:white;border-radius:50%;' id='" + year + mon + j + "' onclick='dateClick(" + year + "," + mon + "," + j + ")'>" + j + "</td>";
        if (day == 6) {
          dayNum++;
          timestr = timestr + "</tr>";
          day = -1;
        }
        day++;
      }
      if (day > 0) {
        for (var i = day; i <= 6; i++) {
          timestr = timestr + lieK;
        }
        dayNum++;
      }
      timestr = timestr + "</tr>";

      if (dayNum < 6) {
        timestr = timestr + "<tr style='heigth:3rem;visibility: hidden'><td style=''>1</td></tr>";
      }
      return timestr;
    }

    function dateClick(year, mon, j) {
      if (j != '') {
        //把上一个样式删除
        if (clickDayId != null && clickDayId != '') {
          var dayEle = document.getElementById(clickDayId);
          if (dayEle) {
            dayEle.style.color = 'white';
            dayEle.style.backgroundColor = '#4873C1';
          }
        }
        clickDayId = year + "" + mon + "" + j;
        //修改样式
        var dayEle = document.getElementById(clickDayId);
        if (dayEle) {
          dayEle.style.color = 'blue';
          dayEle.style.backgroundColor = 'white';
        }
      }
    }
    function selectDate() {
      var yeargoal = document.getElementById("ayear").value;
      var monthgoal = document.getElementById("bmonth").value;
      var str = timehtml(yeargoal, monthgoal);
      var dateSelect = document.getElementById("date");
      dateSelect.innerText = yeargoal + "年" + monthgoal + "月";
      $("table").html(str);
    }
    $("#ayear").change(function () {
      if ($("#bmonth").val() != "") {
        selectDate();
      }
    })
    $("#bmonth").change(function () {
      if ($("#ayear").val() != "") {
        selectDate();
      }
    })
    // 左右滑动日历
    var startX = 0, startY = 0, touchD;
    function touchStart(evt) {
      try {
        var touch = evt.touches[0], //获取第一个触点
          x = Number(touch.pageX), //页面触点X坐标
          y = Number(touch.pageY); //页面触点Y坐标
        //记录触点初始位置
        startX = x;
        startY = y;
      } catch (e) {
      }
    }

    function touchMove(evt) {
      try {
        var touch = evt.touches[0], //获取第一个触点
          x = Number(touch.pageX), //页面触点X坐标
          y = Number(touch.pageY); //页面触点Y坐标
        //判断滑动方向
        if (x - startX > 0) {
          touchD = -1;
        }
        if (x - startX < 0) {
          touchD = 1;
        }
      } catch (e) {
      }
    }

    function touchEnd(evt) {
      if (touchD && touchD != "") {
        try {
          var yeargoal = document.getElementById("ayear").value;
          var monthgoal = document.getElementById("bmonth").value;

          var mon = parseInt(monthgoal) + parseInt(touchD);
          var year = yeargoal;
          if (mon > 12) {
            year = parseInt(yeargoal) + parseInt(1);
            mon = 1;
          }
          if (mon < 1) {
            year = parseInt(yeargoal) - parseInt(1);
            mon = 12;
          }
          $("#ayear").val(year);
          $("#bmonth").val(mon);
          selectDate();
          touchD = "";
        } catch (e) {
        }
      }
    }
    //绑定事件
    function bindEvent() {
      document.addEventListener('touchstart', touchStart, false);
      document.addEventListener('touchmove', touchMove, false);
      document.addEventListener('touchend', touchEnd, false);
    }
    bindEvent();
  </script>
</body>

</html>

jq:Download jQuery | jQuery

AmazeUI:JS 插件 | Amaze UI

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值