class Bamboo::Grid

Public Class Methods

modular(columns = 2, scale = Bamboo::GOLDEN_RATIO) click to toggle source
# File lib/bamboo/grid.rb, line 40
def self.modular(columns = 2, scale = Bamboo::GOLDEN_RATIO)
  column_widths = []
  used_width = 0 
  available_width = Bamboo::TOTAL_WIDTH
  
  columns.times do |index|
    if index == columns - 1 # last column should use all remaining width
      column_widths.push available_width
    else
      width = available_width / scale
      column_widths.push width
      available_width = available_width - width
      used_width = used_width + width
    end
  end
  
  { column_widths: column_widths, css: column_css(column_widths) }
end
scaffold_css(max_width = "100%") click to toggle source
# File lib/bamboo/grid.rb, line 3
def self.scaffold_css(max_width = "100%")
  css = %{
    *,
    *::before,
    *::after {
      box-sizing: border-box;
    }
    
    .container {
      max-width: #{max_width}
    }
    
    .row::after {
      content: "."; 
      visibility: hidden; 
      display: block; 
      height: 0; 
      clear: both;
    }
    
    [class^=col-] {
      display: inline-block;
      float: left;
    }
  }
  
  css.gsub(/[\s]/,"")
end
uniform(columns = 12) click to toggle source
# File lib/bamboo/grid.rb, line 32
def self.uniform(columns = 12)
  column_widths = []
  single_width  = Bamboo::TOTAL_WIDTH / Float(columns)
  columns.times { |index| column_widths.push single_width * (index + 1) }
  
  { column_widths: column_widths, css: column_css(column_widths) }
end

Private Class Methods

column_css(columns) click to toggle source
# File lib/bamboo/grid.rb, line 59
def self.column_css(columns)
  template = %{
    <% columns.map.with_index do |width, index| %>
      .col-<%= index + 1 %> { width: <%= width %>% }
    <% end %>
  }
  ERB.new(template).result(binding).gsub(/[\s]/,"")
end