DESCRIPTION
Xass extends Rails with namespacing CSS classes in Sass.
SUPPORT
| Xass version | Supported Sass version |
|---|---|
| 0.3.0 | 3.4.7~3.4.10 |
| 0.2.0 | 3.2.19 |
INSTALLATION
We suppose you use Rails with sass-rails.
Gemfile
gem 'xass'USAGE
Namespacing by directory tree
// /app/assets/stylesheets/application.sass
@import ./main/**/*// /app/assets/stylesheets/main/hoge/piyo/fuga.sass
.hogehoge
width: 100pxThis emits the following css (notice that there are three underscores before hogehoge.)
.hoge__piyo__fuga___hogehoge {
width: 100px;
}In view, use helpers or ns prefixed class names to apply the style.
-# /app/views/someview.html.haml
= namespace :hoge, :piyo, :fuga do
.ns-hogehoge
-# or %div{ class: ns(:hogehoge) }This emits
<div class="hoge__piyo__fuga___hogehoge"></div>As matter of course, namespace can be nested as follows.
-# /app/views/someview.html.haml
= namespace :hoge do
= namespace :piyo do
= namespace :fuga do
.ns-hogehogeIf you don't want to dig namespaces, you can specify namespaces directly in ns prefixed class name.
= namespace :hoge do
.ns-piyo--fuga--hogehogeSpecial class name root
You can use root class for specify a root class name.
// /app/assets/stylesheets/main/hoge/piyo/fuga.sass
.root
width: 10pxThis emits
.hoge__piyo__fuga {
width: 10px;
}And,
-# /app/views/someview.html.haml
= namespace :hoge, :piyo, :fuga do
.nsr
-# or %div{ class: nsr }This emits
<div class="hoge__piyo__fuga"></div>Abbreviately, you can write this as follows.
-# /app/views/someview.html.haml
= namespace_with_root :hoge, :piyo, :fugaDisable namespacing
You can use _ prefix to disable namespacing.
// /app/assets/stylesheets/application.sass
@import ./main/**/*// /app/assets/stylesheets/main/hoge/piyo/fuga.sass
._current
background-color: blackThis emits the following css.
.current {
background-color: black;
}Reset current namespace
In partial, you may want to reset current namespace. namespace! and namespace_with_root! do this.
-# /app/views/someview.html.haml
= namespace_with_root :hoge, :piyo, :fuga do
= render partial: 'partial'-# /app/views/_partial.html.haml
= namespace_with_root! :foo do
fooThis emits
<div class="hoge__piyo__fuga">
<div class="foo">
foo
</div>
</div>Abbreviations
The following aliases are available.
alias :dns :namespace
alias :dns! :namespace!
alias :dnsr :namespace_with_root
alias :dnsr! :namespace_with_root!