世界を動かす技術を、日本語で。

98.css

2026年7月24日原文(jdan.github.io)

概要

98.css は、Windows 98風の UI を再現できる CSSライブラリアクセシビリティセマンティックHTML の重視。 JavaScript不要 で、どんなフロントエンドフレームワークにも対応。 カスタマイズ が簡単で、外観を保ちながらスタイル調整が可能。 インストール方法主要コンポーネント の使い方を解説。

98.css:Windows 98風UIデザインシステム

  • 98.css は、Windows 98の クラシックなUI を再現するための CSSライブラリ
  • GitHub で公開されており、 unpkgnpm から簡単に導入可能。
  • JavaScriptを含まず、HTML要素にCSSのみを適用。
  • ReactVanilla JavaScript など、主要なフロントエンドフレームワークと互換性。
  • セマンティックHTML の利用が推奨され、アクセシビリティを重視。

導入方法

  • 最速導入は unpkg からのインポート。
    • 例:<link rel="stylesheet" href="https://unpkg.com/98.css">
  • npm でのインストールも可能。
    • コマンド:npm install 98.css
  • GitHubリリースページ からのダウンロードも対応。

基本方針・カスタマイズ

  • ボタン入力フィールド など、HTML要素の外観を98風に変換。
  • padding などのスタイルは、外観を保ったまま自由に上書き可能。
  • アクセシビリティ のため、ラベルやaria属性の適切な付与が必須。

主要コンポーネントの使い方

ボタン(Button)

  • <button><input type="submit"><input type="reset"> で利用。
  • デフォルトで 75px×23px、12pxの横padding、立体的なボーダー。
  • defaultクラス で「Enterキーで実行されるデフォルトアクション」表現。
  • クリック時はボーダーが沈み込み、 disabled はラベルが淡色化。
  • フォーカス時 は点線の内側ボーダーで強調。

チェックボックス(Checkbox)

  • <input type="checkbox"><label> をセットで使用。
  • ラベルの for属性 とinputの id を必ず対応させる。
  • checked / disabled 属性で状態を制御。
  • field-rowクラス で複数の入力要素を一列に整列。

ラジオボタン(OptionButton)

  • <input type="radio"><label> をセットで使用。
  • name属性 を共通にしてグループ化、1つのみ選択可能。
  • checked / disabled 属性で状態管理。
  • field-rowクラス で整列。

グループボックス(GroupBox)

  • <fieldset> で囲み、 legend でラベルを追加可能。
  • field-rowクラス で内部の要素を整列。

テキストボックス(TextBox)

  • <input type="text"><textarea> で利用。
  • <label> とセット、 for属性 で対応。
  • field-rowfield-row-stackedクラス で横並び・縦並びを選択。
  • disabledvalue属性 で状態・デフォルト値を設定。

スライダー(Slider)

  • <input type="range"> で実装、 min/max/value で範囲指定。
  • has-box-indicatorクラス でインジケーターを四角形に変更可能。
  • is-verticalクラス で縦型スライダーも実現。

ドロップダウン(Dropdown)

  • <select><option> で実装。
  • selected属性 で初期選択項目を指定。

ウィンドウ(Window)

  • title-bartitle-bar-texttitle-bar-controls の3クラスでタイトルバーを構成。
  • aria-label でボタンの役割(Close/Minimize/Maximize/Restore/Help)を明示。
  • ボタンのスタイリングクラスで多言語対応・アクセシビリティ確保。

アクセシビリティとセマンティックHTMLの推奨

  • 全てのインタラクティブ要素ラベルaria属性 を付与。
  • 補助技術 との互換性を重視。
  • キーボード操作ラベルクリック での操作性向上。

カスタマイズ性と拡張性

  • padding など、個別要素のカスタマイズが容易。
  • CSSのみ で完結しているため、導入・拡張がシンプル。
  • 他のCSSフレームワーク との併用も可能。

98.css は、レトロなWindows 98風UIを現代のWebアプリで手軽に再現したい開発者に最適なツール。 アクセシブルでセマンティックなHTMLを推奨しつつ、カスタマイズ性も高いデザインシステム。

Hackerたちの意見

2024年の人気 (471ポイント, 93コメント) https://news.ycombinator.com/item?id=42056918 2022年 (606ポイント, 182コメント) https://news.ycombinator.com/item?id=33310554 2020年 (838ポイント, 211コメント) https://news.ycombinator.com/item?id=22940564

2028年にまた会おうね!

前回これが話題になったとき、みんな私のコレクションを評価してくれたよ。 https://alexbsoft.github.io/win95.css/ Windows 95 https://bootstra386.com/ 1980年代のウェブサイト https://botoxparty.github.io/XP.css/ Windows XP https://code.divshot.com/geo-bootstrap/ Geocities https://cs16.samke.me/ Counter Strike 1.6 https://edwardtufte.github.io/tufte-css/ Edward Tufte https://jdan.github.io/98.css/ Windows 98 https://khang-nd.github.io/7.css/ Windows 7 https://micah5.github.io/PSone.css/ PlayStation One https://nostalgic-css.github.io/NES.css/ NES https://sakofchit.github.io/system.css/ Apple System https://snes-css.sadlative.com/ SNES https://thesimscss.inbn.dev/ The Sims

自分のウェブサイトの一つでこれを使いたいんだけど、合うものが思いつかないんだよね。それと、XFCE-winxp-tcにも注目!これを使うとLinuxがWindows XPみたいに見えるんだ。Chicago95はみんな知ってるけど、このプロジェクトは2004年の雰囲気を再現するのに最高だよ。[0] https://github.com/rozniak/xfce-winxp-tc

ずっと不満なのは、これらのxfce/gtkなどのテーマが、実際にはピクセルパーフェクトじゃないこと。そう主張してるのにね。法的な問題があるのかはわからないけど。

いや、インターネットだし。フィットする必要はないよ。やりたいと思うだけでいいんだ。

みんな、TUIs用のCSSフレームワークって作れないかな?

lipglossはかなり近いよ: https://github.com/charmbracelet/lipgloss

こんなの? https://kristopolous.github.io/BOOTSTRA.386/v2.3.1/

Textual? https://textual.textualize.io/

これは純粋にCSSだけで、JavaScriptは使ってないのがすごい!Win98のビベルド風の見た目を再現するためのボーダーやボックスシャドウのトリックが本当に上手くできてるね!

細かいことだけど、マルチロウタブの例でタブがクリックしたときにランダムに位置を変えないのはおかしいよね。

Hacker Newsで議論の続きを見る