_responsive-logic.scss 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /**
  2. * Repsonsive Styles
  3. */
  4. /**
  5. * Required Variables
  6. */
  7. $flexwidth: 100%;
  8. $horizontal_space: var(--global--spacing-horizontal);
  9. $breakpoint_sm: 482px;
  10. $breakpoint_md: 592px;
  11. $breakpoint_lg: 652px;
  12. $breakpoint_xl: 822px;
  13. $breakpoint_xxl: 1024px;
  14. // Responsive breakpoints mixin
  15. @mixin media( $res ) {
  16. @if mobile-only == $res {
  17. @media only screen and (max-width: #{$breakpoint_sm - 1}) {
  18. @content;
  19. }
  20. }
  21. @if mobile == $res {
  22. @media only screen and (min-width: #{$breakpoint_sm}) {
  23. @content;
  24. }
  25. }
  26. @if tablet-only == $res {
  27. @media only screen and (max-width: #{$breakpoint_md - 1}) {
  28. @content;
  29. }
  30. }
  31. @if tablet == $res {
  32. @media only screen and (min-width: #{$breakpoint_md}) {
  33. @content;
  34. }
  35. }
  36. @if laptop-only == $res {
  37. @media only screen and (max-width: #{$breakpoint_lg - 1}) {
  38. @content;
  39. }
  40. }
  41. @if laptop == $res {
  42. @media only screen and (min-width: #{$breakpoint_lg}) {
  43. @content;
  44. }
  45. }
  46. @if desktop-only == $res {
  47. @media only screen and (max-width: #{$breakpoint_xl - 1}) {
  48. @content;
  49. }
  50. }
  51. @if desktop == $res {
  52. @media only screen and (min-width: #{$breakpoint_xl}) {
  53. @content;
  54. }
  55. }
  56. @if wide-only == $res {
  57. @media only screen and (max-width: #{$breakpoint_xxl - 1}) {
  58. @content;
  59. }
  60. }
  61. @if wide == $res {
  62. @media only screen and (min-width: #{$breakpoint_xxl}) {
  63. @content;
  64. }
  65. }
  66. }
  67. /**
  68. * Root Media Query Variables
  69. */
  70. :root {
  71. --responsive--spacing-horizontal: calc(2 * var(--global--spacing-horizontal));
  72. --responsive--aligndefault-width: 100%;
  73. --responsive--alignwide-width: 100%;
  74. --responsive--alignfull-width: 100%;
  75. --responsive--alignwide-width-multiplier: calc(16 * var(--global--spacing-horizontal));
  76. --responsive--alignright-margin: var(--global--spacing-horizontal);
  77. --responsive--alignleft-margin: var(--global--spacing-horizontal);
  78. }
  79. @include media(mobile) {
  80. :root {
  81. --responsive--aligndefault-width: calc(#{$breakpoint_sm} - var(--responsive--spacing-horizontal));
  82. --responsive--alignwide-width: calc(#{$breakpoint_sm} - var(--responsive--spacing-horizontal));
  83. --responsive--alignright-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  84. --responsive--alignleft-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  85. }
  86. }
  87. @include media(tablet) {
  88. :root {
  89. --responsive--aligndefault-width: calc(#{$breakpoint_sm} - var(--responsive--spacing-horizontal));
  90. --responsive--alignwide-width: calc(#{$breakpoint_md} - var(--responsive--spacing-horizontal));
  91. --responsive--alignright-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  92. --responsive--alignleft-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  93. }
  94. }
  95. @include media(laptop) {
  96. :root {
  97. --responsive--aligndefault-width: calc(#{$breakpoint_md} - var(--responsive--spacing-horizontal));
  98. --responsive--alignwide-width: calc(#{$breakpoint_lg} - var(--responsive--spacing-horizontal));
  99. --responsive--alignright-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  100. --responsive--alignleft-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  101. }
  102. }
  103. @include media(desktop) {
  104. :root {
  105. --responsive--aligndefault-width: calc(#{$breakpoint_lg} - var(--responsive--spacing-horizontal));
  106. --responsive--alignwide-width: calc(#{$breakpoint_xl} - var(--responsive--spacing-horizontal));
  107. --responsive--alignright-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  108. --responsive--alignleft-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  109. }
  110. }
  111. @include media(wide) {
  112. :root {
  113. --responsive--aligndefault-width: calc(#{$breakpoint_lg} - var(--responsive--spacing-horizontal));
  114. --responsive--alignwide-width: calc(#{$breakpoint_xl} - var(--responsive--spacing-horizontal));
  115. --responsive--alignright-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  116. --responsive--alignleft-margin: calc( 0.5 * (100vw - var(--responsive--aligndefault-width)));
  117. }
  118. }
  119. /**
  120. * Extends
  121. */
  122. %responsive-aligndefault-width {
  123. max-width: var(--responsive--aligndefault-width);
  124. margin-left: auto;
  125. margin-right: auto;
  126. }
  127. %responsive-alignwide-width {
  128. max-width: var(--responsive--alignwide-width);
  129. margin-left: auto;
  130. margin-right: auto;
  131. }
  132. %responsive-alignfull-width-mobile {
  133. max-width: calc(100% + (2 * var(--global--spacing-horizontal)));
  134. width: calc(100% + (2 * var(--global--spacing-horizontal)));
  135. margin-left: calc(-1 * var(--global--spacing-horizontal));
  136. margin-right: auto;
  137. }
  138. @include media(mobile) {
  139. %responsive-alignfull-width {
  140. max-width: var(--responsive--alignfull-width);
  141. width: auto;
  142. margin-left: auto;
  143. margin-right: auto;
  144. }
  145. }
  146. %responsive-alignwide-width-nested {
  147. margin-left: auto;
  148. margin-right: auto;
  149. width: var(--responsive--alignwide-width);
  150. max-width: var(--responsive--alignfull-width);
  151. }
  152. %responsive-alignfull-width-nested {
  153. margin-left: auto;
  154. margin-right: auto;
  155. width: calc(var(--responsive--alignfull-width) - calc(2 * var(--responsive--spacing-horizontal)));
  156. max-width: var(--responsive--alignfull-width);
  157. }
  158. %responsive-alignleft-mobile {
  159. /*rtl:ignore*/
  160. margin-left: 0;
  161. /*rtl:ignore*/
  162. margin-right: var(--responsive--spacing-horizontal);
  163. }
  164. @include media(mobile) {
  165. %responsive-alignleft {
  166. /*rtl:ignore*/
  167. margin-left: var(--responsive--alignleft-margin);
  168. /*rtl:ignore*/
  169. margin-right: var(--global--spacing-horizontal);
  170. }
  171. }
  172. %responsive-alignright-mobile {
  173. /*rtl:ignore*/
  174. margin-left: var(--responsive--spacing-horizontal);
  175. /*rtl:ignore*/
  176. margin-right: 0;
  177. }
  178. @include media(mobile) {
  179. %responsive-alignright {
  180. /*rtl:ignore*/
  181. margin-left: var(--global--spacing-horizontal);
  182. /*rtl:ignore*/
  183. margin-right: var(--responsive--alignright-margin);
  184. }
  185. }
  186. /**
  187. * Output
  188. */
  189. .default-max-width {
  190. @extend %responsive-aligndefault-width;
  191. }
  192. .wide-max-width {
  193. @extend %responsive-alignwide-width;
  194. }
  195. .full-max-width {
  196. @extend %responsive-alignfull-width;
  197. }