跳转到内容

模板:生物联赛倒计时:修订间差异

来自osm&bio
Magezeya留言 | 贡献
无编辑摘要
Magezeya留言 | 贡献
无编辑摘要
第1行: 第1行:
<noinclude>这是用于显示距离下一届全国生物学奥林匹克竞赛联赛天数的模板。使用{{Countdown}}模板计算天数。</noinclude>
<noinclude>全国生物学奥林匹克竞赛联赛倒计时模板</noinclude>
<includeonly>
<includeonly>
<!-- 定义未来25年(2025-2050)全国生物联赛日期(五月第二个星期日) -->
<!-- 确定目标日期 -->
{{#arraydefine:bio_dates
{{#vardefine:target_date|
  | 2025-05-11, 2026-05-10, 2027-05-09, 2028-05-14, 2029-05-13, 2030-05-12
    {{#ifexpr: {{#time:U}} <= {{#time:U|2025-05-11}} | 2025-05-11
  | 2031-05-11, 2032-05-09, 2033-05-08, 2034-05-14, 2035-05-13, 2036-05-11
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2026-05-10}} | 2026-05-10
  | 2037-05-10, 2038-05-09, 2039-05-08, 2040-05-13, 2041-05-12, 2042-05-11
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2027-05-09}} | 2027-05-09
  | 2043-05-10, 2044-05-08, 2045-05-14, 2046-05-13, 2047-05-12, 2048-05-10
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2028-05-14}} | 2028-05-14
  | 2049-05-09, 2050-05-08
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2029-05-13}} | 2029-05-13
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2030-05-12}} | 2030-05-12
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2031-05-11}} | 2031-05-11
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2032-05-09}} | 2032-05-09
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2033-05-08}} | 2033-05-08
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2034-05-14}} | 2034-05-14
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2035-05-13}} | 2035-05-13
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2036-05-11}} | 2036-05-11
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2037-05-10}} | 2037-05-10
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2038-05-09}} | 2038-05-09
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2039-05-08}} | 2039-05-08
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2040-05-13}} | 2040-05-13
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2041-05-12}} | 2041-05-12
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2042-05-11}} | 2042-05-11
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2043-05-10}} | 2043-05-10
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2044-05-08}} | 2044-05-08
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2045-05-14}} | 2045-05-14
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2046-05-13}} | 2046-05-13
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2047-05-12}} | 2047-05-12
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2048-05-10}} | 2048-05-10
    | {{#ifexpr: {{#time:U}} <= {{#time:U|2049-05-09}} | 2049-05-09
    | 2050-05-08 <!-- 默认值 -->
    }}}}}}}}}}}}}}}}}}}}}}}}}
}}
}}


