Miksery do rozmiaru czcionki Rem - CSS-Tricks

Anonim

Jednostka remrozmiaru czcionki jest podobna do tej em, ale zamiast kaskadowania jest zawsze względna względem elementu głównego (html) (więcej informacji). Ma całkiem dobrą obsługę nowoczesnych przeglądarek, to tylko IE 8 i musimy zapewnić rozwiązania pxawaryjne.

Zamiast powtarzać się wszędzie, możemy użyć mieszanek LESS lub SASS, aby utrzymać go w czystości. Te mieszanki zakładają:

html ( font-size: 62.5%; /* Sets up the Base 10 stuff */ )
.font-size(@sizeValue) ( @remValue: @sizeValue; @pxValue: (@sizeValue * 10); font-size: ~"@(pxValue)px"; font-size: ~"@(remValue)rem"; )
@mixin font-size($sizeValue: 1.6) ( font-size: ($sizeValue * 10) + px; font-size: $sizeValue + rem; )

Stosowanie

p ( .font-size(13); )
p ( @include font-size(13); )

(Dzięki Gabe Luethje)

Kolejny SCSS z innym podejściem autorstwa Karla Merkli:

@function strip-unit($num) ( @return $num / ($num * 0 + 1); ) @mixin rem-fallback($property, $values… ) ( $max: length($values); $pxValues: ''; $remValues: ''; @for $i from 1 through $max ( $value: strip-unit(nth($values, $i)); $pxValues: #($pxValues + $value*16)px; @if $i < $max ( $pxValues: #($pxValues + " "); ) ) @for $i from 1 through $max ( $value: strip-unit(nth($values, $i)); $remValues: #($remValues + $value)rem; @if $i < $max ( $remValues: #($remValues + " "); ) ) #($property): $pxValues; #($property): $remValues; )

Możesz więc:

@include rem-fallback(margin, 10, 20, 30, 40);

i dostać:

body ( margin: 160px 320px 480px 640px; margin: 10rem 20rem 30rem 40rem; )