如何通过HTML表格制作简单的日历?固定行列排布日期

千丽大大_5919

千丽大大_5919

2026-07-16

761人浏览

原创

Doc To HTML
Doc To HTML

使用 MinerU 文档处理引擎将 Word 文档(.doc、.docx)转换为保留结构和格式的干净 HTML。

下载
日历html需用固定42格(6×7),先算当月1日星期几确定首行空单元格数,dom创建元素替代字符串拼接,桌面用表格、移动端换div+aria,统一时区处理并预设星期本地化。

如何通过html表格制作简单的日历?固定行列排布日期

用 <table> 实现固定行列的日历结构 <p>HTML 表格本身不带日期逻辑,但能稳定控制行列对齐——这是日历渲染最基础也最关键的约束。关键不是“怎么画格子”,而是“怎么让 1 号落在正确的列(星期几)”。必须先算出当月 1 日是星期几,再决定第一行要补几个空单元格 <code><td>。 <p>常见错误是直接硬写 7×6 的表格,结果每月第一天都从周日开始,或者忽略月份天数差异导致最后一行多出无效日期。</p> <ul> <li>每月起始列 = <code>(firstDayOfWeek + 6) % 7(JavaScript 中 new Date(year, month, 1).getDay() 返回 0(周日)到 6(周六),需转换为周一为 0 的习惯时,常加 6 再取模)
  • 总单元格数固定为 42(6 行 × 7 列),不足部分用空 <td> 填充,避免浏览器自动折行破坏布局 <li>不要用 <code><th> 放星期标题后又混用 <code><td> 放日期——语义混乱且容易被 CSS 误样式化 <h3>生成日期单元格时避开 <code>document.write() 和拼接字符串
  • 用字符串拼接 <table>...</table> 看似简单,但一旦需要绑定点击事件、动态高亮今日或节假日,就会陷入难维护的 HTML 字符串里。更稳妥的做法是用 DOM 方法逐个创建元素,或用现代框架的响应式更新机制。

    例如:用 document.createElement('tr') 和 appendChild() 构建行与单元格,比 innerHTML += '...' 更可控,也避免 XSS 风险(尤其当日期含用户输入时)。

    • 循环生成 42 个 <td>,对前 <code>offset 个设为空文本,中间有效日期用 textContent 设置,后面补空
    • 给当天日期的 <td> 加 class <code>"today",别用内联样式——否则后续主题切换或暗色模式会冲突
    • 避免在 <td> 里嵌套 <code><div> 或 <code><p></p>:日历单元格应保持扁平,CSS 用 display: flex 居中即可

      响应式断点下表格列宽塌陷问题

      原生 <table> 在小屏上不会自动换行,7 列挤在一起文字重叠,这不是“美化问题”,而是可访问性失效。不能靠 <code>table-layout: fixed 强撑宽度,得承认:纯表格在移动端就是不适用的。

      实际做法是用媒体查询把桌面端的 <table> 替换为语义等价的 <code><div> 布局,但保持相同 ARIA 标签(如 <code>role="grid"、aria-label="2024年5月日历"),确保屏幕阅读器仍能按行列导航。

      • 桌面端用 <table>,移动端用 <code><div role="grid"> + <code><div role="row"> + <code><div role="gridcell"> <li>禁用 <code>overflow-x: auto 滚动方案——它破坏键盘 tab 导航顺序,且 iOS Safari 对表格滚动支持差
      • 如果必须保留表格,至少给 <table> 加 <code>width: 100% 和 font-size: clamp(12px, 2.5vw, 16px) 缩放文字

        时区和本地化带来的日期偏移

        用 new Date(2024, 4, 1) 创建对象时,构造函数默认按本地时区解析,但服务器返回的 ISO 字符串如 "2024-05-01T00:00:00Z" 是 UTC 时间。两者混用会导致某些时区(如新加坡 +8)显示 4 月最后一天为 1 号。

        解决方法不是“统一转成 UTC”,而是明确所有日期操作都在同一时区上下文里进行:要么全用本地时间(适合纯前端日历),要么全用 UTC 时间(适合与后端 API 对接)。

        • 判断是否需要 UTC:若日历用于展示航班、会议等跨时区事件,用 new Date(Date.UTC(year, month, day))
        • 显示星期名称时别用 toLocaleDateString('zh-CN', { weekday: 'short' }) 直接调用——它依赖用户系统语言,应预设 locale 或由业务配置
        • 不要用 getMonth() 返回值直接当数组索引:它返回 0–11,而月份名数组通常按 1–12 排列,容易越界

        真正麻烦的不是画出格子,而是让每个格子里的数字既准确又可交互——日期计算、DOM 更新、无障碍支持、响应式切换,这四件事只要漏掉一个,用户就会在某个场景下卡住。

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML表格中怎么实现表头文字竖排

    如何设置HTML表格的固定宽度?TABLE-LAYOUT属性优化渲染

    如何利用HTML表格制作一份简易的报价单

    HTML表格th的scope属性怎么确保无障碍读取设备的规范兼容

    如何在 PHP 中正确遍历并显示 UNION 查询结果

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    html表格 html

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    上一篇:针对像素级设计还原过程中的HTML代码质量及样式嵌套审查

    下一篇:移动端弱网环境下HTML代码质量与容错性优化

    作者最新文章

    热门AI工具

    更多

    相关专题

    更多
    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    5055

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    2952

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    2610

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    2639

    5

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2023.08.11

    4579

    6

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    2023.08.11

    2601

    3

    html转txt
    html转txt

    html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.31

    2369

    3

    html文本框代码怎么写
    html文本框代码怎么写

    html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

    2023.09.01

    2168

    6

    HTML嵌入CSS样式的方法
    HTML嵌入CSS样式的方法

    HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.20

    2148

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    相关下载

    更多

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    HTML 代码实例
    HTML 代码实例

    共27课时 | 16.6万人学习

    GDB 17.2 官方文档集合
    GDB 17.2 官方文档集合

    共0课时 | 0人学习

    Bootstrap 入门安装配置
    Bootstrap 入门安装配置

    共0课时 | 0人学习

    最新文章

    更多