Skip to content

Commit 11b53f8

Browse files
committed
refactor: unify vertical panel styles and fix BudouX layout
1 parent f485c73 commit 11b53f8

1 file changed

Lines changed: 51 additions & 56 deletions

File tree

demo.html

Lines changed: 51 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@
2929
line-height: 1.6;
3030
}
3131

32+
/* Font loading: show card backgrounds immediately, text after fonts load */
33+
.vertical-panel { color: transparent; transition: color 0.2s; }
34+
.vertical-panel > * { opacity: 0; transition: opacity 0.2s; }
35+
.playground-output > * { opacity: 0; transition: opacity 0.2s; }
36+
.fonts-ready .vertical-panel { color: var(--color-text); }
37+
.fonts-ready .vertical-panel > * { opacity: 1; }
38+
.fonts-ready .playground-output > * { opacity: 1; }
39+
3240
/* Hero */
3341
.hero {
3442
text-align: center;
@@ -185,16 +193,16 @@
185193
margin-top: 0.5rem;
186194
}
187195

188-
/* Vertical showcase */
189-
.vertical-showcase {
196+
/* Vertical panels (shared by vertical showcase + budoux demo) */
197+
.panel-row {
190198
display: flex;
191199
gap: 2rem;
192200
justify-content: center;
193201
}
194-
.vertical-col {
202+
.panel-col {
195203
text-align: center;
196204
}
197-
.vertical-col-label {
205+
.panel-label {
198206
font-family: monospace;
199207
font-size: 0.75rem;
200208
color: var(--color-text-muted);
@@ -258,6 +266,17 @@
258266
color: var(--color-text-muted);
259267
}
260268

269+
/* BudouX code block */
270+
.budoux-code pre {
271+
background: var(--color-accent);
272+
color: #e0e0e0;
273+
padding: 1.25rem;
274+
border-radius: 8px;
275+
font-size: 0.85rem;
276+
line-height: 1.6;
277+
overflow-x: auto;
278+
}
279+
261280
/* Footer */
262281
footer {
263282
text-align: center;
@@ -272,41 +291,14 @@
272291
}
273292
footer a:hover { border-color: var(--color-text); }
274293

275-
/* BudouX demo */
276-
.budoux-demo {
277-
display: flex;
278-
gap: 2rem;
279-
justify-content: center;
280-
margin-bottom: 1.5rem;
281-
}
282-
.budoux-col { text-align: center; }
283-
.budoux-label {
284-
font-family: monospace;
285-
font-size: 0.75rem;
286-
color: var(--color-text-muted);
287-
text-transform: uppercase;
288-
letter-spacing: 0.05em;
289-
margin-bottom: 0.75rem;
290-
}
291-
.budoux-code pre {
292-
background: var(--color-accent);
293-
color: #e0e0e0;
294-
padding: 1.25rem;
295-
border-radius: 8px;
296-
font-size: 0.85rem;
297-
line-height: 1.6;
298-
overflow-x: auto;
299-
}
300-
301294
@media (max-width: 768px) {
302295
.hero { padding: 3rem 1.5rem 2rem; }
303296
.hero h1 { font-size: 1.8rem; }
304297
.container { padding: 0 1.5rem; }
305298
.playground { grid-template-columns: 1fr; }
306299
.mode-grid { grid-template-columns: 1fr 1fr; }
307300
.usecases { grid-template-columns: 1fr; }
308-
.vertical-showcase { flex-wrap: wrap; }
309-
.budoux-demo { flex-wrap: wrap; }
301+
.panel-row { flex-wrap: wrap; }
310302
}
311303
</style>
312304
<script type="module" src="./dist/webcomponent.js"></script>
@@ -377,21 +369,21 @@ <h2>変換モード</h2>
377369
<section>
378370
<h2>縦書き表示</h2>
379371
<p class="subtitle">writing-mode: vertical-rl と組み合わせた実際の表示</p>
380-
<div class="vertical-showcase">
381-
<div class="vertical-col">
382-
<div class="vertical-col-label">tcy (縦中横)</div>
372+
<div class="panel-row">
373+
<div class="panel-col">
374+
<div class="panel-label">tcy (縦中横)</div>
383375
<div class="vertical-panel">
384376
<kandachi-ja tcy>令和8年3月20日、第42回全国大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。</kandachi-ja>
385377
</div>
386378
</div>
387-
<div class="vertical-col">
388-
<div class="vertical-col-label">standard</div>
379+
<div class="panel-col">
380+
<div class="panel-label">standard</div>
389381
<div class="vertical-panel">
390382
<kandachi-ja mode="standard">令和8年3月20日、第42回全国大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。</kandachi-ja>
391383
</div>
392384
</div>
393-
<div class="vertical-col">
394-
<div class="vertical-col-label">positional</div>
385+
<div class="panel-col">
386+
<div class="panel-label">positional</div>
395387
<div class="vertical-panel">
396388
<kandachi-ja mode="positional">令和8年3月20日、第42回全国大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。</kandachi-ja>
397389
</div>
@@ -431,18 +423,22 @@ <h3>契約書・領収書</h3>
431423
</div>
432424
</section>
433425

434-
<!-- budoux integration -->
426+
<!-- BudouX integration -->
435427
<section>
436428
<h2>BudouX 連携</h2>
437429
<p class="subtitle">kandachi × <a href="https://github.com/google/budoux" style="color: var(--color-text); border-bottom: 1px solid var(--color-border);">BudouX</a> — 漢数字変換 + 自然な改行位置で、本格的な縦書きWebを実現</p>
438-
<div class="budoux-demo">
439-
<div class="budoux-col">
440-
<div class="budoux-label">kandachi only</div>
441-
<div class="vertical-panel" id="budoux-kandachi-only"></div>
430+
<div class="panel-row" style="margin-bottom: 1.5rem;">
431+
<div class="panel-col">
432+
<div class="panel-label">kandachi only</div>
433+
<div class="vertical-panel">
434+
<kandachi-ja tcy>令和8年3月20日、第42回全国大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。</kandachi-ja>
435+
</div>
442436
</div>
443-
<div class="budoux-col">
444-
<div class="budoux-label">kandachi + BudouX</div>
445-
<div class="vertical-panel" id="budoux-combined"></div>
437+
<div class="panel-col">
438+
<div class="panel-label">kandachi + BudouX</div>
439+
<div class="vertical-panel" id="budoux-combined">
440+
<kandachi-ja tcy>令和8年3月20日、第42回全国大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。</kandachi-ja>
441+
</div>
446442
</div>
447443
</div>
448444
<div class="budoux-code">
@@ -466,6 +462,10 @@ <h2>BudouX 連携</h2>
466462
import { format } from './dist/index.js';
467463
import { toKanji } from './dist/index.js';
468464

465+
// Wait for fonts before rendering to prevent TCY layout shift
466+
await document.fonts.ready;
467+
document.body.classList.add('fonts-ready');
468+
469469
// Mode comparison
470470
document.getElementById('mc-standard').textContent = toKanji(12500, 'standard');
471471
document.getElementById('mc-positional').textContent = toKanji(2026, 'positional');
@@ -500,21 +500,16 @@ <h2>BudouX 連携</h2>
500500

501501
update();
502502

503-
// BudouX integration demo
504-
const budouxText = '令和8年3月20日、第42回全国縦書き大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。';
505-
const kandachiOnly = document.getElementById('budoux-kandachi-only');
503+
// BudouX integration demo - upgrade right panel when loaded
504+
const budouxText = '令和8年3月20日、第42回全国大会が開催される。参加費は12500円。参加者は1500人を超え、会場の収容人数3000人の半数に達した。';
506505
const combined = document.getElementById('budoux-combined');
507506

508-
// kandachi only
509-
kandachiOnly.innerHTML = `<kandachi-ja tcy>${budouxText}</kandachi-ja>`;
510-
511-
// kandachi + budoux
512-
import('https://esm.sh/budoux').then(async (mod) => {
507+
import('https://esm.sh/budoux').then((mod) => {
513508
const parser = mod.loadDefaultJapaneseParser();
514509
const converted = format(budouxText, { tcy: true });
515510
combined.innerHTML = parser.translateHTMLString(converted);
516511
}).catch(() => {
517-
combined.innerHTML = '<span style="font-size:0.85rem;color:var(--color-text-muted);">BudouX の読み込みに失敗しました</span>';
512+
// Keep kandachi-only output as fallback
518513
});
519514
</script>
520515
</body>

0 commit comments

Comments
 (0)