The following are a collection of atomic/functional styles designed to limit writing brand new CSS.
With 2 colors, 5 breakpoints, and all components enabled, the baseline size is 7kb gzipped.
Make sure you first have magic-tricks
installed. Check out the Getting Started guide for more details.
1$ yarn install magic-tricks2
In your main SASS entrypoint, paste the contents of sass/base.scss
.
1// Configuration2@import '~magic-tricks/sass/config';34// //5// === Put Configuration Overrides Here === //6// //78// Mixins9@import '~magic-tricks/sass/mixins';1011// CSS Reset12@import '~magic-tricks/sass/reset';1314// Utilities15@import '~magic-tricks/sass/utils/alignment';16@import '~magic-tricks/sass/utils/background';17@import '~magic-tricks/sass/utils/border';18@import '~magic-tricks/sass/utils/color';19@import '~magic-tricks/sass/utils/cursor';20@import '~magic-tricks/sass/utils/display';21@import '~magic-tricks/sass/utils/float';22@import '~magic-tricks/sass/utils/font-weight';23@import '~magic-tricks/sass/utils/margin';24@import '~magic-tricks/sass/utils/opacity';25@import '~magic-tricks/sass/utils/overflow';26@import '~magic-tricks/sass/utils/pointer-events';27@import '~magic-tricks/sass/utils/position';28@import '~magic-tricks/sass/utils/text-align';29@import '~magic-tricks/sass/utils/transform';30@import '~magic-tricks/sass/utils/transitions';31@import '~magic-tricks/sass/utils/whitespace';32@import '~magic-tricks/sass/utils/z-index';33@import '~magic-tricks/sass/utils/flex';3435// Utility Components36@import '~magic-tricks/sass/components/grid';37@import '~magic-tricks/sass/components/grid-container';38@import '~magic-tricks/sass/components/inline-grid';39@import '~magic-tricks/sass/components/list';40@import '~magic-tricks/sass/components/media';41@import '~magic-tricks/sass/components/spacer';42@import '~magic-tricks/sass/components/visibility';43
To override any default config, import a config file just under the default config import. Some components use loops to create utility classes. You may reduce the size of your final bundle by reducing the number of breakpoints & colors. You can also comment out any components you do not need.
1// Configuration2@import '~magic-tricks/sass/config';34// //5// === Put Configuration Overrides Here === //6// //7@import 'config';8
1// example config.scss23$sides: (4 t : top,5 b : bottom,6 l : left,7 r : right,8 j : justify,9);1011$alignments: (12 l : left,13 r : right,14 c : center,15);1617//18// === Colors ===19//2021$all-colors: (22 white : #FFF,23 black : #000,24);2526//27// === Breakpoints ===28//2930$breakpoints : (31 xs : 400px,32 sm : 600px,33 md : 800px,34 lg : 1000px,35 xl : 1200px,36);3738//39// === Components ===40//4142// Spacer43$spacer-max: 10;44$spacer-size: 10px;4546// Grid47$inline-grid-breakpoint: md;48$inline-grid-column-size: 12;49$inline-grid-gutter-mobile: 10px;50$inline-grid-gutter-desktop: 10px;5152$inline-grid-gutter-extra: (53 none : 0px,54);5556$grid-padding-mobile: 10px;57$grid-padding-desktop: 20px;58$grid-max-width: 1920px;596061//62// === Typography ===63//6465$typography-breakpoint: md;6667$font-size-body-mobile: 16px;68$font-size-body-desktop: 16px;6970$line-height-body-mobile: 24px;71$line-height-body-desktop: 24px;72
There is a complete CSS reset included in magic tricks. It resets all block/inline elements to remove padding/margin etc. It does not reset the button or input elements.
1@import '~magic-tricks/sass/reset';2
1@import '~magic-tricks/sass/mixins';2
1@mixin font-smoothing() {}2
1@mixin multiLineEllipsis($line-height, $lines-to-show) {} // allows for a multi-line ellipsis2
1@mixin selection() {} // targets text selection for styling2
1@mixin placeholder() {} // targets placeholder for styling2
1@mixin clearfix() {} // clears all child floats2
Without clear
With clear
1@mixin scrollbar($scrollbar-height: 5px, $scrollbar-padding: 0px, $thumb-color: black, $track-color: gray) {} // styles overflow scrollbars2
1@mixin aspect-ratio($width: 1, $height: 1) {} // forces an aspect ratio for a div2 .aspect__content {} // Use this class to display content within a forced aspect div3
1@mixin body-font-size() {} // responsive body size with a single breakpoint2