<!-- 获取当前年份 (YYYY) -->
<!-- 获取目标年份 -->
{{#vardefine:current_year|{{#time:Y}}}}
 
<!-- 初始化目标日期变量 -->
{{#vardefine:target_date|}}
 
<!-- 循环查找下一个联赛日期 -->
{{#forargs:
  | arg | val | @@@@ | <!-- 占位符,实际不需要参数名 -->
  | {{#arrayindex:date_candidate|bio_dates|{{#var:loopindex}}}}
  {{#if: {{#var:target_date}} | | <!-- 如果还没找到target_date,则继续检查 -->
      {{#ifexpr:
        ( {{#time:U|{{#var:date_candidate}}}} >= {{#time:U}} ) OR <!-- 候选日期是未来或今天 -->
        ( {{#time:U|{{#var:date_candidate}}|Y}} > {{#var:current_year}} ) <!-- 或者候选日期的年份已超过当前年(说明当前年联赛已过) -->
        | {{#vardefine:target_date|{{#var:date_candidate}}}} <!-- 找到!赋值给target_date -->
      }}
  }}
}}
 
<!-- 确保如果循环结束还没找到(理论上应该不会,但保险起见),使用数组最后一个日期 -->
{{#if: {{#var:target_date}} | | {{#vardefine:target_date|{{#arrayindex:last_date|bio_dates|-1}}}} }}
 
<!-- 获取目标日期的年份用于显示 -->
{{#vardefine:target_year|{{#time:Y|{{#var:target_date}}}}}}
{{#vardefine:target_year|{{#time:Y|{{#var:target_date}}}}}}


<!-- 华丽倒计时显示框 -->
<!-- 简约样式倒计时 -->
<div style="
<div style="
   position:relative;
   position: relative;
   width:320px; max-width:90%;
   max-width: 320px;
   margin:2em auto;
   margin: 1.5em auto;
   padding:2.5em 1.5em 2em;
   padding: 1.8em 1.2em;
   border-radius:18px;
   border-radius: 12px;
   background: linear-gradient(135deg, #0b1928 0%, #1a3a4a 50%, #2c5d73 100%);
   background: linear-gradient(to bottom, #2c3e50, #1a2a3a);
   color:#fff;
   color: #ecf0f1;
   font-family:'Segoe UI', Arial, Helvetica, sans-serif;
   font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
   text-align:center;
   text-align: center;
   box-shadow:
   box-shadow:  
     0 0 15px #00f5ff,
     0 4px 8px rgba(0, 0, 0, 0.3),
    0 0 30px #00f5ff44,
     inset 0 0 10px rgba(0, 0, 0, 0.2);
    inset 0 0 8px #00000088,
   border: 1px solid rgba(100, 150, 200, 0.3);
     inset 0 0 15px rgba(0, 245, 255, 0.2);
   overflow: hidden;
   overflow:hidden;
   z-index:0;
">
">
  <!-- 扫描光 (更柔和) -->
  <div style="
    position:absolute; top:-50%; left:-50%;
    width:200%; height:200%;
    background: linear-gradient(90deg, transparent 0%, rgba(0, 245, 255, 0.05) 50%, transparent 100%);
    animation: scan 8s linear infinite;
    pointer-events:none; z-index:-1;
  "></div>
  <!-- 动态粒子背景 (可选,增加科技感) -->
  <div style="
    position:absolute; top:0; left:0; width:100%; height:100%;
    background-image: radial-gradient(rgba(0, 245, 255, 0.1) 1px, transparent 1px);
    background-size: 20px 20px;
    pointer-events:none; z-index:-1;
  "></div>
  <style>
    @keyframes scan {
      0% { transform: translateX(-100%); }
      100% { transform: translateX(100%); }
    }
    @keyframes pulse {
      0%, 100% { transform: scale(1); text-shadow: 0 0 5px #fff, 0 0 10px #00f5ff; }
      50% { transform: scale(1.05); text-shadow: 0 0 15px #fff, 0 0 20px #00f5ff, 0 0 30px #00f5ff; }
    }
    .countdown-number {
      animation: pulse 3s ease-in-out infinite;
    }
  </style>
   <!-- 标题 -->
   <!-- 标题 -->
   <div style="
   <div style="
     font-size:24px; font-weight:700; letter-spacing:1.5px; margin-bottom:1em;
     font-size: 1.3em;
     color: #a8fff6; /* 更亮的青蓝色 */
    font-weight: 600;
     text-shadow: 0 0 5px rgba(0, 245, 255, 0.7);
    margin-bottom: 0.8em;
     color: #3498db;
     letter-spacing: 0.5px;
   ">
   ">
     全国生物联赛倒计时
     全国生物联赛倒计时
   </div>
   </div>
 
 
   <!-- 年份显示 -->
   <!-- 年份信息 -->
   <div style="
   <div style="
     font-size:18px; font-weight:600; margin-bottom:0.5em;
     font-size: 0.95em;
     color: #c7fcff;
    margin-bottom: 0.5em;
     color: #bdc3c7;
   ">
   ">
     距离 {{#var:target_year}} 年全国生物联赛还有
     距离 {{#var:target_year}} 年联赛还有
   </div>
   </div>
 
 
   <!-- 倒计时数字 (核心) -->
   <!-- 倒计时数字 -->
   <div style="
   <div style="
     font-size:48px; font-weight:900;
     font-size: 2.5em;
    color: #ffffff;
    font-weight: 700;
     padding: 0.3em 0.8em;
     padding: 0.3em 0.5em;
     border-radius: 14px;
     margin: 0.3em auto;
     background: rgba(10, 25, 40, 0.6);
     background: rgba(30, 40, 55, 0.7);
    border-radius: 8px;
     display: inline-block;
     display: inline-block;
     box-shadow:
     color: #ecf0f1;
      inset 0 0 10px rgba(0, 0, 0, 0.7),
    text-shadow: 0 0 6px rgba(52, 152, 219, 0.7);
       0 0 15px rgba(0, 245, 255, 0.5);
    box-shadow:
    border: 2px solid rgba(0, 245, 255, 0.4);
       inset 0 0 8px rgba(0, 0, 0, 0.6),
    margin: 0.5em 0;
      0 0 10px rgba(52, 152, 219, 0.4);
    position: relative;
    z-index: 1;
   ">
   ">
     <span class="countdown-number">
     {{Countdown|{{#var:target_date}}|text=天}}
      {{Countdown|{{#var:target_date}}|text=天}} <!-- 调用核心倒计时模板 -->
    </span>
   </div>
   </div>
 
 
   <!-- 底部装饰/备注 -->
   <!-- 底部说明 -->
   <div style="
   <div style="
     font-size:12px; margin-top:1.5em; opacity:0.8;
     font-size: 0.75em;
     color: #a0e4f0;
    margin-top: 1.2em;
    color: #7f8c8d;
    border-top: 1px solid rgba(127, 140, 141, 0.2);
     padding-top: 0.5em;
   ">
   ">
     日期依据:每年五月第二个星期日
     日期:每年五月第二个星期日
   </div>
   </div>
</div>
</div>
</includeonly>
</includeonly>

2025年8月21日 (四) 18:14的版本

全国生物学奥林匹克竞赛联赛倒计时模板