Tenarai::CSS

Ruby のブロックを使って CSS を作るクラス

概要

Tenarai::XML のように、Ruby のブロックを使って CSS を作るクラスでこんな感じです。

  1. require 'tenarai/css'
  2. css = Tenarai::CSS.new
  3. css.selector('#menu') do |s|
  4. s['width'] = '150px'
  5. s['margin'] = '1em 1em 1em 1em'
  6. s['border'] = 'solid 1px blue'
  7. end
  8. css.selector('div') do |s|
  9. s['align'] = 'left'
  10. s['border'] = 'solid 1px green'
  11. end
  12. puts css.to_s

これを実行すると、こうなります。

  1. #menu {
  2. border: solid 1px blue;
  3. margin: 1em 1em 1em 1em;
  4. width: 150px;
  5. }
  6. div {
  7. align: left;
  8. border: solid 1px green;
  9. }

Tenarai::XML と同じようにインデント文字数を指定することが出来ます。

  1. css = Tenarai::CSS(:indent => 0)

とするか、

  1. puts css.to_s(0)

とすると、インデントしないですべて一行で出力します。

  1. #menu { border: solid 1px blue; margin: 1em 1em 1em 1em; width: 150px; } div { align: left; border: solid 1px green; }

クラスメソッド

new(param={:indent=>2})

new(param={:indent=>2}) { |css| ... }

それぞれ、オブジェクトを作成します。引数のハッシュオブジェクトにデフォルトのインデント文字数を指定することが出来ます。また、ブロックを指定した場合は、ブロックの引数に作成したオブジェクトが代入されます。

  1. require 'tenarai/css'
  2. css = Tenarai::CSS.new
  3. css.selector('#menu') do |s|
  4. s['width'] = '150px'
  5. end
  6. puts css.to_s
  7. puts Tenarai::CSS.new { |css|
  8. css.selector('#menu') do |s|
  9. s['width'] = '150px'
  10. end
  11. }.to_s

メソッド

selector(selecter, style={})

selector(selecter, style={}) { |s| ... }

CSS のセレクターを作成します。作成したセレクターは [], []= メソッドでスタイルを指定することが出来ます。

  1. require 'tenarai/css'
  2. css = Tenarai::CSS.new
  3. s = css.style('div')
  4. s['margin'] = '1em'
  5. s['background-color'] = 'silver'
  6. css.selector('p') do |s|
  7. s['padding'] = '1em'
  8. s['align'] = 'left'
  9. end
  10. puts css.to_s

これを実行すると、こうなります

  1. div {
  2. background-color: silver;
  3. margin: 1em;
  4. }
  5. p {
  6. align: left;
  7. padding: 1em;
  8. }

to_s(indent=nil)

オブジェクトを CSS に整形した文字列を返します。引数にインデントの文字数を指定することができます。

to_css

to_s のエイリアス


AdSense is disabled. Please check setting.