For use with… | normalize-scss version |
---|---|
The latest Sass | 8.0.0 combining normalize.css v8.0.0 with v1.1.3 |
Compass or Bower | 7.0.1 combining normalize.css v7.0.0 with v1.1.3 (last version with Compass and Bower support) |
Ruby Sass 3.3 | 3.0.3 combining normalize.css v3.0.3 with v1.1.3 |
Ruby Sass 3.2 | 2.2.0+normalize.2.1.3 combining normalize.css v2.1.3 with v1.1.3 |
This project is the Sass version of Normalize.css, a collection of HTML element and attribute rulesets to normalize styles across all browsers. This port aims to use a light dusting of Sass to make Normalize even easier to integrate with your website. To learn about why Normalize.css is so amazing, skip to the "normalize.css" section below.
This Sass port currently adds:
A modern alternative to CSS resets
Normalize.css is a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards.
The project relies on researching the differences between default browser styles in order to precisely target only the styles that need or benefit from normalizing.
Install using one of the following methods:
npm install --save normalize-scss
There is a fantastic introduction to the project and brief instructions how to use it in the About normalize.css article.
You can use the Sass port of Normalize in one of several methods, following the "About normalize.css" article's suggestions:
Approach 1: Download and use normalize-scss as a starting point for your own project's base Sass, customising the values to match the design's requirements. (The best approach, IMO.)
Approach 2: Install and include normalize-scss untouched and then build upon it, overriding the defaults later in your Sass when necessary. Just import normalize-scss like any normal Sass module by:
node_modules/normalize-scss/sass
import path for your application's Sass compiler or loader, e.g. PostCSS or webpack's sass-loader.@import "normalize";
or with @import "node_modules/normalize-scss/sass/normalize";
(if you skipped step 2.)@include normalize();
Alternatively, you can import normalize-scss immediately into your main Sass file without needing to use the normalize()
mixin by:
node_modules/normalize-scss/sass
import path for your application's Sass compiler or loader, e.g. PostCSS or webpack's sass-loader.@import "normalize/import-now";
or with @import "node_modules/normalize-scss/sass/normalize/import-now";
(if you skipped step 2.)Additional detail and explanation of the esoteric parts of normalize.css.
pre, code, kbd, samp
The font-family: monospace, monospace
hack fixes the inheritance and scaling
of font-size for preformatted text. The duplication of monospace
is
intentional. Source.
sub, sup
Normally, using sub
or sup
affects the line-box height of text in all
browsers. Source.
select
By default, Chrome on OS X and Safari on OS X allow very limited styling of
select
, unless a border property is set. The default font weight on optgroup
elements cannot safely be changed in Chrome on OSX and Safari on OS X.
[type="checkbox"]
It is recommended that you do not style checkbox and radio inputs as Firefox's implementation does not respect box-sizing, padding, or width.
[type="number"]
Certain font size values applied to number inputs cause the cursor style of the
decrement button to change from default
to text
.
[type="search"]
The search input is not fully stylable by default. In Chrome and Safari on
OSX/iOS you can't control font
, padding
, border
, or background
. In
Chrome and Safari on Windows you can't control border
properly. It will apply
border-width
but will only show a border color (which cannot be controlled)
for the outer 1px of that border. Applying -webkit-appearance: textfield
addresses these issues without removing the benefits of search inputs (e.g.
showing past searches).
Please read Normalize.css' contributing guidelines.
Updates to most CSS rules should be reported to the upstream Normalize.css project. Updates to the Sass should be reported in the Normalize-scss project.
Normalize.css is a project by Nicolas Gallagher, co-created with Jonathan Neal.
This Sass port is a project by John Albin Wilkins.
For the record, there are several other Sass ports as well. Including: