widgetsAB Cards
wb_sunny

时间与天气star精选

优雅的时间与天气卡片,基于高德API
verified最低支持版本
AB Admin ≥ 2.1.50
extension依赖插件
无(纯展示或只读本站数据)
person作者
LHL
event收录时间
2026-09-21 00:41
update最近更新
2026-09-21 23:05
visibility浏览 / 截图
23 次 · 49.4 KB

image效果截图

点击放大
时间与天气 截图

notes详细介绍

效果 时钟:大号展示型数字(MD3 display 级别)+ 秒数胶囊 + 日期与星期 + 按时段问候(凌晨/早上/上午/中午/下午/晚上),每秒刷新。 天气实况:天气图标(tonal 容器)+ 温度 + 天气现象 + 城市 + 风向风力 + 湿度 + 数据更新时间。 未来三天(可选):白天/夜间天气与高低温,三等分栅格。 设置:右上角 ⚙ 打开 MD3 对话框 —— 高德 Web 服务 Key、城市(城市名 **一键识别** adcode)、刷新间隔(5/10/30 分钟)、是否显示预报。 如何申请高德 Key? 1. 打开 <https://console.amap.com/dev/key/app>(高德开放平台 → 应用管理 → 我的应用)。 2. 创建应用 → 添加 Key → 服务平台选 Web 服务(不要选 Web 端(JS API),否则会报 `INVALID_USER_KEY`)。 3. 复制那串 32 位 Key。个人开发者每天有免费额度(实况+预报合计),本卡片每 10 分钟才请求一次,正常使用远低于额度。

code配置代码

