Hacker News new | past | comments | ask | show | jobs | submit login
98.css – design system for building faithful recreations of Windows 98 UIs (jdan.github.io)
838 points by bennettfeely on April 21, 2020 | hide | past | favorite | 207 comments

Hey man, if you're looking for the fonts I had them on a similar thing I done a while ago. Only normal size unfortunately https://github.com/padraigfl/packard-belle/tree/master/src/_... Cant remember where I sourced them from but it's probably in the code somewhere, the MSSansSerif ones are pixel perfect as far as I'm aware. It outputted CSS to be used independently but it was very much a secondary concern, pretty sure I'd be the only person who knows how to use it without backtracking from the react bits https://github.com/padraigfl/packard-belle/blob/master/css/w... the data-uris might be useful, will have a look through your issues to see if I can help with anything!

Here's the attempt at a Windows 98 recreation I done with it feel free to take whatever from it:


Tried doing a design system thing too but got lazy:


Beautiful work, thanks so much :) I'll keep poking at fonts and see what I can learn https://github.com/jdan/98.css/issues/10

I love that we arrived at the ~same solution using inset shadows for the buttons. Makes me feel validated.

genuinely was the whole reason I wound up doing it tbh!

Will take the font discussion over there

Take a look at WiseJ. You can actually program fully-fledged WinForms.NET applications for the browser. They have a Vista theme, but not Win98.

This looks so good, especially the fake monitor effects

Thanks! Funnily that bit caused big issues for most my friends I showed it too, was definitely a case where rigidly straining to try and be _authentic_ clashed with the way most people remember things. There's an option to turn it off, I think (maybe not on mobile)

Stole that filter off codepen mind, nowhere near that clever... this one but toned down a bit https://codepen.io/lbebber/pen/XJRdrV

I can't believe how intensely functional the UI design of windows 95/98 was when looking back, and I say this as someone who intensely hates windows overall - but credit where it's due.

Only when using it now is it clear how well they minimized ambiguity and cognitive load... everything is so frickin obvious. Contrast that with modern aesthetically obsessed UIs, ever ambiguous, lack of clear distinctions not in both spatial boundaries and UI states - it's a constant guessing game for the user, never certain about the outcome of an interaction, giving you this distracting sense of unease rather than just focusing on whats behind the UI.

I don't get it when people people use strong descriptors like "unease" and "jarring" when describing UIs. I don't think I've ever had a UI that made me feel fearful for my life/psychological well-being like that.

It's subconscious, if you don't try to notice you wont, instead you will just stop using things or dislike using things without knowing why specifically - or more subtle still, you will not be as efficient in those programs... The UI is inbetween what you are trying to interact with, so if it doesn't quite work right then the emotions are going to be more subtle and hard to differentiate because it's not your main focus.

You are more likely to intuitively get this once you have some experience attempting to design effective UIs (and actually trying to care about it).

that's really gorgeous. I find windows 95 aesthetics a master piece. I'm not gonna lie, I thought about windows 95 when I was creating FOS, my Fake Operational System "framework".

I'm thinking about refactoring it and I'll may incorporate windows color scheme to it. Here's the link if you wanna see what I am talking about.


Fashion is cyclical. At one point people will get bored of these ambiguous modern UI with hidden fields and gestures, and made of 50 shades of light grey that only a calibrated display can render with any discernable contrast. And we will rediscover the merit of clear and explicit UIs, and Apple will claim it just invented it!

I wouldn’t be surprised :) The Windows 95 aesthetic is already back into fashion, I see it a lot on flyers, web art… just not yet in computer applications! I guess that’s a matter of time. Check out the flyer for this party: https://highclouds.org/highclouds-online-antivirus-party-mag...

They used vectors, looks like the Windows 95 aesthetics that was so connected to pixel survives this transition quite well!

> already back into fashion

That seems more like retro/throwback fashion (which is always a thing, in every era) than the fundamental principles of that aesthetic being incorporated into modern design (which is what I would typically consider actually being "in fashion").

Still, nice to consider we're at the point where that's what we're framing as retro. No longer is it System 1 or CRT terminals.

> The Windows 95 aesthetic is already back into fashion

It's certainly big in vaporwave and, to some extent, synthwave. Obviously both genres of music but also, and particularly the former, very strong aesthetics.

That's vaporwave, a specific aesthetic style, and it's quite different from Win98 design making a mainstream comeback :p

That's later than Windows 95 - maybe 98 or 2000. Windows 95 didn't support gradient titlebars.

Gradient titlebars were the killer feature for Windows 98.

Some of us replaced our GDI.EXE, GDI32.DLL, SHELL.DLL, etc and installed TweakUI.exe to get those Windows 98 features a year or so earlier....

Then again, I was a Memphis beta tester (legitimately, not the "I found these rars on a warez site" variety of "beta tester") So I "enjoyed" some of those features pretty early on.

Haiku OS and Gnome have such a different feeling when I use them.

Haiku has this delightful vibe to it, I can't explain.

Gnome evokes the feeling of shoving my eyes through a cheese-grater and then being gaslighted about the usefulness of every UI convenience I've come to take for granted.

That will be really nice, since it will benefit from high DPI and of course much better displays.

I don't know, Windows 95 looked crude even during its day. Functional, but not pleasant. I guess Brutalist would be the term? As soon as there was the ability to skin it, people tried to veer away the default look, with Mac-like styles being a common alternative.

People probably have rose-tinted nostalgia for the 95 era because of the nightmare that followed: Windows XP :)

First my father upgrade our PC to Windows 95, coming from Windows 3.1 I thought it looked gorgeous. Some time passes by and my father come home with a Windows 95 Plus CD. Yep, that was the real deal. Lots of themes with different color schemes and sounds. I particularly remember the "mistery" theme. I could just sit there and look at it for hours.


Yeah Plus is one of my favorite memories of Windows too, which happened around the same time I discovered drivers to let me see more than 256 colors for the first time :)

95 and XP both had good scroll bars. XP styling was pretty good for its era. Modern day scroll bars are atrocious on a lot of toolkits.

> XP styling was pretty good for its era.

XP was skinned like a very tacky Fischer Price toy, with garish colors and oversized elements that would have been more at home on a touchscreen. I don't think anyone called it a good theme unsarcastically. Why do we even need always visible scroll bars? They just take screen space and billions of people do fine without them on Macs and mobile OSes.

> Why do we even need always visible scroll bars? They just take screen space and billions of people do fine without them on Macs and mobile OSes.

Don't get me started.

Pros of a proper always-present scrollbar with appropriately-styled thumb:

- It indicates that the thing you're viewing even is scrollable. - You can see at once where you are in a document, and how large it is relative to your viewport. - It offers a convenient UI to scroll in both small or large amounts, or scroll to the very top or bottom. For lots of uses the scroll wheel on your mouse is a substitute, but certainly not for everything.


- It takes a tiny bit of screen real estate - It offends some people's esthetics taste, I guess

Yet weirdly, even with its "oversized" elements a typical Windows XP dialog still managed to present far more information on the screen than the corresponding Windows 10 dialog.

Almost like the removal of scrollbars had nothing to do with saving space.

> very tacky Fischer Price toy

As in "something even a child could use"? Indeed

> Why do we even need always visible scroll bars?

To know how long the page is, to know what state we are BEFORE we interact with it, to know that there is no such a thing as "above the fold" or other nonsense, etc.

