Grunt integration

This commit is contained in:
Mike Francis 2014-01-30 11:20:51 +00:00
parent 1531035ceb
commit e18bc5cc8d
14 changed files with 430 additions and 384 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.sass-cache/*
node_modules/*

37
Gruntfile.js Normal file
View File

@ -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']);
};

38
css/_vars.scss Executable file
View File

@ -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;

57
css/generic/_mixins.scss Executable file
View File

@ -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);
}

59
css/generic/_normalise.scss Executable file
View File

@ -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;
}

35
css/generic/_reset.scss Executable file
View File

@ -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;
}

33
css/generic/_utilities.scss Executable file
View File

@ -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;
}
}

49
css/objects/_forms.scss Executable file
View File

@ -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;
}
}

13
css/objects/_nav.scss Executable file
View File

@ -0,0 +1,13 @@
.nav {
list-style: none;
margin-left: 0;
}
.nav > li {
display: inline-block;
*display: inline;
}
.nav > li > a {
display: block;
}

51
css/objects/_scaffolding.scss Executable file
View File

@ -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%;
}
}

21
css/objects/_tables.scss Executable file
View File

@ -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;
}

23
css/style.scss Executable file
View File

@ -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';

11
package.json Normal file
View File

@ -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"
}
}

385
style.css
View File

@ -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}