就是这个样的粗爆,手搓一个计算器:排卵计算器

       作为程序员,没有合适的工具,就得手搓一个,PC端,移动端均可适用。废话不多说,直接上代码。

HTML:

<div class="container">
<div class="calculator">
<label for="last-period">上次月经开始日期:</label> 
<input id="last-period" type="date"> 
<label for="cycle-length">月经周期(天数):</label> 
<input id="cycle-length" type="number" placeholder="输入您的月经周期天数">
<button onclick="calculateOvulation()">计算</button>
</div>
<div class="result align-left">
<p class="align-center">计算结果</p>
<p id="ovulation-period"></p>
<p id="safe-period-before"></p>
<p id="safe-period-after"></p>
<p id="menstrual-period"></p>
<p id="explanation"></p>
</div>
</div>

JS:

function calculateOvulation() {
    const lastPeriodDate = new Date(document.getElementById('last-period').value);
    const cycleLength = parseInt(document.getElementById('cycle-length').value);

    if (!lastPeriodDate || isNaN(cycleLength)) {
        document.getElementById('explanation').textContent = "请输入有效的日期和周期长度。";
        return;
    }

    // 计算排卵日(下次月经前14天)
    const ovulationDate = new Date(lastPeriodDate);
    ovulationDate.setDate(lastPeriodDate.getDate() + cycleLength - 14);

    // 计算安全期和月经期
    const safePeriodBeforeStart = new Date(lastPeriodDate);
    const safePeriodBeforeEnd = new Date(ovulationDate);
    safePeriodBeforeEnd.setDate(ovulationDate.getDate() - 19);

    const safePeriodAfterStart = new Date(ovulationDate);
    safePeriodAfterStart.setDate(ovulationDate.getDate() + 1);

    const safePeriodAfterEnd = new Date(lastPeriodDate);
    safePeriodAfterEnd.setDate(lastPeriodDate.getDate() + cycleLength - 1);

    const menstrualPeriodStart = new Date(lastPeriodDate);
    const menstrualPeriodEnd = new Date(lastPeriodDate);
    menstrualPeriodEnd.setDate(lastPeriodDate.getDate() + 4);

    const options = { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long' };

    document.getElementById('ovulation-period').textContent = `排卵期: ${ovulationDate.toLocaleDateString('zh-CN', options)}。`;
    document.getElementById('safe-period-before').textContent = `排卵前安全期: ${safePeriodBeforeStart.toLocaleDateString('zh-CN', options)} - ${safePeriodBeforeEnd.toLocaleDateString('zh-CN', options)}。`;
    document.getElementById('safe-period-after').textContent = `排卵后安全期: ${safePeriodAfterStart.toLocaleDateString('zh-CN', options)} - ${safePeriodAfterEnd.toLocaleDateString('zh-CN', options)}。`;
    document.getElementById('menstrual-period').textContent = `月经期: ${menstrualPeriodStart.toLocaleDateString('zh-CN', options)} - ${menstrualPeriodEnd.toLocaleDateString('zh-CN', options)}。`;

    document.getElementById('explanation').textContent = 
        "排卵期一般在下次月经来潮前的14天左右," +
        "排卵前安全期是从上次月经结束到排卵日前5天," +
        "排卵后安全期是从排卵日到下次月经开始。";
}

CSS:

.container {
    background-color: white;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    max-width: 400px;
    width: 100%;
    text-align: center;
}

.calculator {
    margin-bottom: 20px;
}

label {
    display: block;
    margin: 10px 0 5px;
    font-weight: bold;
    color: #555;
        font-size: 18px;
}

input {
 width: 100%;
    padding: 8px;
    margin-bottom: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
}

button {
    background-color: #4CAF50;
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    margin-top: 10px;
    font-size: 16px;
     width: 100%;
        display: block;
}

button:hover {
    background-color: #45a049;
}

p {
    font-size: 18px;
    color: #333;
    margin-top: 10px;
}

  线上运行,可以直接打开:排卵计算器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值