diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8619fb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.sass-cache/* +node_modules/* \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..7d14cb0 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,37 @@ +module.exports = function(grunt) { + + grunt.initConfig({ + imagemin: { + dynamic: { + files: [{ + expand: true, + cwd: 'img/', + src: ['*.{png,jpg,gif}'], + dest: 'img/' + }] + } + }, + sass: { + dist: { + options: { + style: 'compressed' + }, + files: { 'style.css': 'css/style.scss' } + } + }, + watch: { + css: { + files: ['css/*.scss'], + tasks: ['sass'] + } + } + }); + + + grunt.loadNpmTasks('grunt-contrib-imagemin'); + grunt.loadNpmTasks('grunt-contrib-sass'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + grunt.registerTask('default', ['imagemin', 'sass', 'watch']); + +}; \ No newline at end of file diff --git a/css/_vars.scss b/css/_vars.scss new file mode 100755 index 0000000..ceadc65 --- /dev/null +++ b/css/_vars.scss @@ -0,0 +1,38 @@ +// Base + +$base-colour: #333; +$base-background-colour: #fff; + +$base-font-stack: 'Helvetica Neue', Helvetica, Arial, sans-serif; +$base-font-size: 14; +$base-line-height: 1.5; +$base-margin-bottom: ($base-font-size * $base-line-height); + +$h1-font-size: 28; +$h2-font-size: 24; +$h3-font-size: 21; +$h4-font-size: 18; +$h5-font-size: 16; +$h6-font-size: 16; + +// Lists + +$list-margin-left: 24; + +// Scaffolding + +$container-max-width: 960; +$column-count: 12; +$column-gutter: 20; + +// Tables + +$table-border-colour: #ddd; + +// Forms +$input-border: solid 1px #ccc; +$input-background: #fff; +$btn-border: solid 1px #ccc; +$btn-background: #eee; +$btn-background-hover: #ddd; +$btn-color: #333; \ No newline at end of file diff --git a/css/generic/_mixins.scss b/css/generic/_mixins.scss new file mode 100755 index 0000000..01a6cfa --- /dev/null +++ b/css/generic/_mixins.scss @@ -0,0 +1,57 @@ +@mixin breakpoint($point) { + @if $point == mobile { + @media screen and (max-width: 640px) { @content; } + } + @else if $point == tablet-portrait { + @media screen and (max-width: 768px) { @content; } + } + @else if $point == tablet-landscape { + @media screen and (max-width: 1024px) { @content; } + } + @else if $point == desktop { + @media screen and (max-width: 1200px) { @content; } + } +} + +@mixin border-radius ($radius: 5px) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + -o-border-radius: $radius; + border-radius: $radius; +} + +@mixin box-sizing ($box-model: 'border-box') { + -webkit-box-sizing: $box-model; + -moz-box-sizing: $box-model; + box-sizing: $box-model; +} + +@mixin box-shadow($x-axis: 0, $y-axis: 2px, $blur: 2px, $alpha: 0.1) { + -webkit-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha); + -moz-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha); + box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha); +} + +@mixin transition($duration:0.2s, $ease:ease-out) { + -webkit-transition: all $duration $ease; + -moz-transition: all $duration $ease; + transition: all $duration $ease; +} + +@mixin gradient($from, $to) { + background-color: $from; + background-image: -webkit-linear-gradient($from, $to); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from($from), to($to)); + background-image: -moz-linear-gradient($from, $to); + background-image: -o-linear-gradient($from, $to); +} + +@function calculate-rem($size) { + $remSize: $size / 10; + @return #{$remSize}rem; +} + +@mixin font-size($size) { + font-size: $size + px; //Fallback in px + font-size: calculate-rem($size); +} \ No newline at end of file diff --git a/css/generic/_normalise.scss b/css/generic/_normalise.scss new file mode 100755 index 0000000..c45c31a --- /dev/null +++ b/css/generic/_normalise.scss @@ -0,0 +1,59 @@ +html { + background-color: $base-background-colour; + color: $base-colour; + font-size: 62.5%; +} + +body { + //font: #{(($base-font-size / 16) * 1em)}/#{$base-line-height} $base-font-stack; + font-family: $base-font-stack; + @include font-size($base-font-size); + line-height: $base-line-height; +} + +h1, h2, h3, h4, h5, h6, p, ul, ol, table, pre, fieldset { + margin-bottom: $base-margin-bottom * 1px; +} + +h1 { + @include font-size($h1-font-size); +} + +h2 { + font-size: ($h2-font-size / $base-font-size) * 1em; + line-height: ($base-margin-bottom / $h2-font-size ) * 1em; +} + +h3 { + font-size: ($h3-font-size / $base-font-size) * 1em; + line-height: ($base-margin-bottom / $h3-font-size ) * 1em; +} + +h4 { + font-size: ($h4-font-size / $base-font-size) * 1em; + line-height: ($base-margin-bottom / $h4-font-size ) * 1em; +} + +h5 { + font-size: ($h5-font-size / $base-font-size) * 1em; + line-height: ($base-margin-bottom / $h5-font-size ) * 1em; +} + +h6 { + font-size: ($h6-font-size / $base-font-size) * 1em; + line-height: ($base-margin-bottom / $h6-font-size ) * 1em; +} + +ul, ol { + margin-left: $list-margin-left * 1px; +} + +ul ul, ol ol { + margin-bottom: 0; +} + +img { + display: block; + max-width: 100%; + height: auto; +} \ No newline at end of file diff --git a/css/generic/_reset.scss b/css/generic/_reset.scss new file mode 100755 index 0000000..b6054f4 --- /dev/null +++ b/css/generic/_reset.scss @@ -0,0 +1,35 @@ +body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td{ + margin: 0; + padding: 0; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +fieldset, img { + border: 0; +} + +address, caption, cite, dfn, th, var { + font-style: normal; + font-weight: normal; +} + +caption, th { + text-align: left; +} + +h1, h2, h3, h4, h5, h6 { + font-size: 100%; + font-weight: bold; +} + +q:before, q:after { + content: ''; +} + +abbr, acronym { + border: 0; +} \ No newline at end of file diff --git a/css/generic/_utilities.scss b/css/generic/_utilities.scss new file mode 100755 index 0000000..0d6bd18 --- /dev/null +++ b/css/generic/_utilities.scss @@ -0,0 +1,33 @@ +.alignleft { + float: left; +} + +img.alignleft { + margin-right: $column-gutter * 1px; +} + +.alignright { + float: right; +} + +img.alignright { + margin-left : $column-gutter * 1px; +} + +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} + +.clearfix { + *zoom:1; + &:before, + &:after{ + content: " "; + display: table; + } + &:after{ + clear: both; + } +} \ No newline at end of file diff --git a/css/objects/_forms.scss b/css/objects/_forms.scss new file mode 100755 index 0000000..8a3cd93 --- /dev/null +++ b/css/objects/_forms.scss @@ -0,0 +1,49 @@ +input, select, textarea, button { + display: inline-block; + font-family: $base-font-stack; + font-size: 1em; + line-height: $base-margin-bottom + px; + padding: 4px 8px; + color: $base-colour; + background: $input-background; + border: $input-border; + @include border-radius(3px); + width: 208px; +} + +textarea { + min-height: ($base-margin-bottom * 4) + px; +} + +.control-group { + margin-bottom: $base-margin-bottom + px; +} + +.control-label { + float: left; + width: 140px; +} + +.controls { + margin-left: 160px; + @extend .clearfix; +} + + .checkbox input { + width: auto; + } + +.btn { + background: $btn-background; + border: $btn-border; + @include border-radius(3px); + color: $btn-color; + cursor: pointer; + display: inline-block; + line-height: $base-margin-bottom + px; + padding: 5px 20px; + width: auto; + &:hover { + background: $btn-background-hover; + } +} \ No newline at end of file diff --git a/css/objects/_nav.scss b/css/objects/_nav.scss new file mode 100755 index 0000000..c3d25a3 --- /dev/null +++ b/css/objects/_nav.scss @@ -0,0 +1,13 @@ +.nav { + list-style: none; + margin-left: 0; +} + + .nav > li { + display: inline-block; + *display: inline; + } + + .nav > li > a { + display: block; + } \ No newline at end of file diff --git a/css/objects/_scaffolding.scss b/css/objects/_scaffolding.scss new file mode 100755 index 0000000..f1a3a77 --- /dev/null +++ b/css/objects/_scaffolding.scss @@ -0,0 +1,51 @@ +.container { + margin: 0 auto; + max-width: ($container-max-width - $column-gutter) * 1px; + padding: 0 20px; + @extend .clearfix; +} + +.container-fluid { + width: 100%; + @extend .clearfix; +} + +.row { + margin-left: -($column-gutter / $container-max-width) * 100%; + _overflow: hidden; + @extend .clearfix; + @include breakpoint(mobile) { + margin-left: 0; + } +} + +.column { + display: inline; + float: left; + margin-left: ($column-gutter / $container-max-width) * 100%; + vertical-align: top; + @include breakpoint(mobile) { + display: block; + float: none; + margin-left: 0; + width: auto !important; + } +} + +@for $i from 1 through $column-count { + .column-span-#{$i} { + width: (((100 / $column-count) * $i) - (($column-gutter / $container-max-width) * 100)) * 1%; + *width: (((100 / $column-count) * $i) - (($column-gutter / $container-max-width) * 100)) - .02 * 1%; + } +} + +.row-no-gutters .column { + margin-left: 0; +} + +@for $i from 1 through $column-count { + .row-no-gutters .column-span-#{$i} { + width: ((100 / $column-count) * $i) * 1%; + *width: ((100 / $column-count) * $i) - .02 * 1%; + } +} \ No newline at end of file diff --git a/css/objects/_tables.scss b/css/objects/_tables.scss new file mode 100755 index 0000000..faa77c6 --- /dev/null +++ b/css/objects/_tables.scss @@ -0,0 +1,21 @@ +.table { + width: 100%; + border-collapse: collapse; +} + + .table th, + .table td { + text-align: left; + vertical-align: top; + border-top: 1px solid $table-border-colour; + padding: ($base-margin-bottom / 2) * 1px 10px; + } + + .table th { + font-weight: bold; + border-top: 0; + } + + .table thead th { + vertical-align: bottom; + } \ No newline at end of file diff --git a/css/style.scss b/css/style.scss new file mode 100755 index 0000000..e96211b --- /dev/null +++ b/css/style.scss @@ -0,0 +1,23 @@ +/* +Theme Name: Bare Bones +Theme URI: http://github.com/mikefrancis/barebones +Author: Mike Francis +*/ + +// Variables, Mixins + +@import 'vars'; +@import 'generic/mixins'; + +// Generic + +@import 'generic/reset'; +@import 'generic/normalise'; +@import 'generic/utilities'; + +// Objects + +@import 'objects/forms'; +@import 'objects/scaffolding'; +@import 'objects/nav'; +@import 'objects/tables'; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..3553817 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "barebones", + "version": "0.1.0", + "private": true, + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-sass": "~0.5.0", + "grunt-contrib-imagemin": "~0.5.0", + "grunt-contrib-watch": "~0.5.3" + } +} \ No newline at end of file diff --git a/style.css b/style.css index 85948ae..fe8d88b 100644 --- a/style.css +++ b/style.css @@ -1,384 +1 @@ -/* -Theme Name: Bare Bones -Theme URI: http://github.com/mikefrancis/barebones -Author: Mike Francis -*/ -body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td { - margin: 0; - padding: 0; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -fieldset, img { - border: 0; -} - -address, caption, cite, dfn, th, var { - font-style: normal; - font-weight: normal; -} - -caption, th { - text-align: left; -} - -h1, h2, h3, h4, h5, h6 { - font-size: 100%; - font-weight: bold; -} - -q:before, q:after { - content: ''; -} - -abbr, acronym { - border: 0; -} - -html { - background-color: white; - color: #333333; - font-size: 62.5%; -} - -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-size: 1.4rem; - line-height: 1.5; -} - -h1, h2, h3, h4, h5, h6, p, ul, ol, table, pre, fieldset { - margin-bottom: 21px; -} - -h1 { - font-size: 28px; - font-size: 2.8rem; -} - -h2 { - font-size: 1.71429em; - line-height: 0.875em; -} - -h3 { - font-size: 1.5em; - line-height: 1em; -} - -h4 { - font-size: 1.28571em; - line-height: 1.16667em; -} - -h5 { - font-size: 1.14286em; - line-height: 1.3125em; -} - -h6 { - font-size: 1.14286em; - line-height: 1.3125em; -} - -ul, ol { - margin-left: 24px; -} - -ul ul, ol ol { - margin-bottom: 0; -} - -img { - display: block; - max-width: 100%; - height: auto; -} - -.alignleft { - float: left; -} - -img.alignleft { - margin-right: 20px; -} - -.alignright { - float: right; -} - -img.alignright { - margin-left: 20px; -} - -.aligncenter { - display: block; - margin-left: auto; - margin-right: auto; -} - -.clearfix, .controls, .container, .container-fluid, .row { - *zoom: 1; -} -.clearfix:before, .controls:before, .container:before, .container-fluid:before, .row:before, .clearfix:after, .controls:after, .container:after, .container-fluid:after, .row:after { - content: " "; - display: table; -} -.clearfix:after, .controls:after, .container:after, .container-fluid:after, .row:after { - clear: both; -} - -input, select, textarea, button { - display: inline-block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 1em; - line-height: 21px; - padding: 4px 8px; - color: #333333; - background: white; - border: solid 1px #cccccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 208px; -} - -textarea { - min-height: 84px; -} - -.control-group { - margin-bottom: 21px; -} - -.control-label { - float: left; - width: 140px; -} - -.controls { - margin-left: 160px; -} - -.checkbox input { - width: auto; -} - -.btn { - background: #eeeeee; - border: solid 1px #cccccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - color: #333333; - cursor: pointer; - display: inline-block; - line-height: 21px; - padding: 5px 20px; - width: auto; -} -.btn:hover { - background: #dddddd; -} - -.container { - margin: 0 auto; - max-width: 940px; - padding: 0 20px; -} - -.container-fluid { - width: 100%; -} - -.row { - margin-left: -2.08333%; - _overflow: hidden; -} -@media screen and (max-width: 640px) { - .row { - margin-left: 0; - } -} - -.column { - display: inline; - float: left; - margin-left: 2.08333%; - vertical-align: top; -} -@media screen and (max-width: 640px) { - .column { - display: block; - float: none; - margin-left: 0; - width: auto !important; - } -} - -.column-span-1 { - width: 6.25%; - *width: 6.23%; -} - -.column-span-2 { - width: 14.58333%; - *width: 14.56333%; -} - -.column-span-3 { - width: 22.91667%; - *width: 22.89667%; -} - -.column-span-4 { - width: 31.25%; - *width: 31.23%; -} - -.column-span-5 { - width: 39.58333%; - *width: 39.56333%; -} - -.column-span-6 { - width: 47.91667%; - *width: 47.89667%; -} - -.column-span-7 { - width: 56.25%; - *width: 56.23%; -} - -.column-span-8 { - width: 64.58333%; - *width: 64.56333%; -} - -.column-span-9 { - width: 72.91667%; - *width: 72.89667%; -} - -.column-span-10 { - width: 81.25%; - *width: 81.23%; -} - -.column-span-11 { - width: 89.58333%; - *width: 89.56333%; -} - -.column-span-12 { - width: 97.91667%; - *width: 97.89667%; -} - -.row-no-gutters .column { - margin-left: 0; -} - -.row-no-gutters .column-span-1 { - width: 8.33333%; - *width: 8.31333%; -} - -.row-no-gutters .column-span-2 { - width: 16.66667%; - *width: 16.64667%; -} - -.row-no-gutters .column-span-3 { - width: 25%; - *width: 24.98%; -} - -.row-no-gutters .column-span-4 { - width: 33.33333%; - *width: 33.31333%; -} - -.row-no-gutters .column-span-5 { - width: 41.66667%; - *width: 41.64667%; -} - -.row-no-gutters .column-span-6 { - width: 50%; - *width: 49.98%; -} - -.row-no-gutters .column-span-7 { - width: 58.33333%; - *width: 58.31333%; -} - -.row-no-gutters .column-span-8 { - width: 66.66667%; - *width: 66.64667%; -} - -.row-no-gutters .column-span-9 { - width: 75%; - *width: 74.98%; -} - -.row-no-gutters .column-span-10 { - width: 83.33333%; - *width: 83.31333%; -} - -.row-no-gutters .column-span-11 { - width: 91.66667%; - *width: 91.64667%; -} - -.row-no-gutters .column-span-12 { - width: 100%; - *width: 99.98%; -} - -.nav { - list-style: none; - margin-left: 0; -} - -.nav > li { - display: inline-block; - *display: inline; -} - -.nav > li > a { - display: block; -} - -.table { - width: 100%; - border-collapse: collapse; -} - -.table th, -.table td { - text-align: left; - vertical-align: top; - border-top: 1px solid #dddddd; - padding: 10.5px 10px; -} - -.table th { - font-weight: bold; - border-top: 0; -} - -.table thead th { - vertical-align: bottom; -} +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,dfn,th,var{font-style:normal;font-weight:normal}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:bold}q:before,q:after{content:''}abbr,acronym{border:0}html{background-color:#fff;color:#333;font-size:62.5%}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-size:1.4rem;line-height:1.5}h1,h2,h3,h4,h5,h6,p,ul,ol,table,pre,fieldset{margin-bottom:21px}h1{font-size:28px;font-size:2.8rem}h2{font-size:1.71429em;line-height:0.875em}h3{font-size:1.5em;line-height:1em}h4{font-size:1.28571em;line-height:1.16667em}h5{font-size:1.14286em;line-height:1.3125em}h6{font-size:1.14286em;line-height:1.3125em}ul,ol{margin-left:24px}ul ul,ol ol{margin-bottom:0}img{display:block;max-width:100%;height:auto}.alignleft{float:left}img.alignleft{margin-right:20px}.alignright{float:right}img.alignright{margin-left:20px}.aligncenter{display:block;margin-left:auto;margin-right:auto}.clearfix,.controls,.container,.container-fluid,.row{*zoom:1}.clearfix:before,.controls:before,.container:before,.container-fluid:before,.row:before,.clearfix:after,.controls:after,.container:after,.container-fluid:after,.row:after{content:" ";display:table}.clearfix:after,.controls:after,.container:after,.container-fluid:after,.row:after{clear:both}input,select,textarea,button{display:inline-block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em;line-height:21px;padding:4px 8px;color:#333;background:#fff;border:solid 1px #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px;width:208px}textarea{min-height:84px}.control-group{margin-bottom:21px}.control-label{float:left;width:140px}.controls{margin-left:160px}.checkbox input{width:auto}.btn{background:#eee;border:solid 1px #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px;color:#333;cursor:pointer;display:inline-block;line-height:21px;padding:5px 20px;width:auto}.btn:hover{background:#ddd}.container{margin:0 auto;max-width:940px;padding:0 20px}.container-fluid{width:100%}.row{margin-left:-2.08333%;_overflow:hidden}@media screen and (max-width: 640px){.row{margin-left:0}}.column{display:inline;float:left;margin-left:2.08333%;vertical-align:top}@media screen and (max-width: 640px){.column{display:block;float:none;margin-left:0;width:auto !important}}.column-span-1{width:6.25%;*width:6.23%}.column-span-2{width:14.58333%;*width:14.56333%}.column-span-3{width:22.91667%;*width:22.89667%}.column-span-4{width:31.25%;*width:31.23%}.column-span-5{width:39.58333%;*width:39.56333%}.column-span-6{width:47.91667%;*width:47.89667%}.column-span-7{width:56.25%;*width:56.23%}.column-span-8{width:64.58333%;*width:64.56333%}.column-span-9{width:72.91667%;*width:72.89667%}.column-span-10{width:81.25%;*width:81.23%}.column-span-11{width:89.58333%;*width:89.56333%}.column-span-12{width:97.91667%;*width:97.89667%}.row-no-gutters .column{margin-left:0}.row-no-gutters .column-span-1{width:8.33333%;*width:8.31333%}.row-no-gutters .column-span-2{width:16.66667%;*width:16.64667%}.row-no-gutters .column-span-3{width:25%;*width:24.98%}.row-no-gutters .column-span-4{width:33.33333%;*width:33.31333%}.row-no-gutters .column-span-5{width:41.66667%;*width:41.64667%}.row-no-gutters .column-span-6{width:50%;*width:49.98%}.row-no-gutters .column-span-7{width:58.33333%;*width:58.31333%}.row-no-gutters .column-span-8{width:66.66667%;*width:66.64667%}.row-no-gutters .column-span-9{width:75%;*width:74.98%}.row-no-gutters .column-span-10{width:83.33333%;*width:83.31333%}.row-no-gutters .column-span-11{width:91.66667%;*width:91.64667%}.row-no-gutters .column-span-12{width:100%;*width:99.98%}.nav{list-style:none;margin-left:0}.nav>li{display:inline-block;*display:inline}.nav>li>a{display:block}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;vertical-align:top;border-top:1px solid #ddd;padding:10.5px 10px}.table th{font-weight:bold;border-top:0}.table thead th{vertical-align:bottom}