使用 HTML和 CSS 编写 一个 日历界面

在这篇文章中,我将向大家展示如何使用HTML和CSS创建一个简单的日历界面。这个日历界面可以显示两个连续的月份,并高亮显示今天的日期。

步骤一:创建HTML结构

首先,我们需要创建一个基本的HTML结构。我们将使用<div>元素来创建日历的容器,并使用<div>元素来表示每个月的日历。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>日历界面</title>
    <style>
        .calendar-container {
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 20px;
        }
        .calendar {
            border: 1px solid #ccc;
            margin: 10px;
            padding: 10px;
        }
        .calendar-header {
            text-align: center;
            font-size: 20px;
            margin-bottom: 10px;
        }
        .calendar-grid {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 5px;
        }
        .calendar-cell {
            width: 40px;
            height: 40px;
            display: flex;
            justify-content: center;
            align-items: center;
            border: 1px solid #ccc;
        }
        .today {
            background-color: #00f;
            color: #fff;
            border-radius: 50%;
        }
    </style>
</head>
<body>
    <div class="calendar-container">
        <div class="calendar">
            <div class="calendar-header">2024年7月</div>
            <div class="calendar-grid">
                <div class="calendar-cell">日</div>
                <div class="calendar-cell">一</div>
                <div class="calendar-cell">二</div>
                <div class="calendar-cell">三</div>
                <div class="calendar-cell">四</div>
                <div class="calendar-cell">五</div>
                <div class="calendar-cell">六</div>
                <!-- 这里填充7月的日期 -->
                <div class="calendar-cell">30</div>
                <div class="calendar-cell">1</div>
                <div class="calendar-cell">2</div>
                <div class="calendar-cell">3</div>
                <div class="calendar-cell">4</div>
                <div class="calendar-cell">5</div>
                <div class="calendar-cell">6</div>
                <div class="calendar-cell">7</div>
                <div class="calendar-cell">8</div>
                <div class="calendar-cell">9</div>
                <div class="calendar-cell">10</div>
                <div class="calendar-cell">11</div>
                <div class="calendar-cell">12</div>
                <div class="calendar-cell">13</div>
                <div class="calendar-cell">14</div>
                <div class="calendar-cell">15</div>
                <div class="calendar-cell">16</div>
                <div class="calendar-cell">17</div>
                <div class="calendar-cell">18</div>
                <div class="calendar-cell">19</div>
                <div class="calendar-cell">20</div>
                <div class="calendar-cell">21</div>
                <div class="calendar-cell">22</div>
                <div class="calendar-cell">23</div>
                <div class="calendar-cell">24</div>
                <div class="calendar-cell">25</div>
                <div class="calendar-cell">26</div>
                <div class="calendar-cell">27</div>
                <div class="calendar-cell">28</div>
                <div class="calendar-cell">29</div>
                <div class="calendar-cell">30</div>
                <div class="calendar-cell">31</div>
            </div>
        </div>
        <div class="calendar">
            <div class="calendar-header">2024年8月</div>
            <div class="calendar-grid">
                <div class="calendar-cell">日</div>
                <div class="calendar-cell">一</div>
                <div class="calendar-cell">二</div>
                <div class="calendar-cell">三</div>
                <div class="calendar-cell">四</div>
                <div class="calendar-cell">五</div>
                <div class="calendar-cell">六</div>
                <!-- 这里填充8月的日期 -->
                <div class="calendar-cell">1</div>
                <div class="calendar-cell">2</div>
                <div class="calendar-cell">3</div>
                <div class="calendar-cell">4</div>
                <div class="calendar-cell">5</div>
                <div class="calendar-cell">6</div>
                <div class="calendar-cell">7</div>
                <div class="calendar-cell">8</div>
                <div class="calendar-cell">9</div>
                <div class="calendar-cell">10</div>
                <div class="calendar-cell">11</div>
                <div class="calendar-cell">12</div>
                <div class="calendar-cell">13</div>
                <div class="calendar-cell">14</div>
                <div class="calendar-cell">15</div>
                <div class="calendar-cell">16</div>
                <div class="calendar-cell">17</div>
                <div class="calendar-cell">18</div>
                <div class="calendar-cell">19</div>
                <div class="calendar-cell">20</div>
                <div class="calendar-cell">21</div>
                <div class="calendar-cell">22</div>
                <div class="calendar-cell">23</div>
                <div class="calendar-cell">24</div>
                <div class="calendar-cell">25</div>
                <div class="calendar-cell">26</div>
                <div class="calendar-cell">27</div>
                <div class="calendar-cell">28</div>
                <div class="calendar-cell">29</div>
                <div class="calendar-cell">30</div>
                <div class="calendar-cell">31</div>
            </div>
        </div>
    </div>
    <script>
        // 获取当前日期
        const today = new Date();
        const todayDate = today.getDate();
        const todayMonth = today.getMonth() + 1; // 月份从0开始
        const todayYear = today.getFullYear();

        // 高亮显示今天的日期
        const cells = document.querySelectorAll('.calendar-cell');
        cells.forEach(cell => {
            if (parseInt(cell.textContent) === todayDate) {
                cell.classList.add('today');
            }
        });
    </script>
</body>
</html>

代码解析

  1. HTML结构:我们创建了一个包含两个日历的容器,每个日历都有一个标题和一个网格布局,用于显示日期。
  2. CSS样式:我们使用Flexbox布局来对齐日历容器,并使用Grid布局来排列每个月的日期。我们还为今天的日期添加了一个特殊的样式。
  3. JavaScript代码:我们获取当前日期,并在日历中找到对应的日期单元格,然后为其添加一个特殊的CSS类,以高亮显示今天的日期。

步骤二:添加CSS样式

接下来,我们需要添加一些CSS样式来美化日历界面。我们将使用Flexbox来布局日历容器,并使用Grid布局来排列每个月的日期。

<style>
    .calendar-container {
        display: flex;
        justify-content: center;
        align-items: center;
        margin: 20px;
    }
    .calendar {
        border: 1px solid #ccc;
        margin: 10px;
        padding: 10px;
    }
    .calendar-header {
        text-align: center;
        font-size: 20px;
        margin-bottom: 10px;
    }
    .calendar-grid {
        display: grid;
        grid-template-columns: repeat(7, 1fr);
        gap: 5px;
    }
    .calendar-cell {
        width: 40px;
        height: 40px;
        display: flex;
        justify-content: center;
        align-items: center;
        border: 1px solid #ccc;
    }
    .today {
        background-color: #00f;
        color: #fff;
        border-radius: 50%;
    }
</style>

代码解析

  1. .calendar-container:使用Flexbox布局来对齐日历容器。
  2. .calendar:为每个月的日历添加边框、外边距和内边距。
  3. .calendar-header:设置日历标题的文本对齐方式、字体大小和下边距。
  4. .calendar-grid:使用Grid布局来排列每个月的日期,设置每行7个单元格,并添加间距。
  5. .calendar-cell:设置日期

步骤三:使用JavaScript高亮显示今天的日期

最后,我们将使用JavaScript来高亮显示今天的日期。我们将获取当前日期,并在日历中找到对应的日期单元格,然后为其添加一个特殊的CSS类。

<script>
    // 获取当前日期
    const today = new Date();
    const todayDate = today.getDate();
    const todayMonth = today.getMonth() + 1; // 月份从0开始
    const todayYear = today.getFullYear();

    // 高亮显示今天的日期
    const cells = document.querySelectorAll('.calendar-cell');
    cells.forEach(cell => {
        if (parseInt(cell.textContent) === todayDate) {
            cell.classList.add('today');
        }
    });
</script>

代码解析

  1. 获取当前日期:我们使用new Date()获取当前日期,并分别获取日期、月份和年份。
  2. 高亮显示今天的日期:我们使用querySelectorAll选择所有的日期单元格,然后遍历这些单元格,检查其内容是否与今天的日期匹配。如果匹配,则为该单元格添加today类,从而高亮显示。

整体代码

以下是完整的HTML、CSS和JavaScript代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>日历界面</title>
    <style>
        .calendar-container {
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 20px;
        }
        .calendar {
            border: 1px solid #ccc;
            margin: 10px;
            padding: 10px;
        }
        .calendar-header {
            text-align: center;
            font-size: 20px;
            margin-bottom: 10px;
        }
        .calendar-grid {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 5px;
        }
        .calendar-cell {
            width: 40px;
            height: 40px;
            display: flex;
            justify-content: center;
            align-items: center;
            border: 1px solid #ccc;
        }
        .today {
            background-color: #00f;
            color: #fff;
            border-radius: 50%;
        }
    </style>
</head>
<body>
    <div class="calendar-container">
        <div class="calendar">
            <div class="calendar-header">2024年7月</div>
            <div class="calendar-grid">
                <div class="calendar-cell">日</div>
                <div class="calendar-cell">一</div>
                <div class="calendar-cell">二</div>
                <div class="calendar-cell">三</div>
                <div class="calendar-cell">四</div>
                <div class="calendar-cell">五</div>
                <div class="calendar-cell">六</div>
                <!-- 这里填充7月的日期 -->
                <div class="calendar-cell">30</div>
                <div class="calendar-cell">1</div>
                <div class="calendar-cell">2</div>
                <div class="calendar-cell">3</div>
                <div class="calendar-cell">4</div>
                <div class="calendar-cell">5</div>
                <div class="calendar-cell">6</div>
                <div class="calendar-cell">7</div>
                <div class="calendar-cell">8</div>
                <div class="calendar-cell">9</div>
                <div class="calendar-cell">10</div>
                <div class="calendar-cell">11</div>
                <div class="calendar-cell">12</div>
                <div class="calendar-cell">13</div>
                <div class="calendar-cell">14</div>
                <div class="calendar-cell">15</div>
                <div class="calendar-cell">16</div>
                <div class="calendar-cell">17</div>
                <div class="calendar-cell">18</div>
                <div class="calendar-cell">19</div>
                <div class="calendar-cell">20</div>
                <div class="calendar-cell">21</div>
                <div class="calendar-cell">22</div>
                <div class="calendar-cell">23</div>
                <div class="calendar-cell">24</div>
                <div class="calendar-cell">25</div>
                <div class="calendar-cell">26</div>
                <div class="calendar-cell">27</div>
                <div class="calendar-cell">28</div>
                <div class="calendar-cell">29</div>
                <div class="calendar-cell">30</div>
                <div class="calendar-cell">31</div>
            </div>
        </div>
        <div class="calendar">
            <div class="calendar-header">2024年8月</div>
            <div class="calendar-grid">
                <div class="calendar-cell">日</div>
                <div class="calendar-cell">一</div>
                <div class="calendar-cell">二</div>
                <div class="calendar-cell">三</div>
                <div class="calendar-cell">四</div>
                <div class="calendar-cell">五</div>
                <div class="calendar-cell">六</div>
                <!-- 这里填充8月的日期 -->
                <div class="calendar-cell">1</div>
                <div class="calendar-cell">2</div>
                <div class="calendar-cell">3</div>
                <div class="calendar-cell">4</div>
                <div class="calendar-cell">5</div>
                <div class="calendar-cell">6</div>
                <div class="calendar-cell">7</div>
                <div class="calendar-cell">8</div>
                <div class="calendar-cell">9</div>
                <div class="calendar-cell">10</div>
                <div class="calendar-cell">11</div>
                <div class="calendar-cell">12</div>
                <div class="calendar-cell">13</div>
                <div class="calendar-cell">14</div>
                <div class="calendar-cell">15</div>
                <div class="calendar-cell">16</div>
                <div class="calendar-cell">17</div>
                <div class="calendar-cell">18</div>
                <div class="calendar-cell">19</div>
                <div class="calendar-cell">20</div>
                <div class="calendar-cell">21</div>
                <div class="calendar-cell">22</div>
                <div class="calendar-cell">23</div>
                <div class="calendar-cell">24</div>
                <div class="calendar-cell">25</div>
                <div class="calendar-cell">26</div>
                <div class="calendar-cell">27</div>
                <div class="calendar-cell">28</div>
                <div class="calendar-cell">29</div>
                <div class="calendar-cell">30</div>
                <div class="calendar-cell">31</div>
            </div>
        </div>
    </div>
    <script>
        // 获取当前日期
        const today = new Date();
        const todayDate = today.getDate();
        const todayMonth = today.getMonth() + 1; // 月份从0开始
        const todayYear = today.getFullYear();
 
        // 高亮显示今天的日期
        const cells = document.querySelectorAll('.calendar-cell');
        cells.forEach(cell => {
            if (parseInt(cell.textContent) === todayDate) {
                cell.classList.add('today');
            }
        });
    </script>
</body>
</html>

效果图:

结论

通过以上步骤,我们成功创建了一个简单的日历界面,并高亮显示了今天的日期。你可以根据需要进一步扩展和美化这个日历界面,例如添加月份切换功能、日期选择功能等。希望这篇文章对你有所帮助!

如果你有任何问题或需要进一步的帮助,请随时告诉我。

其他文章推荐

如果你对 Python 编程感兴趣,以下是一些推荐的文章:

  1. 使用 python 创建一个 Web 计算器 (基于Python Flask)-CSDN博客
  2. 使用 Python 创建个人记账应用-CSDN博客
  3. 在 Python 中以 特定格式 打印 所有 ASCII字符-CSDN博客
  4. 使用 pt5 制作 文件查询工具-CSDN博客
  5. 使用PyQt5和 QtChart 可视化图表 创建多界面应用_pyqt设计两个页面-CSDN博客

希望这些推荐的文章对你有帮助,祝你编程愉快!如果你有任何其他问题,请随时告诉我。😊

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIY若依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值