Skip to content

Instantly share code, notes, and snippets.

@dawidw
Created March 7, 2014 02:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dawidw/9403854 to your computer and use it in GitHub Desktop.
Save dawidw/9403854 to your computer and use it in GitHub Desktop.
Generated by SassMeister.com.
// ----
// Sass (v3.3.0.rc.5)
// Compass (v1.0.0.alpha.18)
// ----
/* 1. & - Reference symbol */
.block {
background: white;
& .red {
color: red;
}
}
.block2 {
background: black;
.ie8 & .red {
color: blue;
}
}
/* 2. zmienne i listy */
$basic-padding: '10px 5px 2px 1px';
$sprite-icons: 'boy', 'girl', 'dog';
$sprite-icons2: 'boy' 'girl' 'dog';
$font: Helvetica, Arial, sans-serif;
/* 3. @extend
3.a extending classes (the bad way) */
.button {
border: 1px solid ;
padding: 10px;
}
.button--big {
@extend .button;
padding: 20px;
}
/* 3.b extending placeholders (the good way) */
%icon {
background: image-url('http://www.web2generators.com/application/img/sprite-sample.png') no-repeat 0 0;
width: 40px;
height: 40px;
display: inline-block;
}
.icon--fire {
@extend %icon;
}
.icon--rain {
@extend %icon;
background-position: 0 10px;
}
/* 4. mixins - warto używać, jeśli */
// masz powtarzalny kod, który nie uważasz za 'obiekt' jako osobny
@mixin clearfix() {
&:before,
&:after {
content: "";
display: table;
}
&:after {
clear: both;
}
}
.container {
@include clearfix;
}
// oraz vendor-prefixes
@mixin box-sizing($box-model) {
-webkit-box-sizing: $box-model; // Safari <= 5
-moz-box-sizing: $box-model; // Firefox <= 19
box-sizing: $box-model;
}
.article {
@include box-sizing(border-box);
}
// albo jeśli nie chce nam się dużo pisać :)
@mixin letterpress($opacity){
text-shadow:white($opacity) 0 1px 0;
}
.nav__title {
@include letterpress(0.2);
}
// więcej przydatnych usecasów http://web-design-weekly.com/blog/2013/05/12/handy-sass-mixins/
/* 5. functions */
.post--big{
width: percentage(.5);
font-size: max(12px, 14px, 16px);
background: rgba(231, 0.8, 2, .8);
}
@function fibonacci($n) {
$fib: 0 1;
@for $i from 1 through $n {
$new: nth($fib, length($fib)) + nth($fib, length($fib) - 1);
$fib: append($fib, $new);
}
@return $fib;
}
$fib: fibonacci(10);
// -> 0 1 1 2 3 5 8 13 21 34 55 89
@function prepend($list, $value) {
@return join($value, $list);
}
$list: b, c, d, e, f;
$new-list: prepend($list, a);
$abother-list: reject($list, f);
// http://sass-lang.com/documentation/Sass/Script/Functions.html
// http://hugogiraudel.com/2013/08/08/advanced-sass-list-functions/
// http://hugogiraudel.com/ <- swir, robi cuda z sassem
/* 6. interpolacja */
// w sassie możemy interpolować zmienne
$zmienna: 'dupa';
.button--#{$zmienna} {
background: khaki;
}
/* 7. control directives */
// http://flippinawesome.org/2014/03/03/getting-into-sass-control-directives
// mamy do dyspozycji @if, @for, @each, @while...
$heading-base-font-size: 36px;
@for $i from 1 through 6 {
h#{$i} {
font-size: $heading-base-font-size - 4 * $i;
}
}
$sides: bottom left right top;
$border-color: #f00;
@each $first_side in $sides {
.border-#{$first_side} {
border-#{$first_side}: 1px solid $border-color;
}
@each $second_side in $sides {
@if $first_side != $second_side {
.border-#{$first_side}-#{$second_side} {
border-#{$first_side}: 1px solid $border-color;
border-#{$second_side}: 1px solid $border-color;
}
}
}
}
/* 8. content directive ! */
@mixin apply-to-ie7-only {
&.ie7{ @content; }
}
.body {
@include apply-to-ie7-only {
#logo {
background-image: url(/logo.gif);
}
}
}
/* 9. podstawy, bad and good practices - dyskusja ;) */
/* - zastanowić się nad designem przed rozpoczęciem projektu
- czy czasami projekt nie wymaga podejścia mobile first?
- jasno określić breakpointy, żeby designerzy nie robili sobie jaj
- również w Twoim interesie jest, żeby designerzy trzymali się ustalonych zasad,
jak widzisz na 3 designie inny font-size dla h2 - zgłoś to
- przejrzeć designy, wyłapać powtarzające się moduły, zbudować z nich styleguide
bibliotekę modułów
- p.selector - overqualified selectors - zbyt specyficzne selektory
- nie zagnieżdżać głębiej niż 3 (inception rule) */
.dupa {
.zbita {
.jesli {
.widzisz {
.cos{
.takiego {
background: gnoj;
}
}
}
}
}
}
/* - zamiast zagnieżdżać w sobie, lepiej odzwierciedlić strukturę htmla
.post {}
.post__title {}
.post__body {}
.post__details {}
.post__timestamp {}
/* - nie stylować po idkach, no moze w wyjątkowych sytuacjach */
/* siła selektorów */
/* a b c d
a - !important, inline style
b - id selector
c - class selectors, attributes selectors, and pseudo-classes in the selector
d - type selectors and pseudo-elements in the selector
*/
// 0 0 2 0
.dupa .blada{
background: pink;
};
// 0 1 2 0
#container .dupa .blada {
background: khaki;
}
// http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/
/* - używać miksinów do powtarzających się cząstek kodu */
/* - nie mieszać kodu klas styli z klasami js */
.button.js-clickable {};
/* 10. @import and partials */
// zamiast Sprockets Directives
/* webs.scss */
/* @import 'modules/post'; */
/* modules/_post.scss */
// tutaj więcej dlaczego warto korzystać z @import
// http://pivotallabs.com/structure-your-sass-files-with-import/
// w skrócie
// * sass import tworzy globalny namespace w którym przechowuje zmienne itd.
// * dzieki czemu nie musimy importować zmiennych w każdym pliku - szybsze
// * _partiale.scss nie są kompilowane do cssa, są ładowane i potem kompilowane, magia
/* 11. BEM */
.block {};
.block__element {};
.block__element--modifier {};
// since sass 3.3
.block {
&__element {}
&--modifier {}
}
/* 12. struktura plików / modularyzacja */
// tutaj jest wiele podejść i każde, które będzie wprowadzało jakąś sensowną granularyzacje się sprawdzi prawdopodobnie
// ja lubię mieć mniej więcej coś takiego: ...
/* - settings <- zmienne, ustawienia fontów, itp.
- utilities <- mixiny / funkcje / generalnie narzędzie
- modules/components <- małe bloki, które można wykorzystać kilka razy w apce
- views <- cssy które są specyficzne dla danego widoku/layoutu
- shame.scss <- jeżeli wiesz, że robisz coś słabo, nie wrzucaj w style, wrzuć do shame, będziesz wiedział, że coś jest do poprawy i bedziesz widział ile tego jest
/* 13. propozycja użycia tego w SPA */
// mobile/activities.coffee
// mobile/activity.hbs
// mobile/activity.scss
@charset "UTF-8";
/* 1. & - Reference symbol */
.block {
background: white;
}
.block .red {
color: red;
}
.block2 {
background: black;
}
.ie8 .block2 .red {
color: blue;
}
/* 2. zmienne i listy */
/* 3. @extend
3.a extending classes (the bad way) */
.button, .button--big {
border: 1px solid;
padding: 10px;
}
.button--big {
padding: 20px;
}
/* 3.b extending placeholders (the good way) */
.icon--fire, .icon--rain {
background: url(http://www.web2generators.com/application/img/sprite-sample.png) no-repeat 0 0;
width: 40px;
height: 40px;
display: inline-block;
}
.icon--rain {
background-position: 0 10px;
}
/* 4. mixins - warto używać, jeśli */
.container:before, .container:after {
content: "";
display: table;
}
.container:after {
clear: both;
}
.article {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.nav__title {
text-shadow: white(0.2) 0 1px 0;
}
/* 5. functions */
.post--big {
width: 50%;
font-size: 16px;
background: rgba(231, 0, 2, 0.8);
}
/* 6. interpolacja */
.button--dupa {
background: khaki;
}
/* 7. control directives */
h1 {
font-size: 32px;
}
h2 {
font-size: 28px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 20px;
}
h5 {
font-size: 16px;
}
h6 {
font-size: 12px;
}
.border-bottom {
border-bottom: 1px solid red;
}
.border-bottom-left {
border-bottom: 1px solid red;
border-left: 1px solid red;
}
.border-bottom-right {
border-bottom: 1px solid red;
border-right: 1px solid red;
}
.border-bottom-top {
border-bottom: 1px solid red;
border-top: 1px solid red;
}
.border-left {
border-left: 1px solid red;
}
.border-left-bottom {
border-left: 1px solid red;
border-bottom: 1px solid red;
}
.border-left-right {
border-left: 1px solid red;
border-right: 1px solid red;
}
.border-left-top {
border-left: 1px solid red;
border-top: 1px solid red;
}
.border-right {
border-right: 1px solid red;
}
.border-right-bottom {
border-right: 1px solid red;
border-bottom: 1px solid red;
}
.border-right-left {
border-right: 1px solid red;
border-left: 1px solid red;
}
.border-right-top {
border-right: 1px solid red;
border-top: 1px solid red;
}
.border-top {
border-top: 1px solid red;
}
.border-top-bottom {
border-top: 1px solid red;
border-bottom: 1px solid red;
}
.border-top-left {
border-top: 1px solid red;
border-left: 1px solid red;
}
.border-top-right {
border-top: 1px solid red;
border-right: 1px solid red;
}
/* 8. content directive ! */
.body.ie7 #logo {
background-image: url(/logo.gif);
}
/* 9. podstawy, bad and good practices - dyskusja ;) */
/* - zastanowić się nad designem przed rozpoczęciem projektu
- czy czasami projekt nie wymaga podejścia mobile first?
- jasno określić breakpointy, żeby designerzy nie robili sobie jaj
- również w Twoim interesie jest, żeby designerzy trzymali się ustalonych zasad,
jak widzisz na 3 designie inny font-size dla h2 - zgłoś to
- przejrzeć designy, wyłapać powtarzające się moduły, zbudować z nich styleguide
bibliotekę modułów
- p.selector - overqualified selectors - zbyt specyficzne selektory
- nie zagnieżdżać głębiej niż 3 (inception rule) */
.dupa .zbita .jesli .widzisz .cos .takiego {
background: gnoj;
}
/* - zamiast zagnieżdżać w sobie, lepiej odzwierciedlić strukturę htmla
.post {}
.post__title {}
.post__body {}
.post__details {}
.post__timestamp {}
/* - nie stylować po idkach, no moze w wyjątkowych sytuacjach */
/* siła selektorów */
/* a b c d
a - !important, inline style
b - id selector
c - class selectors, attributes selectors, and pseudo-classes in the selector
d - type selectors and pseudo-elements in the selector
*/
.dupa .blada {
background: pink;
}
#container .dupa .blada {
background: khaki;
}
/* - używać miksinów do powtarzających się cząstek kodu */
/* - nie mieszać kodu klas styli z klasami js */
/* 10. @import and partials */
/* webs.scss */
/* @import 'modules/post'; */
/* modules/_post.scss */
/* 11. BEM */
/* 12. struktura plików / modularyzacja */
/* - settings <- zmienne, ustawienia fontów, itp.
- utilities <- mixiny / funkcje / generalnie narzędzie
- modules/components <- małe bloki, które można wykorzystać kilka razy w apce
- views <- cssy które są specyficzne dla danego widoku/layoutu
- shame.scss <- jeżeli wiesz, że robisz coś słabo, nie wrzucaj w style, wrzuć do shame, będziesz wiedział, że coś jest do poprawy i bedziesz widział ile tego jest
/* 13. propozycja użycia tego w SPA */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment