annotate default/assets/scss/vendors/bourbon/library/_modular-scale.scss @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 @charset "UTF-8";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 /// Increments up or down a defined scale and returns an adjusted value. This
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 /// helps establish consistent measurements and spacial relationships throughout
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 /// your project. We provide a list of commonly used scales as
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 /// [pre-defined variables][scales].
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 /// [scales]: https://github.com/thoughtbot/bourbon/blob/master/core/bourbon/settings/_scales.scss
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 /// @argument {number (unitless)} $increment
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 /// How many steps to increment up or down the scale.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 /// @argument {number (with unit) | list} $value [1em]
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 /// The base value the scale starts at.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 /// @argument {number (unitless)} $ratio [1.25]
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 /// The ratio the scale is built on.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 /// @return {number (with unit)}
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 /// @example scss
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 /// font-size: modular-scale(2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 /// // CSS Output
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 /// font-size: 1.5625em;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 /// @example scss
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 /// margin-right: modular-scale(3, 2em);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 /// // CSS Output
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 /// margin-right: 3.90625em;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 /// @example scss
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 /// font-size: modular-scale(3, 1em 1.6em, $major-seventh);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 /// // CSS Output
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 /// font-size: 3em;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 /// @example scss
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 /// // Globally change the base ratio
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 /// $bourbon: (
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 /// "modular-scale-ratio": 1.2,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 /// );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 /// font-size: modular-scale(3);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 /// // CSS Output
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 /// .element {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 /// font-size: 1.728em;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 /// }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 ///
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 /// @require {function} _retrieve-bourbon-setting
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 @function modular-scale(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 $increment,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 $value: _retrieve-bourbon-setting("modular-scale-base"),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 $ratio: _retrieve-bourbon-setting("modular-scale-ratio")
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 $v1: nth($value, 1);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 $v2: nth($value, length($value));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 $value: $v1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 // scale $v2 to just above $v1
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 @while $v2 > $v1 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 $v2: ($v2 / $ratio); // will be off-by-1
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 @while $v2 < $v1 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 $v2: ($v2 * $ratio); // will fix off-by-1
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 // check AFTER scaling $v2 to prevent double-counting corner-case
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 $double-stranded: $v2 > $v1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 @if $increment > 0 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 @for $i from 1 through $increment {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 @if $double-stranded and ($v1 * $ratio) > $v2 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 $value: $v2;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 $v2: ($v2 * $ratio);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 } @else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 $v1: ($v1 * $ratio);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 $value: $v1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 @if $increment < 0 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102 // adjust $v2 to just below $v1
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103 @if $double-stranded {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 $v2: ($v2 / $ratio);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 @for $i from $increment through -1 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 @if $double-stranded and ($v1 / $ratio) < $v2 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109 $value: $v2;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110 $v2: ($v2 / $ratio);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111 } @else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 $v1: ($v1 / $ratio);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 $value: $v1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
116 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
117
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
118 @return $value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
119 }