Skip to content

Instantly share code, notes, and snippets.

@polymetis
Created October 16, 2012 16:02
Show Gist options
  • Save polymetis/3900218 to your computer and use it in GitHub Desktop.
Save polymetis/3900218 to your computer and use it in GitHub Desktop.
Wanted to have a font-size mixin that included the golden ratio, and music intervals. So here it is.

#headline ##healine 2

@import "compass";
$root-font-size: 100% !default;
$root-font-multiplier: ($root-font-size / ($root-font-size * 0 + 1))/100;
@mixin font-size($value, $increment, $ratio){
@if $ratio == unison {
$ratio: 1;
}
@else if $ratio == minor-second {
$ratio: 1.067;
}
@else if $ratio == major-second {
$ratio: 1.125;
}
@else if $ratio == minor-third {
$ratio: 1.2;
}
@else if $ratio == major-third {
$ratio: 1.25;
}
@else if $ratio == perfect-fourth {
$ratio: 1.333;
}
@else if $ratio == augmented-fourth {
$ratio: 1.414;
}
@else if $ratio == diminished-fifth {
$ratio: 1.414;
}
@else if $ratio == perfect-fifth {
$ratio: 1.5;
}
@else if $ratio == minor-sixth {
$ratio: 1.6;
}
@else if $ratio == major-sixth {
$ratio: 1.667;
}
@else if $ratio == minor-seventh {
$ratio: 1.778;
}
@else if $ratio == major-seventh {
$ratio: 1.875;
}
@else if $ratio == octave {
$ratio: 2;
}
@else if $ratio == major-tenth {
$ratio: 2.5;
}
@else if $ratio == major-eleventh {
$ratio: 2.667;
}
@else if $ratio == major-twelfth {
$ratio: 3;
}
@else if $ratio == double-octave {
$ratio: 4;
}
@else if $ratio == golden-ratio {
$ratio: 1.618;
}
@else {
$ratio: $ratio;
}
@if $increment > 0 {
@for $i from 1 through $increment {
$value: ($value * $ratio);
}
}
@if $increment < 0 {
$increment: abs($increment);
@for $i from 1 through $increment {
$value: ($value / $ratio);
}
}
font-size: $value * $root-font-multiplier * 16px;
font-size: $value * 1rem;
}
h1 {
@include font-size(1, 4, diminished-fifth)
}
h2 {
@include font-size(1.2, 3, perfect-fourth)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment