This release adds support for compiling several selector features for older browsers, improves the Rust API, and fixes some bugs.
Features
- Downlevel
:dir
selector for non-supporting browsers. This is compiled to the:lang
selector, which is the closest equivalent. However, it is not perfect.:dir
is meant to be affected by both thedir
HTML attribute and thedirection
CSS property, but:lang
is only affected by thelang
HTML attribute. When setting thedir
HTML attribute thelang
is usually also set, so it should work for most cases, but it is not possible to polyfill 100% correctly in pure CSS, so keep this in mind. - Support for
:lang
selector with multiple arguments, e.g.:lang(en, fr, de)
This is currently only supported natively in Safari. Parcel CSS will generate fallbacks for other browsers using the:is
selector, e.g.:is(:lang(en), :lang(fr), :lang(de))
. - Downlevel
:is
selector in simple cases. The:is
selector is fairly recent, but older browsers have supported the:-webkit-any
and:-moz-any
selectors, which are equivalent but do not support complex selectors (e.g. selectors with combinators) as arguments. Parcel CSS will compile:is
to these fallbacks depending on your browser targets when only simple selectors are used. - A new approach to compiling CSS Logical Properties. Logical properties such as
border-start-start-radius
allow you to define many CSS properties in terms of the writing direction, so that UIs mirror in right-to-left languages. Parcel CSS used to compile logical properties using CSS variables, but this had some problems with the cascade when overriding values defined in other rules. Now, we use the:dir
or:lang
selectors (as described above) to compile these properties instead. - Rust API improvements. The
Parse
andToCss
traits are now exposed, which allows you to parse and serialize individual CSS rules and values. See #140 for an example. Errors also now implementstd::error::Error
.