sogo/UI/WebServerResources/scss/core/_functions.scss

44 lines
1.5 KiB
SCSS

// SOGo by Inverse
// sogo.nu
// version 3.alpha
//
//
// UTILITIES FUNCTIONS
//
// Strip Unit - From Foundation
// Removes the unit (e.g. px, em, rem) from a value, returning the number only.
//
// @param {number} $num - Number to strip unit from.
// @return The same number, sans unit.
@function strip-unit($num) {
@return $num / ($num * 0 + 1);
}
/// sp|dp to px
// Google's Material design specs are in 'sp' or 'dp' which are not css units
// 'dp' is 'density independant pexels' and 'sp' is 'scale-independent pixels' (same as dp, but will be scaled by the user's font size preference)
// Android gives a 160dpi base value to 'sp' and 'dp', but Google's examples seems to use 'sp' as 'px'
// We define a scaling factor in case we need to adjust
// 'sp' is scale to 1 css-px for a rem-base-value of 16px (default)
// 'dp' is scale to 1 css-px according to scaling factor
//
// sp-to-px converts a 'sp' value to css-pixel value. Units, if specified will be stripped
// dp-to-px converts a 'dp' value to css-pixel value. Units, if specified will be stripped
//
// @param {number} $value - sp or dp value to convert.
//
// @return {number} in px.
//
@function dp-to-px($value) {
$value: strip-unit($value) * strip-unit($sg-dp-scale-factor) * 1px;
@if ($value == 0sp) { $value: 0; } // Turn 0rem into 0
@return $value;
}
@function sp-to-px($value) {
$value: strip-unit($value) * $sg-sp-value * 16px;
@if ($value == 0sp) { $value: 0; } // Turn 0sp into 0
@return $value;
}