@ -0,0 +1,6 @@ | |||||
node_modules | |||||
build | |||||
*.DS_Store | |||||
Thumbs.db | |||||
.idea | |||||
*.log |
@ -0,0 +1,14 @@ | |||||
{ | |||||
"name": "crispy-boilerplate", | |||||
"version": "0.1.0", | |||||
"description": "Flat Sass Framework, to give you a amount of Basic Settings, Mixins and Functions", | |||||
"repository": { | |||||
"type": "git", | |||||
"url": "git@github.com:nirgendswo/crispy-boilerplate.git" | |||||
}, | |||||
"author": "Björn Hase", | |||||
"license": "MIT", | |||||
"dependencies": { | |||||
"normalize.css": "^7.0.0", | |||||
} | |||||
} |
@ -0,0 +1,15 @@ | |||||
@import | |||||
'../../node_modules/normalize.css/normalize.css' | |||||
'functions/units', | |||||
'functions/z-index', | |||||
'mixins/clearfix', | |||||
'mixins/fontSize', | |||||
'components/button', | |||||
'components/body', | |||||
'components/icon', | |||||
'components/heading', | |||||
'components/normalize', | |||||
'components/list'; |
@ -0,0 +1,34 @@ | |||||
/** | |||||
* body | |||||
* | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$body__font-size: 12px !default; | |||||
$body__font-family: Arial, Helvetica, Neue Helvetica, sans-serif !default; | |||||
$body__line-height: 1.5 !default; | |||||
$body__direction: ltr !default; | |||||
$body__color: black !default; | |||||
$body__backgroun-color: white !default; | |||||
@mixin cripsy-boilerplate-body { | |||||
body { | |||||
font-family: $body__font-family; | |||||
font-weight: normal; | |||||
line-height: $body__line-height; | |||||
color: $body__color; | |||||
background-color: $body__background-color; | |||||
direction: $body__direction; | |||||
@include font-size($body__font-size); | |||||
@content; | |||||
} | |||||
} |
@ -0,0 +1,33 @@ | |||||
/** | |||||
* Buttons | |||||
* | |||||
* mixin for basic styles of buttons | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
@mixin cripsy-boilerplate-button() { | |||||
.button { | |||||
position: relative; | |||||
display: inline-block; | |||||
vertical-align: middle; | |||||
appearance: none; | |||||
&--wide { | |||||
width: 100%; | |||||
} | |||||
&:hover { | |||||
cursor: pointer; | |||||
text-decoration: none; | |||||
} | |||||
&:focus { | |||||
outline: none; | |||||
} | |||||
@content; | |||||
} | |||||
} |
@ -0,0 +1,42 @@ | |||||
@import | |||||
'../mixins/units', | |||||
'../mixins/fontSize'; | |||||
/** | |||||
* heading | |||||
* | |||||
* basic styles for heading | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$heading__font-sizes: ( | |||||
'h1': 36px, | |||||
'h2': 30px, | |||||
'h3': 24px, | |||||
'h4': 18px, | |||||
'h5': 14px, | |||||
'h6': 12px | |||||
) !default; | |||||
$heading__font-weight: bold !default; | |||||
$heading__font-family: Arial, Helvetica, Neue Helvetica, sans-serif !default; | |||||
$heading__line-height: 1.5 !default; | |||||
$heading__margin: 0 0 pxToEm(20px) !default; | |||||
@mixin cripsy-boilerplate-heading { | |||||
@each $h, $font-size in $heading__font-sizes { | |||||
#{$h}, .#{$h} { | |||||
font-family: $heading__font-family; | |||||
font-weight: $heading__font-weight; | |||||
line-height: $heading__line-height; | |||||
margin: $heading__margin; | |||||
@include font-size($font-size); | |||||
@content; | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,27 @@ | |||||
/** | |||||
* icon | |||||
* | |||||
* basic styles for icon | |||||
* | |||||
* <svg class="icon"> | |||||
* <use src="#"></use> | |||||
* </svg> | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$icon__vertical-align: middle !default; | |||||
$icon__margin: 0 2px !default; | |||||
@mixin cripsy-boilerplate-icon() { | |||||
.icon { | |||||
display: inline-block; | |||||
position: relative; | |||||
vertical-align: $icon__vertical-align; | |||||
margin: $icon__margin; | |||||
@content; | |||||
} | |||||
} |
@ -0,0 +1,33 @@ | |||||
/** | |||||
* list | |||||
* | |||||
* styles and mixins for ul-element | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
@mixin cripsy-boilerplate-list { | |||||
.list { | |||||
list-style-position: outside; | |||||
&--horizontal { | |||||
.list__item { | |||||
float: left; | |||||
} | |||||
} | |||||
} | |||||
.d-list { | |||||
&--horizontal { | |||||
.d-list__title, .d-list__content { | |||||
float: left; | |||||
} | |||||
.d-list__content { | |||||
clear: left; | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,46 @@ | |||||
/** | |||||
* normalize | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$normalize__margin: 0 0 pxToEm(20px) !default; | |||||
@mixin cripsy-boilerplate-normalize { | |||||
html { | |||||
font-size: 100%; | |||||
} | |||||
body, | |||||
html { | |||||
height: 100%; | |||||
} | |||||
html, | |||||
legend { | |||||
box-sizing: border-box; | |||||
} | |||||
*, | |||||
*::after, | |||||
*::before { | |||||
box-sizing: inherit; | |||||
} | |||||
table { | |||||
border-collapse: collapse; | |||||
border-spacing: 0; | |||||
} | |||||
p { | |||||
margin: $normalize__margin; | |||||
} | |||||
ul, ol, dl { | |||||
margin: $normalize__margin; | |||||
} | |||||
@content; | |||||
} |
@ -0,0 +1,8 @@ | |||||
@import | |||||
'CrispyBoilerplate'; | |||||
@include cripsy-boilerplate-normalize(); | |||||
@include cripsy-boilerplate-body(); | |||||
@include crispy-boilerplate-heading(); | |||||
@include cripsy-boilerplate-icon(); | |||||
@include cripsy-boilerplate-list(); |
@ -0,0 +1,45 @@ | |||||
$base__font-size: 16px !default; | |||||
$base__line-height: 1.5 !default; | |||||
/** | |||||
* calculate pixel value to em | |||||
* | |||||
* @param {px} $font-size | |||||
* @return {em} | |||||
*/ | |||||
@function pxToEm($font-size) { | |||||
@return ($font-size / $base__font-size) * 1em; | |||||
} | |||||
/** | |||||
* calculate px value to rem | |||||
* | |||||
* @param {px} $px | |||||
* @param {px} $font-size | |||||
* @return {em} | |||||
*/ | |||||
@function pxToRem($font-size) { | |||||
@return ($font-size / $base__font-size) * 1rem; | |||||
} | |||||
/** | |||||
* calculate em value to rem | |||||
* | |||||
* @param {em} $value | |||||
* @param {px} $font-size | |||||
* @return {px} | |||||
*/ | |||||
@function emToPx($value, $font-size: $base__font-size) { | |||||
@return ($value * $font-size) * 1px; | |||||
} | |||||
/** | |||||
* calculate line-height with font-size | |||||
* | |||||
* @param {px} $font-size | |||||
* @param {unitless} $base-line-height | |||||
* @return {unitless} | |||||
*/ | |||||
@function lineHeight($font-size, $line-height: $base-line-height) { | |||||
@return unitless(emToPx($line-height * 1em) / $font-size); | |||||
} |
@ -0,0 +1,22 @@ | |||||
/** | |||||
* | |||||
* | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$z-indexes: ( | |||||
'site-header': 100, | |||||
'modal': 1000 | |||||
) !default; | |||||
@function z-index($name) { | |||||
@if index($z-indexes, $name) { | |||||
@return map($z-indexes, $name); | |||||
} @else { | |||||
@warn 'There is no item "#{$name}" in this list; choose one of: #{$z-indexes}'; | |||||
@return null; | |||||
} | |||||
} |
@ -0,0 +1,19 @@ | |||||
/** | |||||
* clearfix | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
@mixin clearfix() { | |||||
&::before, | |||||
&::after { | |||||
display: table; | |||||
content: ' '; | |||||
} | |||||
&::after { | |||||
clear: both; | |||||
} | |||||
} |
@ -0,0 +1,10 @@ | |||||
/** | |||||
* add font-size with fallback | |||||
* | |||||
* @param {px} $font-size | |||||
* | |||||
*/ | |||||
@mixin fontSize($font-size) { | |||||
font-size: $font-size; | |||||
font-size: pxToRem($font-size); | |||||
} |