Now allow me to ask you, with no intention to sound like an ass: why would you hide bars apart from saving 20px (which I assume was Windows' default, but let's say 100px for discussion' sake)?

The unnecessary lack of visible scroll bars is super annoying to me, too. UI fashions at the expense of clarity. And let’s not even mention scrolljacking...

> To know how long the page is

Why? How often the first thing you do is look at the scroll bar and close a document because it's too short or too long?

If you're gonna read it you'll read it regardless of its length.

If you want to do anything else, like printing, you'll see the document size.

> to know what state we are BEFORE we interact with it

Why? If you open a new document you'll be at the top.

It's almost always immediately obvious that there would be more text.

If it's a previously opened document then you may be in the position you were in when you last opened it. In which case, you would remember that you're not at the beginning or end, and again it's usually immediately obvious that you're not at the beginning or end.

We come down to these facts:

- There's almost NO case that's ALWAYS improved by having always visible bars.

- Hidden bars always save screen space for more content and reduced clutter.

- Literally billions of people are fine with hidden bars (iOS, Android, Mac)

- If you need to see scroll bars, there's an option, at least on Mac.

Optional scroll bars are win/win.

>> To know how long the page is

> Why? How often the first thing you do is look at the scroll bar and close a document because it's too short or too long?

> If you're gonna read it you'll read it regardless of its length.

Something short, looking remotely interesting, I'll probably read in full. Something long, I'll probably skim to see if there's anything interesting buried in there. If I'm reading it completely, glancing at the scroll bar tells me where I am in the document so it tells me if the document is reaching its conclusion, or perhaps just going on a side note.

If you read a book, don't you first see how thick it is, and while reading sometimes watch how far in the book you are?

>> to know what state we are BEFORE we interact with it

> Why? If you open a new document you'll be at the top.

A bit later, when I have read a page or two, how far have I advanced? How much more is there to come, or not?

> It's almost always immediately obvious that there would be more text.

It's most certainly not always immediately obvious. And even when it is, it is very useful to know how much more text (or other content).

> - There's almost NO case that's ALWAYS improved by having always visible bars.

Perhaps not. But there lots of cases that are almost always improved by proper scroll bars.

> - Hidden bars always save screen space for more content and reduced clutter.

A tiny amount, certainly on today's screens.

> - If you need to see scroll bars, there's an option.

Where? I mean, are we talking about UX design in general, or do you have an explicit implementation in mind where you can optionally enable scroll bars? I don't think I've ever seen such an option, and certainly not easily accessible.

> If I'm reading it completely, glancing at the scroll bar tells me where I am in the document so it tells me if the document is reaching its conclusion, or perhaps just going on a side note.

You'll see the hidden scrollbars when you're reading through something anyway.

> A bit later, when I have read a page or two, how far have I advanced?

You'll see the hidden scrollbars as you scroll through the pages to begin with.

> do you have an explicit implementation in mind where you can optionally enable scroll bars? I don't think I've ever seen such an option, and certainly not easily accessible.

It's right there in Mac general preferences, defaulting to visible if you use a non-Apple mouse.

I have heard this criticism so many times since Luna, and almost every single time I’ve noticed that Fisher-Price is misspelled by the critic. How can you trust someone like that?

Now that we have touch gestures we don’t really need visible scroll bars anymore do we? Just the little position indicator that pops up while scrolling.

What if you want to know the relative length of a page without scrolling first?

What if it's one of those webpages with a full height hero as the first element and no indicator you can actually scroll?

What if I want to click and drag the scroll to a specific location but have to take wild flailing guesses at where the scrollbar actually is because it keeps going invisible?

There’s always obscure use cases like this. You could go on forever listing individual people’s wants and you’d end up with a Homer car.

We design interfaces for the many first, and keep them as simple as possible but not simpler.

An always visible scroll bar or indicator is conceptually simpler than one that disappears randomly.

Knowing that a view is scrollable and there's more content to see is absolutely not an obscure edge case but a basic accessibility feature.

Relevant past discussion: https://news.ycombinator.com/item?id=20951580

Also relevant, what happens when the user doesn't realize more content is available: https://news.ycombinator.com/item?id=21353920

Well I just subjectively disagree - as apparently do the legions of professional experts at multiple distinct companies who research user interaction and design these interfaces.

I'm convinced designers have since long overthrown human-machine interaction experts, and usability consistently went down in the search for what's visually appealing and cleaner. I particularly blame Apple as a trend-setter in this, along with everyone that dumbly followed the fashion. No appeal to authority will ever convince me that disappearing scroll indicators are good for me, as I've been burned by them and I see less able people around me having ever increasing difficulty navigating modern interfaces thanks to similar innovations.

The "professional experts" are not interested in usability. They care only about sales and/or engagement. You can see this in every consumer product, not just software.

> An always visible scroll bar or indicator is conceptually simpler than one that disappears randomly.

An always visible scroll bar takes up a good chunk of screen space when you have multiple of them, and it's easy to develop intuition for what's scrollable and what isn't, just like we know what's right-clickable and what isn't.

It should be an option and it is, at least on Macs.

Knowing how long a document is, and whereabouts your current view is, seems pretty fundamental.

You may as well argue against page numbers in books.

You just scroll a tiny bit and you can see. Doesn't need to on the screen all the time, taking up space, distracting from the content which is what I care about, rather than whizz-bang user-interface elements.

Me asking myself "how long is this article" before I start reading it is a distraction? Too bad, I can't help but want to know. I could've learned that instantly by unconsciously glancing at the scroll indicator, but instead I have to move the whole content down for it to appear (possibly with a whizz-bang animation, no less), introducing friction and further distracting me from the content. Good job, I guess.

I don't know what you tell you - most people don't think about user interfaces like this. As we can clearly tell by people not designing them like this anymore.

As far as I'm concerned, the people designing modern user interface styles are not doing it for my benefit.

They're doing it to sell adverts (removing the boundaries between content, forms and advertising), track where I'm looking (he's opened the scroll bar! our content is engaging/boring!), adopt fashions to make their competitors appear dated and justify their own careers.

More than that, it's totally adversarial. I don't think the interface on a typical website is just sloppy or badly designed; it's designed to hamper access to information in a very sophisticated way, in order to prevent people from getting what they are looking for and leaving, but at the same time keeping them on the hook with the perception they are almost there.

If I were to find a causal relation, it would be the opposite: people not expecting affordances such as scroll indicators would be a result of designers hiding them in the first place.

Most user interfaces are not designed any more with any intent to provide what's best for the user, because they are part of a product being sold to corporations/advertisers.

There are margins on the screen 95% of the time, it's a perfect place for a tiny 1-3px scroll indicator.

> You may as well argue against page numbers in books.

Actually, yes, when was the last time you looked at a page number in an e-book? They don't make sense anyway when you can resize the reader.

>Actually, yes, when was the last time you looked at a page number in an e-book? Every time I read an ebook, I look at the page numbers. I would be frustrated without knowing where I am or how much longer I have to go

Actually, they very much do:

1. As a relative marker of a current position.

2. As an absolute number when your ebook/reader screws up saving its state.

1. Is solved by "N Pages left in chapter" which is more useful than "Page N"

2. There is no "absolute number" of pages on a e-reader app or device because the window or font size can change, changing all the page numbers. You can have 100 pages or 200 pages.

1. It's also solved by X/Y where X: page number, Y: total pages.

2. Most users read from fullscreen readers on their phones or ebooks, so the window size doesn't really change. I also strongly advice setting on a font for a particular book and stick to it. From my POV (unbacked by science) it helps with recall. If you don't change the font or other layout settings, the "pages" retain their numeration.

> 1. It's also solved

So you agree that there's an alternative solution to page numbers, but you want to go back to page numbers?

> 2. Most users read from fullscreen readers on their phones or ebooks, so the window size doesn't really change.

Font sizes can change, changing the number of pages.

> So you agree that there's an alternative solution to page numbers, but you want to go back to page numbers? Yes, and I never had any reason to go away from them so I never did. > Font sizes can change, changing the number of pages. Fonts don't do it themselves, though.

> We design interfaces for the many first, and keep them as simple as possible but not simpler.

The many being able bodied, literate, touch-device-carrying people? I am not sure interfaces should be designed like that.

Even Apple-designed software on Apple devices doesn't always have hints that an area is scrollable, and users missing features as a result. And in other ecosystems, doing that reliably is even harder, given the variation between devices. Always having a system-provided scroll indicator by default solves that universally.

I think it's really the NeXTSTEP aesthetic.

...or OSF/Motif aesthetic.

Yes it truly is. But Microsoft perfected it.

Author here! Thanks for all the nice comments (and helpful bug reports). This idea has been in the back of my mind for ~2 years now but I recently got a wave of motivation and decided to ride it - and here we are. Happy to answer any Qs :)

Hey, might want to check out this comment in regards help with the fonts:


Fun work! Thanks for sharing.

I was somewhat reminded of Wt [1], and I still wish that were open source. Also reminded a bit of Blazor [2].

[1] https://www.webtoolkit.eu/widgets/layout/

[2] https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=as...

I think the Text input field doesn’t match the rest.

On iOS text and textarea are rounded. Not sure if you can override that with css.

You can get around that with contentEditable, but that creates an even bigger mess.

It looks really good. It makes me wish I had a retro project idea I could use it on. It'd be great for a demo-scene website.

just wanted to say kudos for the BA Test Kitchen reference!

The widgets look spot on, but the text has atrocious kerning. 'ti', 'll', 'd!' are squashed together. Windows 95++ had extremely good small size font rendering and did pixel perfect alignment and kerning of pretty much any font (However, the UI font was probably bitmapped). Remove the 'letter-spacing' styling - it breaks kerning.

I’m impressed by how few people here have tested it in Firefox – Fieldset is broken, Button has ::-moz-focus-inner not properly disabled, Radio/Option isn’t rendering correctly (still shows the original input element as 2x2px black box), and quite a bit more.

Hilariously, this is quite a good example on why the Chrome monoculture is just repeating the IE monoculture of years past

I’ve been getting a good amount of bug reports from FF users, and am grateful because - you are right - I did not test in it and should have.

I’m tracking the fieldset and inner-focus ones (though unable to repro the latter on my machine). The third is new to me if you’d be so kind as to share some details about your system.

I’m running Firefox 75 on Ubuntu 18.04. Pretty standard usage.

Fieldset doesn’t allow inset box-shadows on Firefox, but you can fix that relatively easy:

    fieldset {
      position: relative;

    fieldset::before  {
      content: "";
      display: block;
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      box-shadow: inset -1px -1px #ffffff, inset 1px 1px #0a0a0a, inset -2px -2px #808080, inset 2px 2px #dfdfdf;

Moz-Inner-Focus and the Radio/Options are also equally easily fixed:

    ::-moz-focus-inner {
      border: 0;

    input[type="radio"], input[type="checkbox"] {
      visibility: hidden;

I use FireFox, I don't think it's that bad... xbrowser native UI consistency is literally the hardest xbrowser thing to do.

Looking at firefox and chrome side by side it's actually impressive how they look near identical other than a few stray pixels.

We've come full circle. Thank you for this. It's so simple it's actually peaceful

We’ve also come full circle because this was pretty much the browser’s default style on Netscape.

Isn't it a bit ridiculous that we need to do this in the first place? Shouldn't clear 3D controls on a neutral gray background be the default user-agent appearance, with no need for custom CSS of any sort?

Considering non-formatted HTML files are supposed to be documents, not windows, no?

Adding to this: without any specification, the browser should, and does, use the operating system's native controls when rendering controls such as <button>.

Not anymore for chrome & edge


All part of Google's master plan to commoditize desktop OSs. Everyone outside the US already uses Android, soon your computer will be a Chrome box instead of a Windows/Mac/Linux box.

First they did the browser title bar & tab bar integration/styling & removed the normal OS title bar, then they made Chrome OS, now they are removing the last traces of OS-specific styling for those who haven't already switched to Chrome OS.

And Gmail, Gdocs, and Chromebooks are huge in kids schools. The kids don't know anything outside the non-Google universe. Most of the kids I know think MS Word/Excel/PowerPoint are lame (not that I'm a fan, but you have to admit MS Office is unrivaled in its abilities).

20 years from now they will have a gigantic monopoly over a huge range of computing.

I ... have no issue with those Chromium changes. I don't want Google to control the web, but I certainly wish there more standards based work went into designing a set of controls that was default across all browsers that was coherent, consistent, and was a safe default if you didn't want a theme. Sadly, Bootstrap become this a while ago, followed by a plethora of other web "defaults" that you just plunk into the top of your HTML file to get a whole new design without changing much.

I'm hoping Firefox Foundation or something like that will do some work in this area.

That's an interesting perspective. I guess for those of us on Mac and some Linux-ish OSs, we expect things to just work and look standard. I don't use mac but I think most users are accustomed to applications fitting in with the system, and Apple seems to make a big deal on both macOS and their mobile OSs about this. This is also true on the Gnome desktop where every single Gnome really looks and feels like a Gnome application - it's very coherent, and though I am not a fan of Gnome, I really enjoyed that part of the experience when I used it recently. On KDE this is also true, where every single application, whether Qt or GTK, looks like it's made from the same components.

And I think that web applications should be like this. They may be delivered differently, but they should be part of the system like everything else. Making the UI elements look like the OS ones is good.

I especially notice it on KDE, since on the default KDE theme the checkboxes and radiobuttons and scrollbars look a bit different from most other OSs and the Gnome default theme. But in the browser my checkboxes and radiobuttons and dropdowns look exactly like every other checkbox and radiobutton and dropdown on my computer, and the scrollbars have the distinctive KDE look too.

Most web apps do behave differently from normal applications, and also have stupid company-specific theming, but it's nice having at least parts of them fit in.

I suspect those who come from a Windows background will not have the same opinion, because on Windows basically every app is a mess of different themes and window decorations.

Windows has only been like that recently. The 9x days, and even a good chunk of the XP days meant standard looking applications.

Now that CSS and Javascript are so widely used, it would be interesting for OS vendors to provide a default OS theme along with their packaged browser, that allowed some kind of sane default for web applications to use. You could use a native skin, or load your own CSS to customise it. Microsoft kind of tried this with ActiveX controls, and then Java Applets tried it, and then Flash was fun by ultimately not a good idea, and now we're here with thousands of themes to choose from and a rough set of guidelines that some follow and many don't.

It's funny, back in the day it was "It will never be the year of Linux on the desktop until all applications look consistent". People hated the fact that this app was Gtk, that one was Qt and this one here was Motif. But on Windows, it was winapi button windows and common controls all the way (except a few MS apps like Encarta - leading the way in modern flat guis already back in the Windows 3.1 days). The world has turned so far around!

>on Windows basically every app is a mess of different themes and window decorations

My experience disagrees, as long as we're not talking about Electron or UWP applications. Your description sounds exaggerated.

Just about every Windows program I use is styled differently from the others.

Right now I'm running Outlook, Firefox, Solidworks Electrical, Solidworks, Skype for Business, and ECi M1. Outlook uses the latest style ribbon and flat UI, Firefox uses its own style for everything, Solidworks Electrical uses the old style ribbon UI with panes and stuff from I think .NET toolkits, Solidworks uses its own ribbon and UI theme that's unique to it, Skype is inexplicably blue with its own blue icons, M1 uses its own ribbon style and has somewhat standard controls on a gray background, with a custom tree view that scrolls horizontally when you click on things...

I also have PLC and HMI programming software. Omron CX-Programmer, Sysmac Studio, and NB-Designer, which all look different from each other and any of the other software I'm running.

I think it's harder for me to pick two programs that look alike than it is to find ones that look different.

"Most of the kids I know think MS Word/Excel/PowerPoint are lame "

Wait until they reach the age and get hired in a corporation. I am a die hard linux user ( been on linux desktop more than i can remember ), but the latest stuff (=365) from MS is really appealing compared with gSuite. It has a level of sophistication that Google cannot reach.

Everything works well for me other than excel. It's not even close to being as capable. Of course I've never been a pro at Microsoft Word or PP either, but I'm quite well versed in Excel and the online version is a huge let down.

I think you’re a little mistaken — it’s been a while since I’ve used Chromium on GTK, but on Mac and Windows it has never really used native widgets/controls. This change is good because it goes from something that looks straight out of the late 90s no matter what your computer’s OS is, to something that _probably_ looks a _little_ more like whatever your OS looks like.

I was mistaken, Firefox is the one that uses OS controls for webpage elements. At least on Linux.

> 20 years from now they will have a gigantic monopoly over a huge range of computing.

I'm not worried. Mozilla/Microsoft used to be in a similar position with Firefox/IE at one time.

Now they're both playing second fiddle to Chrome. The only constant in tech is that everything changes.

Surely Mozilla and Firefox have never been anything more than a geeky alternatives to the lead browser! It's true that once upon a time IE had a monopoly and some dedicated used Firefox, and then Chrome was on the up and up and broke the monopoly and a few people switched to Firefox, but now we're back in the time of monopoly and Chrome is on top.

No, it's not. If it were gray then it would be already opinionated. Why #eee, why not #e9e9e9 or #fefefe or how about #c9c9c9? That doesn't make much sense and it's hard to settle on a color or should it be Tim Berners Lee average hair color? :)

So what remains is either black or white. White seems to be a more rational pick.

The system theme should reflect the user's opinion (or at least their learned expectation), thus browsers should honor the system theme.

I disagree, it's a question of authoring freedom. We have a fairly recent "prefers-color-scheme: dark" media query for this which further proves my point, that it's either black or white by default.

If you, the author of the page decide to respect it then it's fine, but I'd be a bit mad if the browser decided to override my page design to an arbitrary grey shade if I don't declare a background color for the body.

The prefers-color-scheme media query can return any of 'light', 'dark' or 'no-preference' (the default). There's no real default for "light" design except as may be provided by the page author, or perhaps by the user herself via setting such a preference.

It can be, but too many find it "boring" and "old-timey"


I was going to post the quote about them not stopping to think if they should, but then I actually clicked the link. Wow, that brought back a lot of nostalgia. I haven't even used Windows in 15+ years, but I now realize that I still have a fondness for the interface of my youth ;-)

I might be a few years older than you – I get far stronger nostalgic feelings from Windows 3.x UI than that of Windows 9x.

Haha. I was just thinking of that. Been wondering if there's any operating system I can theme to look like Win3.1 any more - the aesthetic of Windows 95 is better but Windows 3.1 seems to fit our contemporary standards of flat and fewer colors better. I did like the more rounded buttons of Windows 3.1 better than the harsher edges of the Windows 95 buttons.

The mistakes a driving me crazy. I assume the fonts are just issues with me not having the right font installed. The command menu should be flat and the bar in it should be longer, rectangular and with a drop shadow. The minimize/maximize buttons don't look at all right (no highlight, too stretched). When you move the window, the frame looks wrong - i think the grains are too big and widely separated.

Linux + XFCE has a Win 3.1 theme on b00merang's site. Borrow the icons from the Chicago95 theme and you are done.

Oh man, Chicago95 is almost enough to make me try out Desktop Linux again.

They've been irking me too, along with the ones in the original article. They need to be blockier and more precise. Not bad starts, though.

My god, it's glorious! Interesting how many memories can be connected to UIs...

That was actually my first OS (well, my first OS on my own personal machine, growing up we had older OSs like Commodore 64).

Certainly evokes a lot of nostalgia. The tactile feel of 3D buttons can be mesmerizing at times, a lot of experience has been lost in the race to flat, in addition to lowered affordability of modern UIs.

One bug: Firefox on Linux introduces an extra dotted rectangle on focused buttons (so they end up with two oddly overlapping focus indicators)

There are a few extra bugs: one should be able to style a 'default' button with an extra black border giving it a lightly "inset" appearance, as is usual in this style. And "disabled" buttons shouldn't react to a click by changing their appearance. It would also be nice to support tristate checkbox and radio buttons (the "3rd" state is basically a selection with lowered contrast, so this should be achievable) and "ON/OFF switch"-like controls, which appear as "sticky" buttons where the ON state also has a lighter background.

I’m observing this extra outline on Firefox Nightly on Windows. I can’t discern what’s making it, and suspect it may be a Firefox bug, somehow.

Ah yes, I had completely forgotten about ::-moz-focus-inner.

Are there similar retro-UI systems for other older interfaces? While I don't have that much nostalgia for Win98 myself, I could see how it could be cute to have similar systems for classic (System 6-7) Mac, Amiga, etc. I've seen websites that try to go for these looks, but I think they were manually done.

I've noticed there are a couple of these now so I threw a quick list up on Github: https://github.com/matt-auckland/retro-css

i found this too, (but i can’t find a demo page) https://github.com/npjg/new-dawn

That one was a bit disappointing - here's a screenshot: https://imgur.com/oFz7e0p

Funny enough, just yesterday (before seeing this post), I was searching for re-creations of the Macintosh interface.

Here's the best one I could find:

Apple Macintosh System 7 UI in CSS - https://github.com/pfcode/system7css (Screenshot: https://imgur.com/ZEKolbS)

Aah, that nostalgic comfort.. Makes me dream of building my next toy "OS in a browser" from this.

What would be nice is if there was something like a standard test or demo set of HTML for all these to work against, which would enable a way to switch themes.

I noticed that it's using box-shadow for the "3d effect" on buttons and window borders.

I'm a bit disappointed they didn't use the "inset" or "outset" border-style [0] which pretty nobody uses anymore these days. I thought this kind of design is pretty much why these border-styles exist.

[0]: https://htmldog.com/references/css/properties/border-style/

Having done one of these myself a while ago, box-shadow was the only way to get the pixelated border corners.

Here's the mixin I done https://github.com/padraigfl/packard-belle/blob/master/src/_...

From what I recall, the shading for inset and outset is left up to the browser and is different for different browsers.

It may be because the transition wouldn't be as smooth as it is now?

Did Windows 98 have smoooth transitions, though?

Haha, you got a point there ;)

I think this would be a great reference for teaching introductory UI design; with the 3D-ness you can clearly see the different states that each UI element requires.

I also really like the quotes about each component! Is there an online copy of this Microsoft Windows User Experience manual somewhere?

You can borrow a (badly scanned) copy on archive.org: https://archive.org/details/microsoftwindows00micr_0/page/63...

My heart beat a little faster when I saw the VB dialog box. I experienced building software for the first time when I was taken to my father's office where they used VB and Foxpro (and still do) to build ERP systems. Everything looked like this site.

The waves of nostalgia are sure coming on hard. Thank you to the author of this. This whole site is a work of art!

This is so wonderful to read, thank you :) 100% feel the same way which is what kept me going to ship this.

> Today's mood


> Claire Saffitz


> Brad Leone


> Chris Morocco


> Carla Lalli Music

I just wanted to let the author know that at least one other person appreciates this though tbh most of the time for me it's Sohla.

I think Molly is my favourite.

Although I still can't make Carbonara well to save my life.

;) Glad someone noticed. A few other goodies in there.

If anyone's wondering, these are the people that regularly appear on Bon Appetit magazine's YouTube channel.

That's as refreshing as a dunk in a cold pool. My God we need more UIs that instantly tell you what they can and cannot do. Seems like the modern ones do as much as they can to obscure everything.

Considering how cyclical everything is I wouldn’t be surprised if we see a return to Win95/98 style UIs soon enough. They’ll advertise it as “revolutionising productivity with an innovative new approach to desktop computing” and give us the a recoloured Win98.

I’d probably switch back to Windows if they did.

Some of the modern web pages are so obscure you have no idea what to click.

The joy I get by clicking on those buttons cannot be expressed in words here.

The clarity of such perfectly defined buttons is unbeatable! Maybe they'd be more amicable to modern tastes with rounded shapes or a touch of color, but that 3d visual effect of a button being physically pushed definitely needs to come back and never leave us again, it's so clear and pleasant!

This is great. I was actually building something similar for my VST stuff page (work in progress - http://tilde.town/~severak/studio/). Now I am gonna copy that neat box-shadow border from 98.css.

Really nice!

One minor nitpick: the title bar buttons actually need to be a pixel or two larger in each direction (so 2 or 4 pixels more of height and width, while remaining centered).

That's the beauty of open code. You can pick all the nits you want -> https://github.com/jdan/98.css/issues :)

Also, the font needs to be MS Sans Serif, not Arial.


I don't know what it is about the 95, 98, 2000 era of Windows UI and aesthetics but I still strongly prefer it.

It was functional and clear, unlike modern "hide everything" UIs?

Very true, especially when it comes to scroll bars and similar elements. While I do enjoy some "modern" aesthetics from time to time, the Win98 style UI just feels far more "productive", for lack of a better term.

And as much as I like that Linux in many ways often keeps that type of UI around, I still feel like Win98 did it better (almost can't believe I'm saying that).

Oh, those days when designers actually thought of ergonomic vs modern insanity with no standard, no contrast, no ability to deduct function from the look etc. etc. Well there are exceptions but generic picture looks rather depressing.

I'm using this next time I'm building something from scratch. Thanks.

Me too

My god they have even managed to switch off the anti aliasing of fonts! Looks so accurate I doubt I would be able to tell the difference, well done.

I can’t decide whether the aliasing is part of the aesthetic or not.

I am pretty sure it’s deliberate, I mean did ‘98 have clear type yet? Did it work?

I'd really love a Macintosh System 7.1 version of this.

Check out https://poolside.fm/ for some extra nostalgia Operating Systems.

The controls look great but the text looks off. I forgot the UI font in Windows 98 but perhaps it was Tahoma. Maybe try that and disable anti-aliasing. Better yet, get an image of how the actual font is rendered on Windows 98 and make the glyphs into a bitmap font. That would also sidestep all the font renderer differences between then and now.

I started off by bringing in MS Sans Serif from my windows 98 VM, but ditched it since it was rendering almost identically to Arial.

Making a webfont out of the original 8pt Tahoma sounds fun, but I am unsure if I have to do it manually. I was worried about having to provide bold glyphs, and wasn't sure how to make it scale while still looking pixelated. (That is, if I need to hand-draw an 8x7 lowercase 'e' do I also need to hand-draw the 24x21 version?)

Anyway, I cut it but agree I should get this right!

Really nice. I tried to get Windows look and feel in the headers for the Yazz code editor, but maybe I should have used this CSS lib instead. Great Job!


> https://news.ycombinator.com/item?id=21734845

This (yazz/pilot [i]) needs more exposure... the webapp form designer is gorgeous and useful.

[i] https://yazz.com/app/homepage.html

Thanks, glad you like it. We haven’t really pushed it out yet as we really want to get the debugger and App Store released before we can say it is useful

Using this to style my online resume next time.

Nitpick: "My First VB4 Program" - VB6 came out in 1998

The present is made up of pieces of the past, my friend :)

I don't get the nit. VB6 came out in 1998 which caused every copy of VB4 to disintegrate?

Flexbox was originally invented in the late ’90s by Mozilla (using vendor prefixes — `display: -moz-box`, `-moz-box-flex`, etc.) in order to use CSS to style and lay out their Windows 9x app UI. We’ve come full circle.


This is fantastic. I looked for a CSS library like this some years ago and couldn’t find one. I didn’t have the courage to try to make it myself.

Does anyone know what the easiest way to make those windows movable and resizable (dynamic in general) would be?

Great work, I love this interface style!

nice attempt!

it might be useful to boot real windows 98 (e.g. by visiting http://copy.sh/v86/?profile=windows98) and check how things interact with clicks, in particular how checkboxes and radio buttons look with mouse down.

I’m not smart enough to get this into a Wordpress theme, but if it were ported to WP, it’d be my personal blog theme

It's great, I love it! It's quite similar to this project on iOS: https://github.com/Baddaboo/ClassicKit They even went as far as building a fake Internet Explorer app.

Woah, amazing attention to detail there. I love that they include this image in the README [0], buttons were the first thing that hooked me into building this.

[0] https://github.com/Baddaboo/ClassicKit/raw/master/Images/pix...

If the author is here, this is perfect except for 'space' not being able to click a button

Wow that's pretty fleshed out. I created something similar 3 years ago, but I lost motivation (named it the same too haha): https://github.com/LakenH/98css

Brilliant. Now for Windows XP...

In between thinking of this project (about 2 years ago) and now I was _so_ desperate for someone to clue me in on the gradients used to draw windows XP window title bars. Still never found the answer.

<link rel="stylesheet" href="fisher-price.css">


It is rather amusing how this doesn't work in IE11. I'd almost be inclined to fork and make a version that does, just for the heck of it... for you know, corporate environments that need Win98-styled intranets :)

It's weird how this reminds me of the last two years of the newest changes in UIs. I think it was Windows 10 that brought back minimalist borders (as opposed to Windows 7)? I am not sure whether I am imagining this.

Oh yes. I can't wait to think of a product to build using this design system.

I think it would be hilarious to use this in a desktop Electron app and come full circle.

To top it off the bundle size and memory usage would still be more than just running Win95 in a VM...

It would give you the authentic feeling of running Win95 on a machine that maybe only had 8 MiB ram.

My sister had a Win95 machine with 32mb of ram and 2mb of video memory. What a powerhouse! Played 3D games on that thing...

I ran windows 95 in VirtualBox recently to play an old game. You need a shady kernel hack because modern CPUs are way too fast, and some shady display drivers.

Electron sounds nicer.

I’ve got one, build the windows desktop with an IE link, basically a div with an iframe, and a text box.

I wonder how many windows apps we can build out in a few lines of JS.

Meant something that'd actually make money. For extra giggles.

I surprisingly like it! Only thing I didn't like is the font (makes it hard to read for some reason) but otherwise, it looks wonderful. I might use this as an inspiration for future project I am building!

This is great, I would love to be able to use this. Win98 always felt like a highpoint in easy to UI design.

I am not a CSS ninja, how easy would it be to make this responsive? The example do not appear to be responsive.

I somehow enjoyed the ride to css3 and full fledged responsive multi layer dom presentations but I do miss the wintel days GUI concept. Something about the simplicity, clarity.. makes it more to the point than the hyper capable yet systems of today.

From what I could see they were responsive

First thing I do in Windows is turn off the eye candy :) . I mostly use linux with KDE. It still has a real file menu and visible scrollbars and I hope that never changes :)

