|
7 | 7 | * |
8 | 8 | * @author Cédric Andrietti |
9 | 9 | * |
10 | | - * @param $min-size -> Minimal display size (mobile) |
11 | | - * @param $max-size -> Maximal display size (Desktop) |
12 | | - * @param $fluid-breakpoint-start -> Start fluid after this value |
13 | | - * @param $fluid-breakpoint-end -> End fluid after this value - To be defined with designer |
| 10 | + * @param $min -> Minimal display size (mobile) |
| 11 | + * @param $max -> Maximal display size (Desktop) |
| 12 | + * @param $start -> Start breakpoint |
| 13 | + * @param $end -> End breakpoint |
14 | 14 | * |
15 | 15 | * Examples : |
16 | 16 | * |
17 | 17 | * h1 { |
18 | | - * font-size: #{fluid-size(58px, 156px)}; |
| 18 | + * font-size: #{fluid-size(58px, 156px, sm, md)}; |
19 | 19 | * line-height: #{fluid-size(1.05, 1.2)}; |
20 | 20 | * } |
21 | 21 | * |
22 | 22 | */ |
23 | 23 |
|
| 24 | +@use "sass:map"; |
24 | 25 | @use "sass:math"; |
25 | 26 |
|
26 | | -@function fluid-size($min-size, $max-size, $fluid-breakpoint-start: 375, $fluid-breakpoint-end: 1440) { |
27 | | - $default_scale_factor : 1; |
28 | | - $view_port_width_offset : math.div($fluid-breakpoint-start, 100) * 1px; |
29 | | - $linear_factor : 100 * math.div(( $max-size - $min-size ), ( $fluid-breakpoint-end - $fluid-breakpoint-start )); |
30 | | - $linear_factor_scaled : strip-units($linear_factor * $default_scale_factor); |
31 | | - $fluid_target_font_size : #{$min-size}#{" + ((1vw - "}#{$view_port_width_offset}#{") * "}#{$linear_factor_scaled}#{")"}; |
| 27 | +@function fluid-size($min, $max, $start: xs, $end: sm) { |
| 28 | + $start: math.div(map.get($breakpoints, $start), 100); |
| 29 | + $end: math.div(map.get($breakpoints, $end), 100); |
32 | 30 |
|
33 | | - @return clamp( |
34 | | - #{$min-size}, |
35 | | - #{$fluid_target_font_size}, |
36 | | - #{$max-size} |
37 | | - ); |
| 31 | + @return clamp(#{$min}, #{$min} + (1vw - #{$start}px) / #{$end - $start} * #{strip-units($max - $min)}, #{$max}); |
38 | 32 | } |
0 commit comments