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.
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
- Add 100g flour into a bowl
- Add 2x eggs into the bowl and mix
- Room Size
- 1,200 SQFT
- Bathrooms
- 2
- Waffles
- Pancakes
- Add 100g flour into a bowl
- 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.
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.