Until yesterday, I was exploring all around the internet, to find the best possible way for the theme concept in the web app. The theme concept allows an organizer to choose the theme for the web app from the set of provided themes.
After some time, I realised that this awesomeness to the web app can be added by using Syntactically Awesome Stylesheets.
How SASS supports the theme concept?
In the web app, a folder name _scss is added which has the directory structure as shown
There is a file _config.scss inside the _base folder that includes the SASS variables which are used in all the files after importing it.
Each of the SASS variables uses a flag !default at the end, which means it can be overwritten in any other file. This property of SASS leads to the theme concept.
//_.config.scss @charset "UTF-8"; // Colors $black: #000; $white: #fff; $red: #e2061c; $gray-light: #c9c8c8; $gray: #838282; $gray-dark: #333333; $blue: #253652; // Corp-Colors $corp-color: $white !default; $corp-color-dark: darken($corp-color, 15%) !default; $corp-color-second: $red !default; $corp-color-second-dark: darken($corp-color-second, 15%) !default; // Fontbasic $base-font-size: 1.8 !default; $base-font-family: Helvetica, Arial, Sans-Serif !default; $base-font-color: $gray-dark !default; // Border $base-border-radius: 2px !default; $rounded-border-radius: 50% !default; $base-border-color: $gray !default;
The main file that includes all the required style is the application.scss. Here, $corp-color takes default value from _config.scss. It can be overwritten by the themes.
//application.scss @charset 'UTF-8'; // 1.Base @import '_base/_config.scss'; /* Offsets for fixed navbar */ body { margin-top: 50px; background-color:$corp-color !important; }
Making a light theme
The light theme will overwrite the $corp-color value to $gray-light which is defined in _config.scss. This will change the background-color defined in application.scss to #c9c8c8. So, in this way a light theme is generated. The similar approach can be followed to generate the dark theme.
//_light.scss @charset 'UTF-8'; @import '../../_base/config'; // 1.Overwrite stuff $corp-color: $gray-light; @import '../../application';
Making a dark theme
//_dark.scss @charset 'UTF-8'; @import '../../_base/config'; // 1.Overwrite stuff $corp-color: $gray; @import '../../application';
How to compile the CSS from SASS files ?
- We can easily compile these SASS files by using command
sass /path/application.scss /path/schedule.css
For generating light theme and dark theme:
sass /path/_light.scss /path/schedule.css
sass /path/_dark.scss /path/schedule.css
Optimization of Code
SASS is very powerful for optimizing the code. It allows the concepts such as nesting, mixins which reduce the line of code. I have rewritten schedule.css into application.scss to make it more optimized.
/* Adjustments for smaller screens */ @media (min-width: 450px) { body { font-size: 14px } .session { &-list{ .label{ font-size: 90%; padding: .2em .6em .3em; } } &-title { float:left; width: 75%; } &-location { float: right; width: 25%; text-align: right; } } }
Further Exploration
This is one of the ways to deal with the SASS structure, but there are other resources that can be helpful in dealing with SASS projects.
Also, check out, Jeremy Hexon article here.
Reblogged this on GSOC 2016.