Repository: crushlovely/skyline Branch: master Commit: 7c5b977e1f58 Files: 51 Total size: 225.3 KB Directory structure: gitextract_fuxr4rg9/ ├── .gitignore ├── LICENSE ├── README.md ├── css/ │ ├── README.md │ ├── base/ │ │ ├── _dev-helpers.scss │ │ ├── _fonts.scss │ │ ├── _mixin-breakpoints.scss │ │ ├── _mixin-clearfix.scss │ │ ├── _mixin-font-face-importer.scss │ │ ├── _mixin-gradual-media-queries.scss │ │ ├── _print.scss │ │ ├── _reset.scss │ │ └── _vars.scss │ ├── elements/ │ │ ├── _body.scss │ │ ├── _buttons.scss │ │ ├── _code.scss │ │ ├── _forms.scss │ │ ├── _headings.scss │ │ ├── _hr.scss │ │ ├── _html.scss │ │ ├── _icons.scss │ │ ├── _images.scss │ │ ├── _links.scss │ │ ├── _lists.scss │ │ ├── _quotes.scss │ │ ├── _tables.scss │ │ └── _text.scss │ ├── layout/ │ │ ├── _container.scss │ │ ├── _grids.scss │ │ ├── _hide.scss │ │ ├── _media.scss │ │ ├── _ups.scss │ │ └── _widths.scss │ ├── modules/ │ │ ├── _alerts.scss │ │ ├── _blocks.scss │ │ ├── _callouts.scss │ │ ├── _heroes.scss │ │ ├── _modals.scss │ │ ├── _pages.scss │ │ ├── _site-footer.scss │ │ ├── _site-header.scss │ │ ├── _site-main.scss │ │ ├── _site.scss │ │ ├── _thumbnails.scss │ │ └── _video-embeds.scss │ ├── screen.css │ └── screen.scss ├── example-forms.html ├── example-grids.html ├── example-modules.html └── index.html ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store .sass-cache stylesheets/.sass-cache ================================================ FILE: LICENSE ================================================ The MIT License Copyright (c) 2014 Jeff Schram (Crush & Lovely) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ ![Skyline](http://skyline.is/avatar-7aab8b54.png) # Skyline Evolving CSS Architecture ### Introduction Skyline is a starting point for building custom CSS frameworks. The starter kit provides a solid CSS architecture that acts as a scaffolding to support your unique design system. It promotes object-oriented CSS, written in SCSS using BEM notation. Learn more at http://skyline.is Take a look at the example pages, with the initial starter styles at [http://crushlovely.github.io/skyline](http://crushlovely.github.io/skyline) ### Credits Developed by the [Crush & Lovely](http://crushlovely.com) Engineering Team * Jeff Schram / [@jeffschram](http://twitter.com/jeffschram) / [jeffschram.com](http://jeffschram.com) * with Adam Becker, Jacob Fentress, & Ryan Buttrey Feel free to contact Jeff on twitter [@jeffschram](http://twitter.com/jeffschram) with questions, comments, etc. And issues and pull requests are always welcome. ### Setup We wanted to keep the starter files as lean as possible. This isn't a self-contained app, it has demo images, example HTML, and the Skyline SCSS files in the CSS folder. You'll likely copy the SCSS files into your own app, and use the example HTML files as guides to mark up your own pages. ``` ├── css | ├── base | ├── variables, resets, mixins, global assets like fonts | ├── elements | ├── styles for base elements (p, ul, img, form, etc.) | ├── layout | ├── grids, widths, utilities, etc. | ├── modules | ├── styles for objects/modules you create (.site-header, .hero, .page, .bio, .site-footer, etc.) | ├── README.md (credits and info about Skyline SCSS) | | ├── screen.scss (the manifest file that pulls in all the partials and compiles into screen.css) | ├── images | ├── (placeholder images are here for example pages) | ├── example-forms.html | ├── example-grids.html | ├── example-modules.html | ├── index.html | ├── README.md ``` ### Skyline's architecture is composed of 4 layers. Base contains global settings, variables, resets, and mixins. These make up the foundation of your CSS. Elements contains all the global styling for basic stand-alone elements; such as links, quotes, tables, and text. Layout contains structural helper classes like .container, which restricts content to a consistent max-width, and a responsive grid system as well. Modules are custom-made components that are used throughout your site. These include global modules like the site header and footer, and other reusable modules like alerts and heroes. ### See it in action You can view the example pages in a browser, make sure you're compiling the SCSS if you want to see any changes you've made to the Skyline files reflected in the examples. ### Documentation Extensive docs are in the works, but not yet released. However, Skyline makes it easy by adding detailed documentation in the comments of the scss partials themselves. Descriptions are right next to the actual code, making it simple to learn how it works. ## Copyright Copyright (c) 2014 Jeff Schram (Crush & Lovely). See LICENSE for further details. ================================================ FILE: css/README.md ================================================ BUILT WITH SKYLINE: EVOLVING CSS ARCHITECTURE ========================================================= SKYLINE CREATED BY CRUSH & LOVELY ENGINEERING --------------------------------------------------------- Jeff Schram Adam Becker @jeffschram @adambbecker jeffschram.com adambbecker.com Jacob Fentress Ryan Buttrey @jfentress @ryanbuttrey jacobfentress.com ryanbuttrey.com COLOPHON & GUIDELINES --------------------------------------------------------- Skyline is an object-oriented CSS architecture system written in SCSS with BEM notation and is heavily inspired by the concepts found in SMACCS, ITCSS, Bootstrap, & Atomic Design. ADDITIONAL CREDITS, INSPIRATION & SHOUT OUTS --------------------------------------------------------- Harry Roberts Chris Coyier Brad Frost @csswizardry @crishcoyier @bradfrost csswizardry.com css-tricks.com patternlab.io inuitcss.com codepen.io bradfrostweb.com Jonathan Snook Nicole Sullivan @snook @stubbornella smaccs.com stubbornella.org - For some mixins, naming conventions and OOCSS concepts - Check these guys out and learn from their awesomeness Nicolas Gallagher http://nicolasgallagher.com http://necolas.github.io/normalize.css/ - For the reset HTML5 Boilerplate (@h5bp) html5boilerplate.com - For the print stylesheet Twitter Bootstrap (@twbootstrap) twitter.github.com/bootstrap - For some component ideas, naming conventions and javascript QUICK NOTE --------------------------------------------------------- A quick note on navigating through the project files: We are using @waypoints to allow you to easily search for certain sections. For instance, to get to the Table Of Contents (or toc) just search for "@toc" ================================================ FILE: css/base/_dev-helpers.scss ================================================ /** @dev helpers -------------------------------------------------------- base/_dev-helpers.scss -------------------------------------------------------- Dev helpers highlight elements and/or show information about the site and its current state (breakpoints, etc.) These are made active by adding classes to the HTML element. A JS system to toggle these classes is in the works. This partial requires: * base/_vars.scss * base/_mixin-breakpoints.scss -------------------------------------------------------- */ // Dev configuration // -------------------------------------------------------- // // Define color variables // $dev__color__default: $color__grey; $dev__color__xs: $color__sky-blue; $dev__color__sm: $color__green; $dev__color__md: $color__salmon; $dev__color__lg: $color__blue; $dev__color__xl: $color__purple; $dev__color__xxl: $color__brown; // // Define background opacity $dev__bg-opacity: .25; /* @highlight elements at breakpoint -------------------------------------------------------- Highlight an element at certain breakpoints by changing its color; Add .dev--highlight to the HTML element to enable this. Example: Highlight a title at MD breakpoint

I will change color at MD breakpoint

-------------------------------------------------------- */ .dev--highlight-elements { @include bp-at-least($breakpoint__xs) { [class*="-highlight"] { color: inherit; } .xs-highlight { color: $dev__color__xs; } } @include bp-at-least($breakpoint__sm) { [class*="-highlight"] { color: inherit; } .sm-highlight { color: $dev__color__sm; } } @include bp-at-least($breakpoint__md) { [class*="-highlight"] { color: inherit; } .md-highlight { color: $dev__color__md; } } @include bp-at-least($breakpoint__lg) { [class*="-highlight"] { color: inherit; } .lg-highlight { color: $dev__color__lg; } } @include bp-at-least($breakpoint__xl) { [class*="-highlight"] { color: inherit; } .xl-highlight { color: $color__purple; } } @include bp-at-least($breakpoint__xxl) { [class*="-highlight"] { color: inherit; } .xxl-highlight { color: $dev__color__xxl; } } } /* @highlight grids in dev mode -------------------------------------------------------- Indicate grids using responsive widths at certain breakpoints. Add .dev--grids to the HTML element to enable this. No extra classes are needed on the grids themselves. -------------------------------------------------------- */ .dev--highlight-grids { // Grids // .g, .grid { > * { min-height: 4em; background: rgba(193, 199, 208, .5); border: 1px solid rgba(193, 199, 208, .5); } @include bp-at-least($breakpoint__xs) { &[class*="xs-"] > * { border-color: $dev__color__xs; background: rgba($dev__color__xs, $dev__bg-opacity); } } @include bp-at-least($breakpoint__sm) { &[class*="sm-"] > * { border-color: $dev__color__sm; background: rgba($dev__color__sm, $dev__bg-opacity); } } @include bp-at-least($breakpoint__md) { &[class*="md-"] > * { border-color: $dev__color__md; background: rgba($dev__color__md, $dev__bg-opacity); } } @include bp-at-least($breakpoint__lg) { &[class*="lg-"] > * { border-color: $dev__color__lg; background: rgba($dev__color__lg, $dev__bg-opacity); } } @include bp-at-least($breakpoint__xl) { &[class*="xl-"] > * { border-color: $color__purple; background: rgba($color__purple, $dev__bg-opacity); } } @include bp-at-least($breakpoint__xxl) { &[class*="xxl-"] > * { border-color: $dev__color__xxl; background: rgba($dev__color__xxl, $dev__bg-opacity); } } } // Ups .gw, .grid-wrap { @include bp-at-least($breakpoint__xs) { &[class*="xs-"][class*="-up"] > * > * { border-color: $dev__color__xs; background: rgba($dev__color__xs, $dev__bg-opacity); } } @include bp-at-least($breakpoint__sm) { &[class*="sm-"][class*="-up"] > * > * { border-color: $dev__color__sm; background: rgba($dev__color__sm, $dev__bg-opacity); } } @include bp-at-least($breakpoint__md) { &[class*="md-"][class*="-up"] > * > * { border-color: $dev__color__md; background: rgba($dev__color__md, $dev__bg-opacity); } } @include bp-at-least($breakpoint__lg) { &[class*="lg-"][class*="-up"] > * > * { border-color: $dev__color__lg; background: rgba($dev__color__lg, $dev__bg-opacity); } } @include bp-at-least($breakpoint__xl) { &[class*="xl-"][class*="-up"] > * > * { border-color: $color__purple; background: rgba($color__purple, $dev__bg-opacity); } } @include bp-at-least($breakpoint__xxl) { &[class*="xxl-"][class*="-up"] > * > * { border-color: $dev__color__xxl; background: rgba($dev__color__xxl, $dev__bg-opacity); } } } } /* @show the current breakpoint -------------------------------------------------------- Adds a badge to the bottom right of the body to show the current breakpoint. To enable this, add .dev--show-breakpoint to the HTML element -------------------------------------------------------- */ .dev--show-breakpoint { body:before { content: "-"; position: fixed; bottom: 0; right: 0; padding: 1em; border: 1px solid $dev__color__default; background: rgba($dev__color__default, $dev__bg-opacity); font-size: .25em; line-height: 1; color: $dev__color__default; @include bp-at-least($breakpoint__xs) { content: "XS"; color: $dev__color__xs; background: rgba($dev__color__xs, $dev__bg-opacity); border-color: $dev__color__xs; } @include bp-at-least($breakpoint__sm) { content: "SM"; color: $dev__color__sm; background: rgba($dev__color__sm, $dev__bg-opacity); border-color: $dev__color__sm; } @include bp-at-least($breakpoint__md) { content: "MD"; color: $dev__color__md; background: rgba($dev__color__md, $dev__bg-opacity); border-color: $dev__color__md; } @include bp-at-least($breakpoint__lg) { content: "LG"; color: $dev__color__lg; background: rgba($dev__color__lg, $dev__bg-opacity); border-color: $dev__color__lg; } @include bp-at-least($breakpoint__xl) { content: "XL"; color: $dev__color__xl; background: rgba($dev__color__xl, $dev__bg-opacity); border-color: $dev__color__xl; } @include bp-at-least($breakpoint__xxl) { content: "XXL"; color: $dev__color__xxl; background: rgba($dev__color__xxl, $dev__bg-opacity); border-color: $dev__color__xxl; } } } ================================================ FILE: css/base/_fonts.scss ================================================ /** @fonts -------------------------------------------------------- base/_fonts.scss -------------------------------------------------------- Define the fonts used in this app and declare silent classes to be used in your CSS. If you are using a webfont that you're hosting, add the @embed-font() mixin from base/_mixin-font-face-importer.scs before you declare your fonts. Usage: Create a font-family named "interstate-light" using a font at /fonts/interstate_light-webfont.woff (and other extensions) @include embed-font("interstate-light", "/fonts/interstate_light-webfont"); If you are using Google Fonts, you can add the import code before you declare your fonts. @import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700); -------------------------------------------------------- */ /* @sans -------------------------------------------------------- This is your basic sans font. Usage: use sans regular on a p p { @extend %sans--regular; } ------------------------------------------------------ */ $sans:sans-serif; %sans--light { font-family: $sans; font-weight: 300; font-style: normal; } %sans--regular { font-family: $sans; font-weight: 400; font-style: normal; } %sans--semi-bold { font-family: $sans; font-weight: 600; font-style: normal; } %sans--bold { font-family: $sans; font-weight: 700; font-style: normal; } /* @serif -------------------------------------------------------- This is your basic serif font. Usage: use serif regular on a p p { @extend %serif--regular; } -------------------------------------------------------- */ $serif: georgia, times; %serif--light { font-family: $serif; font-weight: 300; font-style: normal; } %serif--regular { font-family: $serif; font-weight: 400; font-style: normal; } %serif--italic { font-family: $serif; font-weight: 400; font-style: italic; } %serif--semi-bold { font-family: $serif; font-weight: 600; font-style: italic; } ================================================ FILE: css/base/_mixin-breakpoints.scss ================================================ /** @breakpoints mixin ----------------------------------------------------- base/_mixin-breakpoints.scss ----------------------------------------------------- This mixin makes using inline media queries easy. Options include bp-at-least for min-width, bp-until for max-width, and bp-between for min and max widths. You can use your breakpoint vars, or any other value. Usage: styles at medium breakpoint .some-element { @include bp-at-least($breakpoint__md){ your-styles: go-here; } } Usage: styles at custom breakpoint .another-element { @include bp-until(83.45em){ your-styles: go-here; } } ----------------------------------------------------- */ // Breakpoint At Least @mixin bp-at-least($device-width) { @media screen and (min-width: $device-width) { @content } } // Breakpoint Until @mixin bp-until($device-width) { @media screen and (max-width: $device-width - .01) { @content } } // Breakpoint Between @mixin bp-between($device-width, $device-width2) { @media screen and (min-width: $device-width) and (max-width: $device-width2) { @content } } ================================================ FILE: css/base/_mixin-clearfix.scss ================================================ /** @clearfix mixin --------------------------------------------------------- base/_clearfix.scss -------------------------------------------------------- Use @include clearfix(); in your CSS Usage: clearfix mixin .element-to-clearfix { @include cleafix(); } --------------------------------------------------------- */ @mixin clearfix() { &:before, &:after { content: " "; display: table; } &:after { clear: both; } // For IE 6/7 (trigger hasLayout) zoom: 1; } ================================================ FILE: css/base/_mixin-font-face-importer.scss ================================================ /** @font-face importer mixin ----------------------------------------------------------- _base/_mixin-font-face-importer.scss ----------------------------------------------------------- Use this mixin to embed a font $font-name is used in your css in font-family declarations $font-filepath-and-name is the location of your font file and the filename WITHOUT the file extension. The extensions are added here in the mixin Usage: @include embed-font($font-name, $font-filepath-and-name); --------------------------------------------------------- */ @mixin embed-font($font-name, $font-filepath-and-name){ @font-face { font-family: $font-name; src: url($font-filepath-and-name+".eot"); /* IE9 Compat Modes */ src: url($font-filepath-and-name+".eot?#iefix") format('embedded-opentype'), /* IE6-IE8 */ url($font-filepath-and-name+".woff") format('woff'), /* Modern Browsers */ url($font-filepath-and-name+".ttf") format('truetype'), /* Safari, Android, iOS */ url($font-filepath-and-name+".svg#svgFontName") format('svg'); /* Legacy iOS */ } } ================================================ FILE: css/base/_mixin-gradual-media-queries.scss ================================================ /** @gradual media queries mixin -------------------------------------------------------- base/_mixin-gradual-media-queries.scss -------------------------------------------------------- The mixin takes arguments of start-width, start-fontsize, end-width, and end-fontsize and then creates media queries between those start and end points at another argument value, increment-width. Usage: Gradually increase the font size of the html html { @include gradual-queries(20em, 80%, 70em, 100%, 10em) } In the above usage, the html fontsize will start out at 80% at 20em and end up at 100% at 70em - and the gradual changes in the fontsize percentage will be calculated at 10em intervals. See http://codepen.io/jeffschram/pen/IixqA ------------------------------------------------------ */ // FUNCTION TO STRIP UNITS @function strip-units($number) { @return $number / ($number * 0 + 1); } // GRADUAL QUERIES MIXIN @mixin gradual-queries($start-width, $start-fontsize, $end-width, $end-fontsize, $increment-width){ // Define number of increments, $increments $increments: ceil((strip-units($end-width) - strip-units($start-width))/strip-units($increment-width)); // Define the difference between fontsizes $fontsize-diff: (strip-units($end-fontsize) - strip-units($start-fontsize)); // The amount of difference, incrementally $fontsize-increment: $fontsize-diff/$increments; // Apply adjusted fontsizes @for $i from 0 to $increments { $increment-point: $start-width+$i*$increment-width; @media (min-width: $increment-point){ font-size: $start-fontsize+($i*$fontsize-increment); } } @media (min-width: $end-width){ font-size: $end-fontsize; } } ================================================ FILE: css/base/_print.scss ================================================ /** @print -------------------------------------------------------- base/_print.scss -------------------------------------------------------- Print Stylesheet from http://h5bp.com/r ----------------------------------------------------- */ /* ========================================================================== Print styles. Inlined to avoid required HTTP connection: h5bp.com/r CREDIT: HTML5 Boilerplate ========================================================================== */ @media print { * { background: transparent !important; color: #000 !important; /* Black prints faster: h5bp.com/s */ box-shadow: none !important; text-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } // Don't show links for images, or javascript/internal links .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; /* h5bp.com/t */ } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } ================================================ FILE: css/base/_reset.scss ================================================ /** @reset --------------------------------------------------------- base/_reset.scss -------------------------------------------------------- This reset institutes the border-box box model and then block and margin/padding resets. Throughout Skyline, each partial has it's own resets. This allows you to only use what you need. Credit goes to Normalize http://normalize.css v2.1.0 http://git.io/normalize --------------------------------------------------------- */ // Apply the new box model definition & reset to no margin on anything * { &, &:before, &:after{ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 0; margin: 0; } } // Apply display block to new HTML5 elements article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary, audio, canvas, video { display: block; } ================================================ FILE: css/base/_vars.scss ================================================ /** @variables --------------------------------------------------------- base/_vars.scss -------------------------------------------------------- Global variables are defined here. Define your colors, spacing and grid settings. ----------------------------------------------------- */ /* @colors -------------------------------------------------------- All color variables are defined here. We use real color names here. Although naming something like 'brand' is in fact more generic and reusable, we've found that you end up creating variables like $brand-2, $brand-alt, $brand-complimentary etc. While coding, it's too easy to forget what those mean. If the design changes drastically and the brand changes from, let's say, blue to green, just do a global find/replace - that's what text editors are for. ------------------------------------------------------ */ // Colors // $color__black: #515554; $color__grey: #b0b3b3; $color__grey--light: #cfd2d2; $color__offwhite: #f4f4f4; $color__white: #fff; $color__green: #a2bb60; $color__salmon: #eb6d58; $color__sky-blue: #94c1c8; $color__blue: #0D699C; $color__purple: #c492bc; $color__navy: #151e23; $color__brown: #76400b; $color__error: red; $color__warning: yellow; $color__info: blue; $color__success: green; /* @breakpoints --------------------------------------------------------- Define global breakpoints as xs, sm, md, lg, xl, xxl --------------------------------------------------------- */ // Define breakpoints map to help with some other functions // and mixins. Very fancy :) // $breakpoints: ( n: 0, xs: 20em, sm: 34.375em, md: 48em, lg: 64em, xl: 78.5em, xxl: 100em ); // Define individual variables // // Extra Small: Small mobile $breakpoint__xs: map-get($breakpoints, xs); // Small: Larger mobile $breakpoint__sm: map-get($breakpoints, sm); // Medium: Tablet $breakpoint__md: map-get($breakpoints, md); // Large: Landscape tablet, beginning desk size $breakpoint__lg: map-get($breakpoints, lg); // Extra Large: Large Desk size $breakpoint__xl: map-get($breakpoints, xl); // Double Extra Large: Huge Desk size $breakpoint__xxl: map-get($breakpoints, xxl); /* @global spacing unit --------------------------------------------------------- Define an em value for $unit. $unit is a helpful little variable that serves to keep your spacing consistent. Most often, 1 $unit is equal to your baseline height. So if your baseline height is 1.125ems (which is 18px), that's the value of 1 $unit. --------------------------------------------------------- */ $unit: 1.125em; ================================================ FILE: css/elements/_body.scss ================================================ /** @body -------------------------------------------------------- elements/_body.scss -------------------------------------------------------- Body should contain the document's default font and background color for the content, if that background color is different than the html. ------------------------------------------------------ */ body { @extend %sans--regular; line-height: 1.5; color: $color__black; background: $color__white; } ================================================ FILE: css/elements/_buttons.scss ================================================ /** @buttons -------------------------------------------------------- elements/_buttons.scss -------------------------------------------------------- Buttons are a common UI component in sites/apps. They are usually either anchor, button, or input elements with a classname of 'btn'. They provide an easily identified clickable target. Buttons commonly have modifying classes that apply specific styles. Examples of these are .btn--large and .btn--inline Example: Buttons using anchors

Regular Button

Example: Buttons using buttons

------------------------------------------------------ */ button { &:focus, &:active { outline: none; box-shadow: none; border: none; } } .btn { -webkit-appearance: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; background: $color__black; color: $color__white; border: none; @extend %sans--regular; font-size: 1.25em; text-transform: uppercase; text-decoration: none; letter-spacing: .225em; padding: 1em 1.25em; &:hover, &:focus, &:active { outline: none; opacity: .85; } } /* @btn--secondary -------------------------------------------------------- A btn modifier, secondary Example: .btn--secondary Secondary button ------------------------------------------------------ */ .btn--secondary { background: none; border: 1px solid $color__white; color: $color__white; } /* @btn--large -------------------------------------------------------- A btn modifier, large Example: .btn--large Large button ------------------------------------------------------ */ .btn--large { @include bp-at-least($breakpoint__sm) { font-size: 1.25em; padding: 1.25em 2.75em; } } /* @btn--inline -------------------------------------------------------- A btn modifier, if this button is in a paragraph or in anything else that has a defined font-size, this modifier will make the btn inherit the font-size of the partent. Example: .btn--inline

Here's some text Cool button text keeps going

------------------------------------------------------ */ .btn--inline { font-size: 1em; } /* @btn--block -------------------------------------------------------- A btn modifier - makes the button display block, 100% width and aligns the text to the center. Removes left and right padding since the text is center aligned, it is not needed. Actually sometimes having the padding on the left and right causes problems if the centered text is quite long - so we just remove it. Example: .btn--block Block button ------------------------------------------------------ */ .btn--block { display: block; width: 100%; text-align: center; padding-right: 0; padding-left: 0; } /* @btn--icon -------------------------------------------------------- A btn modifier - makes the button display block, 100% width and aligns the text to the center. Removes left and right padding since the text is center aligned, it is not needed. Actually sometimes having the padding on the left and right causes problems if the centered text is quite long - so we just remove it. Example: .btn--icon ------------------------------------------------------ */ .btn--icon { background: transparent; border: none; padding: 0; font-size: 1em; } ================================================ FILE: css/elements/_code.scss ================================================ /** @code -------------------------------------------------------- elements/_code.scss -------------------------------------------------------- Code elements like and

  Example: Code in a paragraph
  

This is a cool paragraph about a classname called .franz

----------------------------------------------------- */ // Code // code { vertical-align: middle; padding: .25em .5em; background: rgba(193, 199, 208, .3); } // Pre pre { } ================================================ FILE: css/elements/_forms.scss ================================================ /** @forms --------------------------------------------------------- elements/_forms.scss -------------------------------------------------------- Base styles for all forms and form related elements Below you'll set styles for all forms, and if you have any specific kinds of forms, like a search form that you create a classname of form--search, put that at the bottom of this partial. This scss partial is pretty big. Here's how it is organized. * Base styling on form elements * Styles for form & form modules --------------------------------------------------------- */ /* @text inputs -------------------------------------------------------- Base styles for inputs Example: Text Input Inputs can use sizing classes, .input--s .input--l Example: Text Small Input Example: Text Input ------------------------------------------------------ */ // Input elements input { -webkit-appearance: none; border-radius: 0; @extend %serif--light; width: 100%; padding: 1em; border: 1px solid $color__black; color: $color__black; &:focus { outline: none; } // Size modifiers &.input--s { font-size: .5rem; } &.input--l { font-size: 1.5rem; } } // Define the input placeholder color to be reused in the // following code $input-placeholder: $color__black; // Placeholders input { &::-webkit-input-placeholder { color: $input-placeholder; @extend %serif--light; } &:-moz-placeholder { color: $input-placeholder; @extend %serif--light; } &::-moz-placeholder { color: $input-placeholder; } &:-ms-input-placeholder { color: $input-placeholder; } } // Placeholders on focus input:focus { &::-webkit-input-placeholder { opacity: .3; } &:-moz-placeholder { opacity: .3; } &::-moz-placeholder { opacity: .3; } &:-ms-input-placeholder { opacity: .3; } } /* @select inputs -------------------------------------------------------- Base styling for all selects Example: Select Input Selects can have added sizing classes, .select--s and .select--l Example: Small select Example: Large select ------------------------------------------------------ */ select { width: 100%; font-size: 1rem; &.select--sm { font-size: .5rem; } &.select--lg { font-size: 1.5rem; } } /* @textareas -------------------------------------------------------- Base styling for textareas Textareas can have .textarea--s or .textarea--l classes for different sizes Example: Textarea Example: Small Textarea Example: Large Textarea ------------------------------------------------------ */ textarea { width: 100%; min-height: 6em; padding: 1em; border: solid 1px $color__black; @extend %serif--light; &:focus { outline: none; } &.textarea--s { font-size: .5rem; } &.textarea--l { font-size: 1.5rem; } } /* @radio inputs -------------------------------------------------------- Base styling for radio inputs. Radios are surrounded by a label for better click targets. Example: Radio Example: Radio with super-long label ------------------------------------------------------ */ input[type=radio] { -webkit-appearance: none; width: 1em; height: 1em; padding: 0; border-radius: 50%; border: 1px solid #444; background: transparent; &:checked { background: #222; } } .label--radio { display: inline-block; position: relative; cursor: pointer; padding-left: 1em; input { position: absolute; top: .7em; left: 0; } } /* @checkbox inputs -------------------------------------------------------- Base styling for checkbox inputs. Checkboxes are surrounded by a label for better click targets. Example: Checkbox Example: Checkbox with super-long label ------------------------------------------------------ */ input[type=checkbox] { -webkit-appearance:none; width: 1em; height: 1em; padding: 0; border: 1px solid #444; background: transparent; &:checked { background: #222; } } .label--checkbox { display: inline-block; position: relative; cursor: pointer; padding-left: 1em; input { position: absolute; top: .7em; left: 0; } } /* @textareas -------------------------------------------------------- Base styling for textareas Example: Textarea ------------------------------------------------------ */ textarea { width: 100%; } /* @labels -------------------------------------------------------- Base styling for labels Example: label