<div class="abwc"><header class="abwc-head"><div class="abwc-clock"><div class="abwc-time"id="abwc-time">--:--</div><div class="abwc-sub"><span class="abwc-sec"id="abwc-sec">--</span><span class="abwc-date"id="abwc-date">正在获取时间…</span><span class="abwc-greet"id="abwc-greet"></span></div></div><div class="abwc-tools"><button class="abwc-iconbtn"type="button"id="abwc-refresh"title="刷新天气"aria-label="刷新天气"><span class="material-icons-round">refresh</span></button><button class="abwc-iconbtn"type="button"id="abwc-setup"title="设置"aria-label="设置"><span class="material-icons-round">settings</span></button></div></header><section class="abwc-weather"id="abwc-weather"></section><section class="abwc-forecast"id="abwc-forecast"hidden></section></div><style>.abwc{--abwc-ease:cubic-bezier(.2,0,0,1);display:flex;flex-direction:column;gap:16px;font-variant-numeric:tabular-nums}.abwc-head{display:flex;align-items:flex-start;gap:12px}.abwc-clock{flex:1;min-width:0}.abwc-time{font-size:clamp(40px,9vw,56px);line-height:1.05;font-weight:500;letter-spacing:-.5px;color:var(--md-primary)}.abwc-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;font-size:13px;color:var(--md-on-surface-variant)}.abwc-sec{min-width:36px;padding:3px 9px;border-radius:9999px;background:var(--md-surface-container-highest);font:500 13px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;text-align:center}.abwc-tools{display:flex;gap:4px;flex:none}.abwc-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--md-on-surface-variant);cursor:pointer;transition:background-color.2s var(--abwc-ease),transform.2s var(--abwc-ease)}.abwc-iconbtn:hover{background:var(--md-surface-container-high)}.abwc-iconbtn:active{transform:scale(.94)}.abwc-iconbtn:focus-visible{outline:2px solid color-mix(in srgb,var(--md-primary)55%,transparent);outline-offset:2px}.abwc-iconbtn.material-icons-round{font-size:20px}.abwc-iconbtn.is-busy.material-icons-round{animation:abwc-spin 1s linear infinite}.abwc-weather{min-height:96px}.abwc-hero{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:24px;background:var(--md-surface-container-high);background:color-mix(in srgb,var(--md-primary)12%,var(--md-surface-container-high));color:var(--md-on-surface)}.abwc-wicon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:20px;background:color-mix(in srgb,var(--md-primary)14%,transparent);color:var(--md-primary)}.abwc-wicon.material-icons-round{font-size:30px}.abwc-main{flex:1;min-width:0}.abwc-temp{font-size:34px;font-weight:600;line-height:1.05;letter-spacing:-.25px}.abwc-temp sup{margin-left:2px;top:-.55em;font-size:15px;font-weight:500;color:var(--md-on-surface-variant)}.abwc-cond{margin-top:2px;font-size:13px;color:var(--md-on-surface-variant);word-break:break-word}.abwc-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.abwc-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:9999px;background:var(--md-surface-container-high);color:var(--md-on-surface-variant);font-size:12.5px;font-weight:500}.abwc-chip.material-icons-round{font-size:16px;color:var(--md-primary)}.abwc-fc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.abwc-fc-day{padding:12px 8px;border:1px solid var(--md-outline-variant);border-radius:16px;background:var(--md-surface-container-high);text-align:center}.abwc-fc-label{font-size:12px;color:var(--md-on-surface-variant)}.abwc-fc-icon{margin:6px 0;color:var(--md-primary)}.abwc-fc-icon.material-icons-round{font-size:22px}.abwc-fc-temp{font-size:13px;font-weight:600}.abwc-fc-temp i{font-style:normal;font-weight:500;color:var(--md-on-surface-variant)}.abwc-skel{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:24px;background:var(--md-surface-container-low)}.abwc-skel span{display:block;height:14px;border-radius:8px;background:linear-gradient(90deg,var(--md-surface-container-high),var(--md-surface-container-highest),var(--md-surface-container-high));background-size:200%100%;animation:abwc-shimmer 1.4s linear infinite}.abwc-skel span:first-child{width:38%;height:30px}.abwc-skel span:nth-child(2){width:72%}.abwc-skel span:last-child{width:52%}.abwc-hint{font-size:12px;color:var(--md-on-surface-variant);margin:-4px 0 4px}.abwc-box{display:flex;flex-direction:column;gap:8px;margin-top:12px}.abwc-box[hidden]{display:none}.abwc-box.ab-ui-field{margin-top:0}.abwc-hero.is-fresh{animation:abwc-pop.45s var(--abwc-ease)both}@keyframes abwc-spin{to{transform:rotate(360deg)}}@keyframes abwc-shimmer{from{background-position:200%0}to{background-position:-200%0}}@keyframes abwc-pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(max-width:520px){.abwc-fc{grid-template-columns:1fr}.abwc-temp{font-size:30px}}@media(prefers-reduced-motion:reduce){.abwc-iconbtn,.abwc-hero.is-fresh,.abwc-skel span{animation:none;transition:none}}</style>
(function(){'use strict';if(typeof card.__abwcBoot==='function'){card.__abwcBoot();return}var CONFIG_KEY='weather-clock-config';var LIVE_KEY='weather-clock-live';var FC_KEY='weather-clock-forecast';var API_WEATHER='https://restapi.amap.com/v3/weather/weatherInfo';var API_DISTRICT='https://restapi.amap.com/v3/config/district';var API_IP='https://restapi.amap.com/v3/ip';var IP_TTL=24*60*60*1000;var WEEK=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];var DEFAULT_CFG={key:'',city:'',adcode:'',locate:'manual',ipAt:0,intervalMin:10,forecast:true};var el=ab.ui.el;var icon=ab.ui.icon;var cfg=pickCfg(null);var clockTimer=0;var liveTimer=0;var adcode='';function $(id){return card.querySelector('#'+id)}function pad(n){return(n<10?'0':'')+n}function say(text,tone){if(ab.notify)ab.notify(text,tone||'info')}function qs(v){return encodeURIComponent(String(v==null?'':v))}function pickCfg(raw){var out={},k;for(k in DEFAULT_CFG){if(Object.prototype.hasOwnProperty.call(DEFAULT_CFG,k))out[k]=DEFAULT_CFG[k]}if(raw&&typeof raw==='object'){if(raw.key)out.key=String(raw.key).trim();if(raw.city)out.city=String(raw.city).trim();if(raw.adcode)out.adcode=String(raw.adcode).trim();out.locate=(raw.locate==='ip')?'ip':'manual';out.ipAt=parseInt(raw.ipAt,10)||0;out.intervalMin=Math.max(5,parseInt(raw.intervalMin,10)||10);out.forecast=raw.forecast!==false}return out}function greet(h){if(h<5)return'夜深了,早点休息';if(h<9)return'早上好';if(h<12)return'上午好';if(h<14)return'中午好';if(h<18)return'下午好';if(h<23)return'晚上好';return'夜深了,早点休息'}function tick(){var d=new Date();var t=$('abwc-time'),s=$('abwc-sec'),dt=$('abwc-date'),g=$('abwc-greet');if(t)t.textContent=pad(d.getHours())+':'+pad(d.getMinutes());if(s)s.textContent=pad(d.getSeconds());if(dt)dt.textContent=d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate())+' '+WEEK[d.getDay()];if(g)g.textContent=greet(d.getHours())}tick();clockTimer=ab.interval(tick,1000);var cbSeq=0;function jsonp(url){return new Promise(function(resolve,reject){var name='__abwc'+(++cbSeq)+'_'+Date.now();var script=document.createElement('script');var settled=false;function cleanup(){try{delete window[name]}catch(e){window[name]=undefined}if(script.parentNode)script.parentNode.removeChild(script)}window[name]=function(data){settled=true;cleanup();resolve(data)};script.onerror=function(){if(!settled){cleanup();reject(new Error('网络请求失败'))}};script.src=url+(url.indexOf('?')<0?'?':'&')+'callback='+name;document.head.appendChild(script);ab.onCleanup(cleanup);ab.timeout(function(){if(!settled){cleanup();reject(new Error('请求超时'))}},8000)})}function getJSON(url){var viaFetch=(typeof window.fetch==='function')?window.fetch(url,{credentials:'omit'}).then(function(r){if(!r.ok)throw new Error('HTTP '+r.status);return r.json()}):Promise.reject(new Error('当前浏览器不支持 fetch'));return viaFetch.catch(function(){return jsonp(url)})}function amap(url){return getJSON(url).then(function(d){if(!d||String(d.status)!=='1')throw new Error((d&&d.info)||'接口返回异常');return d})}function hintOf(err){var msg=(err&&err.message)||'未知错误';if(/INVALID_USER_KEY|USER_KEY_PLATFORM_ERROR|INVALID_USER_SCODE|SERVICE_NOT_AVAILABLE/i.test(msg))return'Key 无效或不是「Web 服务」类型,请点 ⚙ 重新设置';if(/DAILY_QUERY_OVER_LIMIT|OVER_QUOTA|QUOTA/i.test(msg))return'高德接口今日额度已用完,明天再试';if(/INVALID_PARAMS|CITY_NOT_FOUND|INVALID_PARAM|NO_DATA/i.test(msg))return'城市代码不正确,请点 ⚙ 重新识别城市';if(/IP_LOCATE_FAILED/i.test(msg))return'按 IP 定位失败(境外 / 内网 IP 常见),请在 ⚙ 里改用手动城市';if(/超时/.test(msg))return'请求超时,稍后再试';if(/网络请求失败|HTTP /.test(msg))return'网络异常或跨域被拦截(已尝试 JSONP 兜底)';return msg}function ipLocate(key){return amap(API_IP+'?key='+qs(key)+'&output=JSON').then(function(d){var adcode=String(d.adcode==null?'':d.adcode).trim();var city=String(d.city==null?'':d.city).trim();var province=String(d.province==null?'':d.province).trim();if(!adcode&&!city&&!province)throw new Error('IP_LOCATE_FAILED');return{adcode:adcode,name:city||province,province:province}})}function saveIpCity(loc){cfg.adcode=loc.adcode||cfg.adcode;cfg.city=loc.name||cfg.city;cfg.locate='ip';cfg.ipAt=Date.now();return ab.data.save(CONFIG_KEY,cfg).catch(function(){})}function iconOf(weather){var w=String(weather||'');if(/雷/.test(w))return'flash_on';if(/雪|冰|冻/.test(w))return'ac_unit';if(/雨/.test(w))return'grain';if(/雾|霾|尘|沙/.test(w))return'blur_on';if(/风/.test(w))return'air';if(/阴/.test(w))return'cloud';if(/云/.test(w))return'wb_cloudy';if(/晴/.test(w))return'wb_sunny';return'thermostat'}function chip(iconName,text){var node=el('span','abwc-chip');node.appendChild(icon(iconName));node.appendChild(el('span',null,text));return node}function renderSkeleton(){var box=$('abwc-weather');if(!box)return;var sk=el('div','abwc-skel');sk.appendChild(el('span'));sk.appendChild(el('span'));sk.appendChild(el('span'));ab.ui.mount(box,[sk])}function renderError(text){var box=$('abwc-weather');if(!box)return;ab.ui.mount(box,[ab.ui.notice({icon:'cloud_off',tone:'danger',text:text})]);var tip=el('div','abwc-hint','天气暂时取不到,时钟不受影响。点 ⚙ 检查 Key / 城市,或点 ↻ 重试。');tip.style.marginTop='10px';box.appendChild(tip)}function renderNeedSetup(){var box=$('abwc-weather');if(!box)return;ab.ui.mount(box,[ab.ui.empty({icon:'cloud_queue',text:'还没有配置天气',hint:'填一次高德 Web 服务 Key,再选「手动城市」或「按访客 IP 自动定位」(Key 只存在你的站点数据表里)',onClick:openSetup})]);var wrap=el('div','abwc-chips');wrap.style.justifyContent='center';wrap.appendChild(ab.ui.button({text:'立即设置',icon:'settings',onClick:openSetup}));box.appendChild(wrap)}function renderLive(live,fresh){var box=$('abwc-weather');if(!box)return;var hero=el('div','abwc-hero'+(fresh?' is-fresh':''));var badge=el('span','abwc-wicon');badge.appendChild(icon(iconOf(live.weather)));hero.appendChild(badge);var main=el('div','abwc-main');var temp=el('div','abwc-temp',live.temperature==null?'--':String(live.temperature));temp.appendChild(el('sup',null,'°C'));main.appendChild(temp);var where=live.city||cfg.city||'';main.appendChild(el('div','abwc-cond',(live.weather||'—')+(where?' · '+where:'')));hero.appendChild(main);var chips=el('div','abwc-chips');if(live.winddirection)chips.appendChild(chip('air',live.winddirection+'风 '+(live.windpower||'-')+' 级'));if(live.humidity)chips.appendChild(chip('water_drop','湿度 '+live.humidity+'%'));if(live.reporttime)chips.appendChild(chip('schedule',String(live.reporttime).slice(11,16)+' 更新'));ab.ui.mount(box,[hero,chips])}function renderForecast(casts){var box=$('abwc-forecast');if(!box)return;if(!casts||!casts.length){box.hidden=true;box.innerHTML='';return}var labels=['今天','明天','后天'];var grid=el('div','abwc-fc');for(var i=0;i<casts.length&&i<3;i++){var c=casts[i]||{};var day=el('div','abwc-fc-day');day.appendChild(el('div','abwc-fc-label',labels[i]||String(c.date||'')));var ic=el('div','abwc-fc-icon');ic.appendChild(icon(iconOf(c.dayweather)));day.appendChild(ic);var t=el('div','abwc-fc-temp',(c.daytemp||'-')+'°');t.appendChild(el('i',null,' / '+(c.nighttemp||'-')+'°'));day.appendChild(t);day.appendChild(el('div','abwc-fc-label',c.dayweather||''));grid.appendChild(day)}ab.ui.mount(box,[grid]);box.hidden=false}function liveUrl(){return API_WEATHER+'?key='+qs(cfg.key)+'&city='+qs(cfg.adcode||cfg.city)+'&extensions=base&output=JSON'}function fcUrl(){return API_WEATHER+'?key='+qs(cfg.key)+'&city='+qs(cfg.adcode||cfg.city)+'&extensions=all&output=JSON'}function loadForecast(force){if(!cfg.forecast){renderForecast(null);return Promise.resolve()}var ready=force?ab.data.clearCached(FC_KEY):Promise.resolve();return ready.then(function(){return ab.data.getCached(FC_KEY,30*60*1000,function(){return amap(fcUrl()).then(function(d){var f=d.forecasts&&d.forecasts[0];return(f&&f.casts)||[]})})}).then(renderForecast).catch(function(){renderForecast(null)})}function loadLive(force){if(!cfg.key){renderNeedSetup();return}var btn=$('abwc-refresh');if(btn)btn.classList.add('is-busy');var ready=force?Promise.all([ab.data.clearCached(LIVE_KEY),ab.data.clearCached(FC_KEY)]):Promise.resolve();ready.then(function(){return ab.data.getCached(LIVE_KEY,Math.max(5,cfg.intervalMin)*60*1000,function(){return amap(liveUrl()).then(function(d){return(d.lives&&d.lives[0])||null})})}).then(function(live){if(btn)btn.classList.remove('is-busy');if(!live){renderError('接口没有返回实况天气');return}renderLive(live,!!force)}).catch(function(err){if(btn)btn.classList.remove('is-busy');renderError(hintOf(err))});loadForecast(force)}function openSetup(){if(typeof ab.ui.dialog!=='function'){say('当前插件版本不支持 ab.ui.dialog,请升级 AB Admin','warn');return}adcode=cfg.adcode||'';var ipAdcode='';var ipName='';var keyField=ab.ui.field({label:'高德 Web 服务 Key',value:cfg.key,placeholder:'32 位字母数字串',hint:'仅保存在你自己的站点数据表里,不会写进卡片配置'});var locateField=ab.ui.field({label:'城市定位方式',options:[{value:'manual',label:'手动输入城市'},{value:'ip',label:'按访客 IP 自动定位'}],value:cfg.locate==='ip'?'ip':'manual',hint:'「按 IP」走的是高德 IP 属地接口,浏览器直连时拿到的就是访问者自己的属地',onChange:function(v){var isIp=(v==='ip');syncLocate(isIp);if(isIp)doIpLocate()}});var cityField=ab.ui.field({label:'城市(城市名或 adcode)',value:cfg.city||cfg.adcode,placeholder:'例如:北京 / 110000'});var tip=el('div','abwc-hint',adcode?'当前城市代码:'+adcode:'未识别城市代码');var resolveBtn=ab.ui.button({text:'识别城市代码',icon:'my_location',tone:'tonal',onClick:function(){var k=keyField.getValue().trim();var kw=cityField.getValue().trim();if(!k){say('请先填 Key 再识别城市','warn');return}if(!kw){say('请先填城市名','warn');return}adcode='';tip.textContent='识别中…';amap(API_DISTRICT+'?key='+qs(k)+'&keywords='+qs(kw)+'&subdistrict=0&output=JSON').then(function(d){var first=d.districts&&d.districts[0];if(!first||!first.adcode)throw new Error('没有找到这个城市');adcode=String(first.adcode);tip.textContent='已识别:'+first.name+'('+adcode+')'}).catch(function(err){tip.textContent='识别失败:'+hintOf(err)})}});var manualBox=el('div','abwc-box',null);manualBox.appendChild(cityField);manualBox.appendChild(resolveBtn);manualBox.appendChild(tip);var ipTip=el('div','abwc-hint',cfg.locate==='ip'&&cfg.adcode?'上次定位:'+(cfg.city||cfg.adcode)+'('+cfg.adcode+')· '+ab.format.relative(cfg.ipAt):'点下面的按钮,用你当前的公网 IP 查一次属地');var ipBtn=ab.ui.button({text:'按当前 IP 定位',icon:'wifi_tethering',tone:'tonal',onClick:function(){doIpLocate()}});var ipBox=el('div','abwc-box',null);ipBox.appendChild(ipBtn);ipBox.appendChild(ipTip);function doIpLocate(){var k=keyField.getValue().trim();if(!k){ipTip.textContent='请先填上面的 Key(IP 定位也要用它)';return}ipAdcode='';ipName='';ipTip.textContent='正在按 IP 定位…';ipLocate(k).then(function(loc){ipAdcode=loc.adcode;ipName=loc.name;ipTip.textContent='定位到:'+(loc.name||'未知地区')+(loc.adcode?'('+loc.adcode+')':'')+(loc.adcode?'':' · 没拿到城市代码,请改用手动城市')}).catch(function(err){ipTip.textContent='定位失败:'+hintOf(err)})}function syncLocate(isIp){manualBox.hidden=isIp;ipBox.hidden=!isIp}var intervalField=ab.ui.field({label:'天气刷新间隔',options:[{value:'5',label:'每 5 分钟'},{value:'10',label:'每 10 分钟'},{value:'30',label:'每 30 分钟'}],value:String(cfg.intervalMin)});var fcSwitch=ab.ui.switch({label:'显示未来三天预报',checked:!!cfg.forecast});syncLocate(cfg.locate==='ip');if(cfg.locate==='ip'&&(!cfg.adcode||(Date.now()-cfg.ipAt)>60*60*1000))doIpLocate();var dlg=ab.ui.dialog({title:'时间天气卡片设置',icon:'settings',body:[keyField,locateField,manualBox,ipBox,intervalField,fcSwitch],actions:[{text:'取消',tone:'default'},{text:'保存',icon:'check',tone:'primary',onClick:function(){var k=keyField.getValue().trim();if(!k){say('请填写高德 Key','warn');return}var isIp=locateField.getValue()==='ip';var city=cityField.getValue().trim();if(!isIp&&!city&&!adcode){say('请填写城市,或先点「识别城市代码」','warn');return}var next={key:k,locate:isIp?'ip':'manual',city:isIp?(ipName||cfg.city):city,adcode:isIp?(ipAdcode||cfg.adcode):(adcode||cfg.adcode),ipAt:isIp?Date.now():0,intervalMin:parseInt(intervalField.getValue(),10)||10,forecast:!!fcSwitch.getValue()};var save=function(){ab.data.save(CONFIG_KEY,next).then(function(){cfg=pickCfg(next);say('设置已保存','success');restart();loadLive(true)}).catch(function(err){say('保存失败:'+((err&&err.message)||'未知错误'),'error')})};if(isIp&&!next.adcode){say('正在按 IP 定位…','info');ipLocate(k).then(function(loc){next.adcode=loc.adcode||'';next.city=loc.name||next.city;if(!next.adcode){say('IP 定位没拿到城市代码,请在 ⚙ 里改用手动城市','warn');return}save()}).catch(function(err){say('IP 定位失败:'+hintOf(err)+',请在 ⚙ 里改用手动城市','warn')});return}save()}}]})}function loadConfig(){return ab.data.get(CONFIG_KEY,null).then(function(saved){cfg=pickCfg(saved);if(liveTimer){clearInterval(liveTimer);liveTimer=0}if(!cfg.key){renderNeedSetup();return}var needLocate=cfg.locate==='ip'&&(!cfg.adcode||(Date.now()-cfg.ipAt)>IP_TTL);return(needLocate?ipLocate(cfg.key).then(saveIpCity).catch(function(){return false}):Promise.resolve(false)).then(function(){loadLive(false);liveTimer=ab.interval(function(){loadLive(true)},Math.max(5,cfg.intervalMin)*60*1000)})}).catch(function(err){renderNeedSetup();say('读取卡片配置失败:'+((err&&err.message)||'未知错误'),'error')})}function boot(){tick();renderSkeleton();return loadConfig()}function restart(){if(clockTimer)clearInterval(clockTimer);clockTimer=ab.interval(tick,1000);if(liveTimer)clearInterval(liveTimer);liveTimer=ab.interval(function(){loadLive(true)},Math.max(5,cfg.intervalMin)*60*1000)}function bind(){var r=$('abwc-refresh');var s=$('abwc-setup');if(r)r.addEventListener('click',function(){say('正在刷新天气…','info');loadLive(true)});if(s)s.addEventListener('click',openSetup)}card.__abwcBoot=boot;clockTimer=ab.interval(tick,1000);bind();boot()})();

download_for_offline如何导入

Typecho 后台 → 控制台 → 插件 → AB Admin(AdminBeautify)→「概要页卡片设置」
找到 自定义卡片 区域,打开总开关(默认关闭)
点 添加卡片,按下表填写:
图标 wb_sunny
卡片标题 时间与天气
HTML 内容 见上方「HTML 内容」标签页
JavaScript 见上方「JavaScript」标签页
点右下角 保存设置,回到概要页即可看到卡片(顺序可在排序列表里拖动调整)

shield安全信息

error 带告警项(已人工确认)
database数据来源
未读取额外数据
public访问的站外域名
publicrestapi.amap.com
widgets使用的内置组件
ab.ui.elab.ui.iconab.ui.mountab.ui.noticeab.ui.emptyab.ui.buttonab.ui.dialogab.ui.fieldab.ui.switch
warning
卡片 JavaScript 会在你的后台页面里执行。本站已做敏感信息、站外请求与越权操作的自动扫描 + 人工审核,但仍请在使用前自行阅读上方代码;发现可疑卡片请到 GitHub 反馈。