อัพเดทเนื้อหาใหม่ปี 2020 ใช้รูปแบบการกำหนด css โดยใช้
รูปแบบ flex layout
ดูตัวอย่างแนวทางดันี้
ไฟล์ test.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="app.css"> </head> <body> <h1>Calendar</h1> <div class="wrap-calendar-lev-1"> <div class="wrap-month-year"> มกราคม 2563 </div> <ul class="wrap-dayname-list"> <li>อา</li> <li>จ</li> <li>อ</li> <li>พ</li> <li>พฤ</li> <li>ศ</li> <li>ส</li> </ul> <ul class="wrap-day-list"> <li class="no-date"></li> <li class="no-date"></li> <li class="no-date"></li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> <li>10</li> <li>11</li> <li>12</li> <li>13</li> <li class="current">14</li> <li>15</li> <li>16</li> <li>17</li> <li>18</li> <li>19</li> <li>20</li> <li>21</li> <li>22</li> <li>23</li> <li>24</li> <li>25</li> <li>26</li> <li>27</li> <li>28</li> <li>29</li> <li>30</li> <li>31</li> </ul> </div> </body> </html>
ไฟล์ app.css
.wrap-calendar-lev-1{ width: 200px; } /* ส่วนของเดือนและปี */ .wrap-month-year{ display: flex; justify-content: center; background-color: #bb5105; color: #FFFFFF; } /* ส่วนที่คุลมวันที่ และชื่อวัน */ .wrap-day-list, .wrap-dayname-list{ display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; background: #EAEAEA; align-content: flex-start; box-shadow: 0 0.25em 0.25em rgba(0, 0, 0, 0.1); } /* ส่วนของรายการวันที่ และวัน */ .wrap-day-list li, .wrap-dayname-list li{ width: calc(100% / 7); /* background-color: yellow; */ height: 25px; display: flex; align-items: center; margin-top: 1px; justify-content: center; } /* ช่องรายชื่อวันในสัปดาห์ */ .wrap-dayname-list li{ background-color: chocolate; color: #FFFFFF; } /* ช่องวันที่ปกติ */ .wrap-day-list li{ background-color: yellow; } /* ช่องที่ไม่มีวันที่ */ .wrap-day-list li.no-date{ background-color: transparent; } /* ส่วนของการกำหนดวันที่ปัจจุบัน */ .wrap-day-list li.current{ color: yellow; background-color: red; }
ดูตัวอย่างที่ DEMO 1
กรณีประขุกต์ใช้งานร่วมกับ PHP
ไฟล์ test.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="app.css"> </head> <body> <?php $thai_month_arr=array( "1"=>"มกราคม", "2"=>"กุมภาพันธ์", "3"=>"มีนาคม", "4"=>"เมษายน", "5"=>"พฤษภาคม", "6"=>"มิถุนายน", "7"=>"กรกฎาคม", "8"=>"สิงหาคม", "9"=>"กันยายน", "10"=>"ตุลาคม", "11"=>"พฤศจิกายน", "12"=>"ธันวาคม" ); //$current_month = "2008-11-01"; $current_month = date("Y-m-01"); // เดือนปัจจุบัน หากต้องการเป็นเดือนอื่นก็เปลี่ยน เช่น Y-02-01 $mk_time = strtotime($current_month); // สร้างรูปแบบวันที่มาตรฐาน Timestamp $current_date = date("j"); // วันที่ปัจจุบัน $total_day_in_month = date("t",$mk_time); // จำนวนวันในเดือนนี้ $first_day_in_month = date("w",$mk_time); // หาวันที่ 1 ตรงกับวันอะไร วันอาทิตย์เท่ากับ 0 $total_list_day = $total_day_in_month + $first_day_in_month; // จำนวนรายการวันที่ี่ $rows_week = ceil($total_list_day / 7); // คำนวนหาจำนวนสัปดาห์ $total_box = $rows_week * 7; // จำนวนรายการวันที่ทั้งหมด // ฟังก์ชั่นสร้างวันที่ กำหนด เริ่มต้น (เริ่มต้น 1, วันที่ 1 ตรงกัลวันที่ , วันที่ปัจจุบัน, จำนวนวันวในเดือนนั้นๆ) function drawDate($no_day, $first_day_in_month, $current_date, $total_day_in_month){ $wan_tee = $no_day - $first_day_in_month; if($wan_tee <= 0){ return '<li class="no-date"></li>'; }else{ if($wan_tee <= $total_day_in_month){ if($wan_tee == $current_date){ return '<li class="current">'.$wan_tee.'</li>'; }else{ return '<li>'.$wan_tee.'</li>'; } }else{ return ""; } } } ?> <h1>Calendar</h1> <div class="wrap-calendar-lev-1"> <div class="wrap-month-year"> <?=$thai_month_arr[intval(date("m"))]?> <?=date("Y")+543?> </div> <ul class="wrap-dayname-list"> <li>อา</li> <li>จ</li> <li>อ</li> <li>พ</li> <li>พฤ</li> <li>ศ</li> <li>ส</li> </ul> <ul class="wrap-day-list"> <?php for($i = 1; $i <= $total_box; $i++){ // วนลูปสร้างวันที่ echo drawDate($i, $first_day_in_month, $current_date, $total_day_in_month); } ?> </ul> </div> </body> </html>