## Mixin-sets * [`_grid_layout.scss`](#grid-layout) * [`_conditionals.scss`](#conditionals) * [`_colours.scss`](#colours) * [`_css3.scss`](#css3) * [`_typography.scss`](#typography) * [`design-patterns/_buttons.scss`](#buttons) * [`design-patterns/_alpha-beta.scss`](#alpha-beta) * [`design-patterns/_breadcrumbs.scss`](#breadcrumbs) ### Grid layout Grid helpers to enable easy cross browser grids. The grids use absolute widths in older versions of IE or percentage based widths in modern browsers. - `%site-width-container` creates a 960px wide elastic container for you site content block - `%grid-row` container for a row of columns - `@mixin grid-column($width, $full-width: tablet)` a mixin to create grid columns of fraction width These three grid helpers are designed to be used together and aren't guaranteed to work or behave in a predictable way if used in isolation. There is also an `%outdent-to-full-width` selector which can be extended to outdent and element and cause it to take up the edge gutters and butt up to the edge of smaller screens. #### Usage: ``` #page-container { @extend %site-width-container; } .grid-row { @extend %grid-row; .column-third { @include grid-column( 1/3 ); } .column-two-thirds { @include grid-column( 2/3 ); } } .hero-image { @extend %outdent-to-full-width; }
Main content
Sidebar
``` ### Conditionals Media query and IE helpers. These make producing responsive layouts and attaching IE specific styles to elements really easy. To use the IE conditionals you will need to add extra stylesheets for each IE, there's an example of how to do this in the [GOV.UK template](https://github.com/alphagov/govuk_template/blob/master/source/views/layouts/govuk_template.html.erb#L9-L12). " media="screen" rel="stylesheet" type="text/css" /> The conditional logic ensures that only one stylesheet is downloaded. // [1] " media="screen" rel="stylesheet" type="text/css" /> // [1] [1] Note the comment syntax to hide this stylesheet from IE 6-8. At the top of each stylesheet, you will need: $is-ie: true; $ie-version: 6; // [1] @import "application.scss"; // [2] [1] This example is for ie6.css, use 6, 7 or 8 as required here [2] Here `application.scss` is the name of your main stylesheet There are examples for [an IE 6 stylesheet](https://github.com/alphagov/govuk_elements/blob/master/public/sass/main-ie6.scss), [an IE 7 stylesheet](https://github.com/alphagov/govuk_elements/blob/master/public/sass/main-ie7.scss) and [an IE 8 stylesheet](https://github.com/alphagov/govuk_elements/blob/master/public/sass/main-ie8.scss). #### media ##### Description `@mixin media($size: false, $max-width: false, $min-width: false)` ##### Parameters ***note: the parameters are mutually exclusive and the first one found will be used.*** `$size` `size` can be one of `desktop`, `tablet`, `mobile`. `desktop` and `tablet` should be used to add styles to a mobile first stylesheet. `mobile` should be used to add styles to a desktop first stylesheet. It is recommended that you primarily use `desktop` for new stylesheets to enhance mobile first when serving to mobile devices. `$min-width` `$max-width` These should be set to an absolute pixel value. They will get added directly to their respective @media queries. `$ignore-for-ie` Styles that would normally be wrapped in @media queries by this mixin will be instead added to the main block if the `$is-ie` variable is true. Setting `$ignore-for-ie` to `true` means those styles will not be added. ##### Usage div.columns { border: 1px solid; @include media(desktop){ width: 30%; float: left; } @include media($min-width: 500px){ width: 25%; } @include media($max-width: 400px){ width: 25%; } } #### ie-lte Conditially send CSS to IE browsers less than or equal to the named version. ##### Description `@include ie-lte($version)` ##### Parameters `$version` `version` is an integer value. Possible values are `6`, `7`, `8`. ##### Usage div.columns { border: 1px solid; @include ie-lte(7){ border: 0; } } #### ie Send CSS to a named IE version. ##### Description `@include ie($version)` ##### Parameters `$version` `version` is an integer value. Possible values are `6`, `7`, `8`. ##### Usage div.columns { border: 1px solid; @include ie(6){ border: 0; } } ### Colours A collection of colour variables. #### Departmental colours * `$treasury` * `$cabinet-office` * `$department-for-education` * `$department-for-transport` * `$home-office` * `$department-of-health` * `$ministry-of-justice` * `$ministry-of-defence` * `$foreign-and-commonwealth-office` * `$department-for-communities-and-local-government` * `$department-for-energy-and-climate-change` * `$department-for-culture-media-and-sport` * `$department-for-environment-food-and-rural-affairs` * `$department-for-work-and-pensions` * `$department-for-business-innovation-and-skills` * `$department-for-international-development` * `$government-equalities-office` * `$attorney-generals-office` * `$scotland-office` * `$wales-office` #### Standard palette, colours * `$purple` * `$purple-50` * `$purple-25` * `$mauve` * `$mauve-50` * `$mauve-25` * `$fuschia` * `$fuschia-50` * `$fuschia-25` * `$pink` * `$pink-50` * `$pink-25` * `$baby-pink` * `$baby-pink-50` * `$baby-pink-25` * `$red` * `$red-50` * `$red-25` * `$mellow-red` * `$mellow-red-50` * `$mellow-red-25` * `$orange` * `$orange-50` * `$orange-25` * `$brown` * `$brown-50` * `$brown-25` * `$yellow` * `$yellow-50` * `$yellow-25` * `$grass-green` * `$grass-green-50` * `$grass-green-25` * `$green` * `$green-50` * `$green-25` * `$turquoise` * `$turquoise-50` * `$turquoise-25` * `$light-blue` * `$light-blue-50` * `$light-blue-25` #### Standard palette, greys * `$black` * `$grey-1` * `$grey-2` * `$grey-3` * `$grey-4` * `$white` #### Semantic colour names * `$link-colour` * `$link-active-colour` * `$link-hover-colour` * `$link-visited-colour` * `$text-colour: $black` * `$secondary-text-colour` * `$border-colour` * `$panel-colour` * `$canvas-colour` * `$highlight-colour` * `$page-colour` #### Usage: .column { background: $green; } ### Typography A collection of font-mixins. There are two different types of font mixins. 1. Heading and Copy styles which are the font with added paddings to ensure a consistent baseline vertical grid. 2. Core styles which are base font styles with no extra padding. #### Changing font Typography mixins use a “New Transport” font stack by default. If you are using the toolkit on projects that aren’t GOVUK branded you can override the font using two variables: `$toolkit-font-stack` and `$toolkit-font-stack-tabular`. These must be declared before they are used, eg by the core typography mixins. #### Heading and Copy styles The following heading and copy styles exist: * `heading-80` * `heading-48` * `heading-36` * `heading-27` * `heading-24` * `copy-19` * `copy-16` * `copy-14` ##### Usage h2 { @include heading-27; } #### Core styles The following core styles exist: * `core-80` * `core-48` * `core-36` * `core-27` * `core-24` * `core-19` * `core-16` * `core-14` ##### Description `@include core-[size]($line-height, $line-height-640)` ##### Parameters `$line-height` and `$line-height-640` are both optional. When used it is recomended to pass a fraction in for readability. ##### Usage h1 { @include core-48; } h2 { @include core-24($line-height: (50/24), $line-height-640: (18/16)); } #### Tabular numbers Tabular numbers have numerals of a standard fixed width. As all numbers have the same width, sets of numbers may be more easily compared. We recommend using them where different numbers are likely to be compared, or where different numbers should line up with each other, eg in tables. `$tabular-numbers` is an optional variable that may be passed to the heading, copy and core styles to use (or explicitly not use) tabular numbers. When no variable is passed, the default is non-tabular. ##### Usage h1 { @include core-48; } h2 { @include core-24($tabular-numbers: true); } [See an example of tabular numbers in a table](http://govuk-elements.herokuapp.com/data/#data-table-numeric) ### css3 CSS3 helpers to abstract vendor prefixes. #### border-radius ##### Description `@mixin border-radius($radius)` ##### Parameters `$radius` a pixel value. ##### Usage .column { @include border-radius(5px); } #### box-shadow ##### Description `@mixin box-shadow($shadow)` ##### Parameters `$shadow` a value set to pass into [`box-shadow`](https://developer.mozilla.org/en-US/docs/CSS/box-shadow). ##### Usage .column { @include box-shadow(0 0 5px black); } #### translate ##### Description `@mixin translate($x, $y)` ##### Parameters `$x` and `$y` are css values. ##### Usage .column { @include translate(2px, 3px); } #### gradient This can currently only handle linear top to bottom gradients. ##### Description `@mixin gradient($from, $to)` ##### Parameters `$from` and `$to` are colour values. ##### Usage .column { @include gradient(#000, #fff); } #### transition ##### Description `@mixin transition($property, $duration, $function, $delay:0s)` ##### Parameters Match up with the respective properties from [`transition`](https://developer.mozilla.org/en-US/docs/CSS/transition). ##### Usage .column { @include transition(left, 3s, ease); } #### box-sizing ##### Description `@mixin box-sizing($type)` ##### Parameters `$type` is one of `border-box`, `content-box` and `padding-box`. ##### Usage .column { @include box-sizing(border-box); } #### calc ##### Description `@mixin calc($property, $calc)` ##### Parameters `$property` the property to apply the calc to. `$calc` the calculation to. ##### Usage .column { @include calc(width, "300% - 20px"); } ### Buttons A mixin for creating buttons in the GOV.UK style. ##### Description `@mixin button($colour)` ##### Parameters `$colour` the background colour of the button (default is `$green`). ##### Usage .button{ @include button; } .button-secondary{ @include button($grey-3); } .button-warning{ @include button($red); } ##### Notes The button text colour is set by the mixin to either light or dark, depending on the button background colour. If you're applying these styles to non form elements, adding a class of 'disabled' to the element will emulate the disabled button style. ### Phase banner A mixin to create a GOV.UK Phase banner, with alpha/beta tag inside. #### Description `@mixin phase-banner()` ##### Phase banner - Alpha .phase-banner { @include phase-banner(); }

ALPHA This is a new service – your feedback will help us to improve it.

##### Phase banner - Beta .phase-banner { @include phase-banner(); }

BETA This is a new service – your feedback will help us to improve it.

### Phase tags A mixin to create an alpha/beta tag. #### Description `@mixin phase-tag()` ##### Phase tag - Alpha .alpha-tag{ @include phase-tag(); }

Apply using the new service ALPHA

##### Phase tag - Beta .beta-tag{ @include phase-tag(); }

Apply using the new service BETA

### Breadcrumbs A mixin for creating breadcrumb navigation, showing page hierarchy in the GOV.UK style. #### Description `@mixin breadcrumbs` #### Usage .breadcrumbs { @include breadcrumbs; }