Flippio vocabulary illustration
Study the full HSK1 word list
Search characters, pinyin, or meanings
500 words
(function(){ // load vocab data then evaluate the page script (stripped of the inlined VW array) function loadData(src, cb){ var s=document.createElement('script'); s.src=src; s.onload=cb; s.onerror=cb; document.head.appendChild(s); } loadData('assets/vocab-data.js', function(){ try{ // Build a small renderer script that uses the external VW variable. var app = []; app.push("function normalizeQuery(s){return String(s||'').normalize('NFD').replace(/[\\u0300-\\u036f]/g,'').toLowerCase();}"); app.push("VW.forEach(function(w){var plain=normalizeQuery(w.p); w._search=[w.c,w.p,plain,w.m,w.cat].join(' ').toLowerCase();});"); app.push("var cf='';var cs='';"); app.push("function setFilter(cat,btn){cf=cat;document.querySelectorAll('.chip').forEach(function(c){c.classList.remove('on')}); if(btn) btn.classList.add('on'); render();}"); app.push("function filterWords(){cs=normalizeQuery(document.getElementById('searchBox').value); render();}"); app.push("function speak(t,ev){t=String(t||'').slice(0,200); if(ev) ev.stopPropagation(); if(!('speechSynthesis' in window)) return; speechSynthesis.cancel(); var u=new SpeechSynthesisUtterance(t); u.lang='zh-CN'; u.rate=0.82; speechSynthesis.speak(u);}"); app.push("function render(){ var list=document.getElementById('wordList'); var filtered=VW.filter(function(w){ if(cf&&w.cat!==cf) return false; if(!cs) return true; return w._search.indexOf(cs)!==-1; }); document.getElementById('countBar').textContent=filtered.length+' words'; if(filtered.length===0){ list.innerHTML='
No words found.
'; return;} list.innerHTML=filtered.map(function(w){ return '
'+ '
'+(w.e||'')+'
' + '
'+w.c+'
'+w.p+'
'+(w.m||'')+'
' + '
#'+(w.n||'')+'
'+((w.cat||'').split(' ')[0])+'
🔊
'; }).join(''); }"); app.push("document.getElementById('searchBox').oninput = filterWords; document.querySelectorAll('.chip').forEach(function(b){ b.addEventListener('click', function(){ var cat = b.getAttribute('data-cat') || b.textContent; setFilter(cat,b); }); });"); app.push("if(typeof VW!=='undefined') render();"); var s = document.createElement('script'); s.textContent = app.join('\n'); document.head.appendChild(s); }catch(e){console.error('vocab loader error',e);} }); })();