Logo

FeatherCSS

A Dark Mode ready minimalist CSS framework.

Why FeatherCSS?

FeatherCSS is a Dark Mode ready minimalist CSS Framework with support for RTL and Accessibility. It purposefully excludes features like grid layout, media queries, or icons which tends to require per-project customization.

Key Highlights

  • It’s Just CSS™ with CSS variables. Bring your own LESS / Sass / CSS-in-JS solution.
  • Super minimal at only 2kb gzipped
  • Learn just a few simple class names, the rest is default you can tweak around directly.

How Dark Mode works

FeatherCSS ships with Dark Mode support out of the box with CSS variables. In order to provide maximum flexibility of turning it on, off, or automatically switch based on user display settings, you can toggle data-theme="dark" attribute to your markup with a minimal JavaScript code (consult your framework specific solutions).

Browser Support

FeatherCSS supports all the latest browsers (or degrade gracefully), minus the IE11 which is now deprecated even from high-traffic websites like StackOverflow and LinkedIn.

Installation

FeatherCSS can be used as a starter CSS with a simple file you can copy into your project. Or, import CSS partials into your existing LESS / Sass / CSS-in-JS ecosystem.

Install with npm.

npm install feathercss

Install with Yarn.

yarn add feathercss

Directory structure

feathercss/
├──dist/
│  ├──feather.css // Great for copying to your project
│  ├──feather.min.css // Great for importing
│  └──components // Great for importing just what you need
│     ├──global.css
│     ├──variables.css
│     ├──typography.css
│     ├──...

Typography

FeatherCSS has a default font family that leverages system fonts which arguably renders the best for each platform. If you inspect large scale SaaS apps out there, you will notice that they do the same vs loading custom font. You can of course override this easily using CSS variables.

Headings

Quite often, the information hierarchy does not map one-to-one to the desired style of headings. For example, you might need to use <h2 /> that has a style of <h1 /> because <h1 /> is already used as a hero title which displays much larger. Instead of repeating <h1 /> twice in markup, you can use semantic markups that are separated from visual representation.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Paragraph lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id lacus eu nulla porta sagittis non nec dui. Vivamus iaculis aliquet diam. Proin eu ullamcorper metus, at imperdiet ante.

This marks the history of FeatherCSS

You need to add data-theme="dark" attribute to your markup to enable Dark Mode.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Paragraph lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id lacus eu nulla porta sagittis non nec dui. Vivamus iaculis aliquet diam. Proin eu ullamcorper metus, at imperdiet ante.

This marks the history of FeatherCSS

You need to add data-theme="dark" attribute to your markup to enable Dark Mode.

Blockquote

A simple way to highlight a quote.

This changed my life, literally.
This changed my life, literally.

Buttons

Buttons are an essential part of interactive websites. To avoid interfering with other types of buttons on the page, FeatherCSS implements them with explicit class names.

Lists

List elements are used to display a list of useful information to readers, as well as semantically grouping a collection of elements such as navigation links. FeatherCSS defaults to show discs and numbers for list elements, and requires a reset class to be used for semantic grouping.

  • Waffles
  • Pancakes
  1. Add 100g flour into a bowl
  2. Add 2x eggs into the bowl and mix
Room Size
1,200 SQFT
Bathrooms
2
  • Waffles
  • Pancakes
  1. Add 100g flour into a bowl
  2. Add 2x eggs into the bowl and mix
Room Size
1,200 SQFT
Bathrooms
2

Form

When customizing form styles, accessibility and RTL are often forgotten. FeatherCSS takes care of them by designing form style in conjunction with the proper markup structure shown in the example markup below.

Choose your favorite animal
Pick your favorite drink(s)
Choose your favorite animal
Pick your favorite drink(s)

Table

Table is best used for displaying a set of tabular data, as never intended to be used as a replacement for creating a layout. FeatherCSS provides a clean default style you can expand on.

Name Serving Caffeine
Coffee 1 cup (8 fl oz)(237 g) 95 mg
Tea 1 cup (8 fl oz)(238 g) 22—28 mg
Source: Coffee, Tea
Name Serving Caffeine
Coffee 1 cup (8 fl oz)(237 g) 95 mg
Tea 1 cup (8 fl oz)(238 g) 22—28 mg
Source: Coffee, Tea