What is the name for these simple css files that can turn plain html into a full layout/theme?

Can I find a list of these somewhere?

I don't think there's anything official or even standard for naming. Some places refer to them as class-less:


And these seem to be the strictly frameworks without classes.

This site refers to them as "drop-in" frameworks (and lets you test them out live):


The ones here appear to not be strictly class-less, since I know at least some of those frameworks do have classes, but are probably optional/very light on classes. 98.css would also be a "drop in" in this case since you can see things like the title bar do use classes:

    <div class="title-bar">
      <div class="title-bar-text">A Title Bar</div>
      <div class="title-bar-controls">
        <button aria-label="Close"></button>

Looks nice, gonna try to use it some of my projects. The old Windows UI is really functional and easy to understand

I generally agree, but as Semiapies pointed out there's some low-contrast text in places.

Vaguely relevant: The FOX Toolkit implements the Windows 95 look for lightweight Linux/Windows GUI applications. [0] A pity we don't see more GUIs like that today.

[0] http://fox-toolkit.org/screenshots.html

Surprising how rough on the eyes nostalgia can be, between the small font size and low contrast colors.

The checked disabled radio button and text inputs do not look right on iPhone. Otherwise solid work!

Guessing it doesn't have those fancy warning symbols that some Windows 98 dialogs had?

It may as well be called 2000.css, at least I won't be able to tell the difference.

Windows 2000 used Tahoma for its UI font, but 9x used MS Sans Serif.



I bet the css is totally broken when you open it in a Windows 98 Internet Explorer :D

Looks cool. Does it work on IE?

This is very cool! Mind if I fork and re-work to look like Solaris? :D

ouch, open this in Safari and highlight some text, then unhighlight the text. It's literally barely readable, maybe some bugs to fix there, but it looks great in Chrome. Cool idea!

Would be cool if it came with JS to resize, move close windows etc.

Only if it's easy to swap out for your own. It's unlikely the JS it would come from would fit into they way you do things normally (in your project or even your head).

When I was trying to do something similar I left all that stuff to the side on the assumption someone had made a neat wrapper to handle it

...and they did! https://github.com/bokuweb/react-rnd

Does anyone know a similar project but with Windows 10 styling?

For some reason this brought back memories of mIRC

Applications are open for YC Winter 2023

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact